From aad44cc3dbc148f028b365f9967b52852723df5d Mon Sep 17 00:00:00 2001
From: Pooja Babu
Date: Mon, 26 Feb 2024 12:07:41 +0100
Subject: [PATCH] Update GL model notebook
---
.../gl_model/gl_model_tutorial.ipynb | 2983 ++++++++++++++++-
1 file changed, 2901 insertions(+), 82 deletions(-)
diff --git a/doc/tutorials/gl_model/gl_model_tutorial.ipynb b/doc/tutorials/gl_model/gl_model_tutorial.ipynb
index fb6683afb..89c9bd591 100644
--- a/doc/tutorials/gl_model/gl_model_tutorial.ipynb
+++ b/doc/tutorials/gl_model/gl_model_tutorial.ipynb
@@ -27,9 +27,31 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " -- N E S T --\n",
+ " Copyright (C) 2004 The NEST Initiative\n",
+ "\n",
+ " Version: 3.6.0\n",
+ " Built: Feb 22 2024 10:55:27\n",
+ "\n",
+ " This program is provided AS IS and comes with\n",
+ " NO WARRANTY. See the file LICENSE for details.\n",
+ "\n",
+ " Problems or suggestions?\n",
+ " Visit https://www.nest-simulator.org\n",
+ "\n",
+ " Type 'nest.help()' to find out more about NEST.\n",
+ "\n"
+ ]
+ }
+ ],
"source": [
"%matplotlib inline\n",
"from typing import Dict, Optional\n",
@@ -64,7 +86,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -83,7 +105,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -125,7 +147,7 @@
" spike\n",
"\n",
" function phi(V_m mV) real:\n",
- " return ((1/b) * exp((V_m - V_b)/mV/a))\n",
+ " return ((1/b) * exp((V_m - V_b)/a))\n",
"\n",
" update:\n",
" if refr_tick == 0: # neuron not refractory\n",
@@ -144,9 +166,6 @@
" if with_refr_input:\n",
" refr_spikes_buffer += spikes * exp(-refr_tick * h / tau_m) * mV * s\n",
" refr_tick -= 1\n",
- "\n",
- " tmp real = phi(V_m)\n",
- " println(\"{V_m} ---> {tmp}\")\n",
" \n",
" if random_uniform(0, 1) <= 1E-3 * resolution() * phi(V_m):\n",
" refr_tick = RefractoryCounts\n",
@@ -158,9 +177,246 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 16,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1,GLOBAL, INFO]: List of files that will be processed:\n",
+ "[2,GLOBAL, INFO]: /Users/pooja/nestml/master/doc/tutorials/gl_model/gl_expe8800e269e8c4716bc83b2ace5aa5263.nestml\n",
+ "[3,GLOBAL, INFO]: Target platform code will be generated in directory: '/Users/pooja/nestml/master/doc/tutorials/gl_model/target'\n",
+ "[4,GLOBAL, INFO]: Target platform code will be installed in directory: '/var/folders/2j/fb047q1177v9f56f_jktrb4c0000gn/T/nestml_target_0vgm91p_'\n",
+ "\n",
+ " -- N E S T --\n",
+ " Copyright (C) 2004 The NEST Initiative\n",
+ "\n",
+ " Version: 3.6.0\n",
+ " Built: Feb 22 2024 10:55:27\n",
+ "\n",
+ " This program is provided AS IS and comes with\n",
+ " NO WARRANTY. See the file LICENSE for details.\n",
+ "\n",
+ " Problems or suggestions?\n",
+ " Visit https://www.nest-simulator.org\n",
+ "\n",
+ " Type 'nest.help()' to find out more about NEST.\n",
+ "\n",
+ "[5,GLOBAL, INFO]: The NEST Simulator version was automatically detected as: v3.6.0\n",
+ "[6,GLOBAL, INFO]: Given template root path is not an absolute path. Creating the absolute path with default templates directory '/Users/pooja/.local/lib/python3.11/site-packages/NESTML-7.0.0.post0.dev0-py3.11.egg/pynestml/codegeneration/resources_nest/point_neuron'\n",
+ "[7,GLOBAL, INFO]: Given template root path is not an absolute path. Creating the absolute path with default templates directory '/Users/pooja/.local/lib/python3.11/site-packages/NESTML-7.0.0.post0.dev0-py3.11.egg/pynestml/codegeneration/resources_nest/point_neuron'\n",
+ "[8,GLOBAL, INFO]: Given template root path is not an absolute path. Creating the absolute path with default templates directory '/Users/pooja/.local/lib/python3.11/site-packages/NESTML-7.0.0.post0.dev0-py3.11.egg/pynestml/codegeneration/resources_nest/point_neuron'\n",
+ "[9,GLOBAL, INFO]: The NEST Simulator installation path was automatically detected as: /Users/pooja/conda/nestml_dev\n",
+ "[10,GLOBAL, INFO]: Start processing '/Users/pooja/nestml/master/doc/tutorials/gl_model/gl_expe8800e269e8c4716bc83b2ace5aa5263.nestml'!\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "[12,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [56:51;56:68]]: Implicit casting from (compatible) type 'h / ms' to 'real'.\n",
+ "[13,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, WARNING, [9:8;10:8]]: Variable 'G' has the same name as a physical unit!\n",
+ "[14,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, WARNING, [20:8;20:25]]: Variable 'a' has the same name as a physical unit!\n",
+ "[15,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [10:73;10:73]]: Implicit magnitude conversion from pA to pA buffer with factor 1.0 \n",
+ "[16,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [10:15;10:68]]: Implicit magnitude conversion from mV / ms to pA / pF with factor 1.0 \n",
+ "[17,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [19:23;19:23]]: Implicit casting from (compatible) type 'integer' to 'real'.\n",
+ "[18,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, WARNING, [59:11;59:64]]: SPL_COMPARISON_OPERATOR_VISITOR : Operands of a logical rhs not compatible.([59:11;59:64])\n",
+ "[20,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [56:51;56:68]]: Implicit casting from (compatible) type 'h / ms' to 'real'.\n",
+ "[21,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, WARNING, [9:8;10:8]]: Variable 'G' has the same name as a physical unit!\n",
+ "[22,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, WARNING, [20:8;20:25]]: Variable 'a' has the same name as a physical unit!\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "INFO:root:Analysing input:\n",
+ "INFO:root:{\n",
+ " \"dynamics\": [\n",
+ " {\n",
+ " \"expression\": \"V_m' = (-(V_m - V_r)) / tau_m + (1.0 / 1.0) * 0 + (I_e + I_stim) / C_m\",\n",
+ " \"initial_values\": {\n",
+ " \"V_m\": \"V_r\"\n",
+ " }\n",
+ " }\n",
+ " ],\n",
+ " \"options\": {\n",
+ " \"output_timestep_symbol\": \"__h\"\n",
+ " },\n",
+ " \"parameters\": {\n",
+ " \"C_m\": \"250\",\n",
+ " \"I_e\": \"0\",\n",
+ " \"V_b\": \"(-51.3)\",\n",
+ " \"V_r\": \"(-65)\",\n",
+ " \"V_reset\": \"(-65)\",\n",
+ " \"a\": \"5\",\n",
+ " \"b\": \"27\",\n",
+ " \"reset_after_spike\": \"true\",\n",
+ " \"t_ref\": \"2\",\n",
+ " \"tau_m\": \"10\",\n",
+ " \"tau_syn\": \"0.5\",\n",
+ " \"with_refr_input\": \"false\"\n",
+ " }\n",
+ "}\n",
+ "INFO:root:Processing global options...\n",
+ "INFO:root:Processing input shapes...\n",
+ "INFO:root:\n",
+ "Processing differential-equation form shape V_m with defining expression = \"(-(V_m - V_r)) / tau_m + (1.0 / 1.0) * 0 + (I_e + I_stim) / C_m\"\n",
+ "INFO:root:\tReturning shape: Shape \"V_m\" of order 1\n",
+ "INFO:root:Shape V_m: reconstituting expression -V_m/tau_m + V_r/tau_m + I_e/C_m + I_stim/C_m\n",
+ "INFO:root:All known variables: [V_m], all parameters used in ODEs: {I_e, tau_m, V_r, I_stim, C_m}\n",
+ "INFO:root:No numerical value specified for parameter \"I_stim\"\n",
+ "INFO:root:\n",
+ "Processing differential-equation form shape V_m with defining expression = \"(-(V_m - V_r)) / tau_m + (1.0 / 1.0) * 0 + (I_e + I_stim) / C_m\"\n",
+ "INFO:root:\tReturning shape: Shape \"V_m\" of order 1\n",
+ "INFO:root:Shape V_m: reconstituting expression -V_m/tau_m + V_r/tau_m + I_e/C_m + I_stim/C_m\n",
+ "INFO:root:Finding analytically solvable equations...\n",
+ "INFO:root:Shape V_m: reconstituting expression -V_m/tau_m + V_r/tau_m + I_e/C_m + I_stim/C_m\n",
+ "INFO:root:Generating propagators for the following symbols: V_m\n",
+ "INFO:root:update_expr[V_m] = V_m*__P__V_m__V_m - V_r*__P__V_m__V_m + V_r - I_e*__P__V_m__V_m*tau_m/C_m + I_e*tau_m/C_m - I_stim*__P__V_m__V_m*tau_m/C_m + I_stim*tau_m/C_m\n",
+ "INFO:root:In ode-toolbox: returning outdict = \n",
+ "INFO:root:[\n",
+ " {\n",
+ " \"initial_values\": {\n",
+ " \"V_m\": \"V_r\"\n",
+ " },\n",
+ " \"parameters\": {\n",
+ " \"C_m\": \"250.000000000000\",\n",
+ " \"I_e\": \"0\",\n",
+ " \"V_r\": \"-65.0000000000000\",\n",
+ " \"tau_m\": \"10.0000000000000\"\n",
+ " },\n",
+ " \"propagators\": {\n",
+ " \"__P__V_m__V_m\": \"exp(-__h/tau_m)\"\n",
+ " },\n",
+ " \"solver\": \"analytical\",\n",
+ " \"state_variables\": [\n",
+ " \"V_m\"\n",
+ " ],\n",
+ " \"update_expressions\": {\n",
+ " \"V_m\": \"V_m*__P__V_m__V_m - V_r*__P__V_m__V_m + V_r - I_e*__P__V_m__V_m*tau_m/C_m + I_e*tau_m/C_m - I_stim*__P__V_m__V_m*tau_m/C_m + I_stim*tau_m/C_m\"\n",
+ " }\n",
+ " }\n",
+ "]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[23,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [19:23;19:23]]: Implicit casting from (compatible) type 'integer' to 'real'.\n",
+ "[24,GLOBAL, INFO]: Analysing/transforming neuron 'gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml'\n",
+ "[25,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [2:0;63:0]]: Starts processing of the model 'gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml'\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "[27,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [56:51;56:68]]: Implicit casting from (compatible) type 'h / ms' to 'real'.\n",
+ "[28,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, WARNING, [20:8;20:25]]: Variable 'a' has the same name as a physical unit!\n",
+ "[29,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [19:23;19:23]]: Implicit casting from (compatible) type 'integer' to 'real'.\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "ANTLR runtime and generated code versions disagree: 4.13.0!=4.10.1\n",
+ "[30,GLOBAL, INFO]: Rendering template /Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.cpp\n",
+ "[31,GLOBAL, INFO]: Rendering template /Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.h\n",
+ "[32,gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml, INFO, [2:0;63:0]]: Successfully generated code for the model: 'gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml' in: '/Users/pooja/nestml/master/doc/tutorials/gl_model/target' !\n",
+ "[33,GLOBAL, INFO]: Rendering template /Users/pooja/nestml/master/doc/tutorials/gl_model/target/CMakeLists.txt\n",
+ "[34,GLOBAL, INFO]: Rendering template /Users/pooja/nestml/master/doc/tutorials/gl_model/target/nestml_e8800e269e8c4716bc83b2ace5aa5263_module.h\n",
+ "[35,GLOBAL, INFO]: Rendering template /Users/pooja/nestml/master/doc/tutorials/gl_model/target/nestml_e8800e269e8c4716bc83b2ace5aa5263_module.cpp\n",
+ "[36,GLOBAL, INFO]: Successfully generated NEST module code in '/Users/pooja/nestml/master/doc/tutorials/gl_model/target' !\n",
+ "\u001b[33mCMake Warning (dev) at CMakeLists.txt:93 (project):\n",
+ " cmake_minimum_required() should be called prior to this top-level project()\n",
+ " call. Please see the cmake-commands(7) manual for usage documentation of\n",
+ " both commands.\n",
+ "This warning is for project developers. Use -Wno-dev to suppress it.\n",
+ "\u001b[0m\n",
+ "-- The CXX compiler identification is AppleClang 15.0.0.15000100\n",
+ "-- Detecting CXX compiler ABI info\n",
+ "-- Detecting CXX compiler ABI info - done\n",
+ "-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped\n",
+ "-- Detecting CXX compile features\n",
+ "-- Detecting CXX compile features - done\n",
+ "\u001b[0m\u001b[0m\n",
+ "\u001b[0m-------------------------------------------------------\u001b[0m\n",
+ "\u001b[0mnestml_e8800e269e8c4716bc83b2ace5aa5263_module Configuration Summary\u001b[0m\n",
+ "\u001b[0m-------------------------------------------------------\u001b[0m\n",
+ "\u001b[0m\u001b[0m\n",
+ "\u001b[0mC++ compiler : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++\u001b[0m\n",
+ "\u001b[0mBuild static libs : OFF\u001b[0m\n",
+ "\u001b[0mC++ compiler flags : \u001b[0m\n",
+ "\u001b[0mNEST compiler flags : -std=c++11 -Wall -Xclang -fopenmp -O2\u001b[0m\n",
+ "\u001b[0mNEST include dirs : -I/Users/pooja/conda/nestml_dev/include/nest -I/usr/local/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include -I/usr/local/Cellar/gsl/2.7/include -I/Users/pooja/miniconda3/envs/nest_3.6/include\u001b[0m\n",
+ "\u001b[0mNEST libraries flags : -L/Users/pooja/conda/nestml_dev/lib/nest -lnest -lsli -Xclang -fopenmp /usr/local/lib/libltdl.dylib /Users/pooja/miniconda3/envs/nest_3.6/lib/libreadline.dylib /Users/pooja/miniconda3/envs/nest_3.6/lib/libncurses.dylib /usr/local/Cellar/gsl/2.7/lib/libgsl.dylib /usr/local/Cellar/gsl/2.7/lib/libgslcblas.dylib\u001b[0m\n",
+ "\u001b[0m\u001b[0m\n",
+ "\u001b[0m-------------------------------------------------------\u001b[0m\n",
+ "\u001b[0m\u001b[0m\n",
+ "\u001b[0mYou can now build and install 'nestml_e8800e269e8c4716bc83b2ace5aa5263_module' using\u001b[0m\n",
+ "\u001b[0m make\u001b[0m\n",
+ "\u001b[0m make install\u001b[0m\n",
+ "\u001b[0m\u001b[0m\n",
+ "\u001b[0mThe library file libnestml_e8800e269e8c4716bc83b2ace5aa5263_module.so will be installed to\u001b[0m\n",
+ "\u001b[0m /var/folders/2j/fb047q1177v9f56f_jktrb4c0000gn/T/nestml_target_0vgm91p_\u001b[0m\n",
+ "\u001b[0mThe module can be loaded into NEST using\u001b[0m\n",
+ "\u001b[0m (nestml_e8800e269e8c4716bc83b2ace5aa5263_module) Install (in SLI)\u001b[0m\n",
+ "\u001b[0m nest.Install(nestml_e8800e269e8c4716bc83b2ace5aa5263_module) (in PyNEST)\u001b[0m\n",
+ "\u001b[0m\u001b[0m\n",
+ "\u001b[33mCMake Warning (dev) in CMakeLists.txt:\n",
+ " No cmake_minimum_required command is present. A line of code such as\n",
+ "\n",
+ " cmake_minimum_required(VERSION 3.28)\n",
+ "\n",
+ " should be added at the top of the file. The version specified may be lower\n",
+ " if you wish to support older CMake versions for this project. For more\n",
+ " information run \"cmake --help-policy CMP0000\".\n",
+ "This warning is for project developers. Use -Wno-dev to suppress it.\n",
+ "\u001b[0m\n",
+ "-- Configuring done (1.1s)\n",
+ "-- Generating done (0.0s)\n",
+ "-- Build files have been written to: /Users/pooja/nestml/master/doc/tutorials/gl_model/target\n",
+ "[ 33%] \u001b[32mBuilding CXX object CMakeFiles/nestml_e8800e269e8c4716bc83b2ace5aa5263_module_module.dir/nestml_e8800e269e8c4716bc83b2ace5aa5263_module.o\u001b[0m\n",
+ "[ 66%] \u001b[32mBuilding CXX object CMakeFiles/nestml_e8800e269e8c4716bc83b2ace5aa5263_module_module.dir/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.o\u001b[0m\n",
+ "In file included from /Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.cpp:43:\n",
+ "/Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.h:216:17: warning: 'gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml::get_C_m' hides overloaded virtual function [-Woverloaded-virtual]\n",
+ " inline double get_C_m() const\n",
+ " ^\n",
+ "/Users/pooja/conda/nestml_dev/include/nest/node.h:747:18: note: hidden overloaded virtual function 'nest::Node::get_C_m' declared here: different number of parameters (1 vs 0)\n",
+ " virtual double get_C_m( int comp );\n",
+ " ^\n",
+ "In file included from /Users/pooja/nestml/master/doc/tutorials/gl_model/target/nestml_e8800e269e8c4716bc83b2ace5aa5263_module.cpp:47:\n",
+ "/Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.h:216:17: warning: 'gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml::get_C_m' hides overloaded virtual function [-Woverloaded-virtual]\n",
+ " inline double get_C_m() const\n",
+ " ^\n",
+ "/Users/pooja/conda/nestml_dev/include/nest/node.h:747:18: note: hidden overloaded virtual function 'nest::Node::get_C_m' declared here: different number of parameters (1 vs 0)\n",
+ " virtual double get_C_m( int comp );\n",
+ " ^\n",
+ "/Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.cpp:166:16: warning: unused variable '__resolution' [-Wunused-variable]\n",
+ " const double __resolution = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the resolution() function\n",
+ " ^\n",
+ "/Users/pooja/nestml/master/doc/tutorials/gl_model/target/gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml.cpp:294:10: warning: unused variable 'get_t' [-Wunused-variable]\n",
+ " auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };\n",
+ " ^\n",
+ "1 warning generated.\n",
+ "3 warnings generated.\n",
+ "[100%] \u001b[32m\u001b[1mLinking CXX shared module nestml_e8800e269e8c4716bc83b2ace5aa5263_module.so\u001b[0m\n",
+ "[100%] Built target nestml_e8800e269e8c4716bc83b2ace5aa5263_module_module\n",
+ "[100%] Built target nestml_e8800e269e8c4716bc83b2ace5aa5263_module_module\n",
+ "\u001b[36mInstall the project...\u001b[0m\n",
+ "-- Install configuration: \"\"\n",
+ "-- Installing: /var/folders/2j/fb047q1177v9f56f_jktrb4c0000gn/T/nestml_target_0vgm91p_/nestml_e8800e269e8c4716bc83b2ace5aa5263_module.so\n",
+ "\n",
+ "Feb 26 11:15:24 Install [Info]: \n",
+ " loaded module nestml_e8800e269e8c4716bc83b2ace5aa5263_module\n"
+ ]
+ }
+ ],
"source": [
"module_name, neuron_model_name = NESTCodeGeneratorUtils.generate_code_for(\n",
" nestml_neuron_model=nestml_gl_exp_model,\n",
@@ -172,14 +428,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
+ "execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
@@ -214,9 +463,188 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 18,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Feb 26 11:15:24 correlation_detector [Info]: \n",
+ " Default for delta_tau changed from 0.5 to 5 ms\n",
+ "\n",
+ "Feb 26 11:15:24 correlomatrix_detector [Info]: \n",
+ " Default for delta_tau changed from 0.5 to 5 ms\n",
+ "\n",
+ "Feb 26 11:15:24 correlospinmatrix_detector [Info]: \n",
+ " Default for delta_tau changed from 0.1 to 1 ms\n",
+ "\n",
+ "Feb 26 11:15:24 gl_exp5da07fc067fa4f639f92889196944663_nestml [Warning]: \n",
+ " Simulation resolution has changed. Internal state and parameters of the \n",
+ " model have been reset!\n",
+ "\n",
+ "Feb 26 11:15:24 gl_ca5bc3b424b39f483c8fc6aa7320ab1d07_nestml [Warning]: \n",
+ " Simulation resolution has changed. Internal state and parameters of the \n",
+ " model have been reset!\n",
+ "\n",
+ "Feb 26 11:15:24 gl_ca5bc3b424b39f483c8fc6aa7320ab1d07_nestml__with_syn_gl_ca5bc3b424b39f483c8fc6aa7320ab1d07_nestml [Warning]: \n",
+ " Simulation resolution has changed. Internal state and parameters of the \n",
+ " model have been reset!\n",
+ "\n",
+ "Feb 26 11:15:24 gl_expe8800e269e8c4716bc83b2ace5aa5263_nestml [Warning]: \n",
+ " Simulation resolution has changed. Internal state and parameters of the \n",
+ " model have been reset!\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::set_status [Info]: \n",
+ " Temporal resolution changed from 0.1 to 1 ms.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 2 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 2\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 4 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 4\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 6 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 6\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 8 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 8\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 10 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 10\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 12 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 12\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 14 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 14\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 16 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 16\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 18 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 18\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 20 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 20\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 22 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 22\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n",
+ "\n",
+ "Feb 26 11:15:24 NodeManager::prepare_nodes [Info]: \n",
+ " Preparing 24 nodes for simulation.\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::start_updating_ [Info]: \n",
+ " Number of local nodes: 24\n",
+ " Simulation time (ms): 25000\n",
+ " Number of OpenMP threads: 1\n",
+ " Not using MPI\n",
+ "\n",
+ "Feb 26 11:15:24 SimulationManager::run [Info]: \n",
+ " Simulation finished.\n"
+ ]
+ }
+ ],
"source": [
"\n",
"# theoretical Phi vs U\n",
@@ -237,9 +665,32 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 19,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0, 0.5, 'Firing rate [Hz]')"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "