diff --git a/doc/tutorials/cart_pole_reinforcement_learning/polebalancing.ipynb b/doc/tutorials/cart_pole_reinforcement_learning/polebalancing.ipynb index decf08b59..330653f73 100644 --- a/doc/tutorials/cart_pole_reinforcement_learning/polebalancing.ipynb +++ b/doc/tutorials/cart_pole_reinforcement_learning/polebalancing.ipynb @@ -515,26 +515,1149 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "8e16ea83", "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.8.0-post0.dev0\n", + " Built: Dec 10 2024 12:04:47\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", + "\n", + " -- N E S T --\n", + " Copyright (C) 2004 The NEST Initiative\n", + "\n", + " Version: 3.8.0-post0.dev0\n", + " Built: Dec 10 2024 12:04:47\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", + "[15,ignore_and_fire_neuron_nestml, WARNING, [35:34;35:58]]: Model contains a call to fixed-timestep functions (``resolution()`` and/or ``steps()``). This restricts the model to being compatible only with fixed-timestep simulators. Consider eliminating ``resolution()`` and ``steps()`` from the model, and using ``timestep()`` instead.\n", + "CMake 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", + "\n", + "-- The CXX compiler identification is GNU 12.3.0\n", + "-- Detecting CXX compiler ABI info\n", + "-- Detecting CXX compiler ABI info - done\n", + "-- Check for working CXX compiler: /usr/bin/c++ - skipped\n", + "-- Detecting CXX compile features\n", + "-- Detecting CXX compile features - done\n", + "\n", + "-------------------------------------------------------\n", + "nestml_215ac5b257a3452e8dd58c88b2082847_module Configuration Summary\n", + "-------------------------------------------------------\n", + "\n", + "C++ compiler : /usr/bin/c++\n", + "Build static libs : OFF\n", + "C++ compiler flags : \n", + "NEST compiler flags : -std=c++17 -Wall -fopenmp -O2 -fdiagnostics-color=auto\n", + "NEST include dirs : -I/home/charl/julich/nest-simulator-install/include/nest -I/usr/include -I/usr/include -I/usr/include\n", + "NEST libraries flags : -L/home/charl/julich/nest-simulator-install/lib/nest -lnest -lsli /usr/lib/x86_64-linux-gnu/libltdl.so /usr/lib/x86_64-linux-gnu/libgsl.so /usr/lib/x86_64-linux-gnu/libgslcblas.so /usr/lib/gcc/x86_64-linux-gnu/12/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.a\n", + "\n", + "-------------------------------------------------------\n", + "\n", + "You can now build and install 'nestml_215ac5b257a3452e8dd58c88b2082847_module' using\n", + " make\n", + " make install\n", + "\n", + "The library file libnestml_215ac5b257a3452e8dd58c88b2082847_module.so will be installed to\n", + " /tmp/nestml_target_1ldbyxm6\n", + "The module can be loaded into NEST using\n", + " (nestml_215ac5b257a3452e8dd58c88b2082847_module) Install (in SLI)\n", + " nest.Install(nestml_215ac5b257a3452e8dd58c88b2082847_module) (in PyNEST)\n", + "\n", + "CMake 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.26)\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", + "\n", + "-- Configuring done (0.7s)\n", + "-- Generating done (0.0s)\n", + "-- Build files have been written to: /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target\n", + "[ 66%] Building CXX object CMakeFiles/nestml_215ac5b257a3452e8dd58c88b2082847_module_module.dir/ignore_and_fire_neuron_nestml.o\n", + "[ 66%] Building CXX object CMakeFiles/nestml_215ac5b257a3452e8dd58c88b2082847_module_module.dir/nestml_215ac5b257a3452e8dd58c88b2082847_module.o\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp: In member function ‘void ignore_and_fire_neuron_nestml::init_state_internal_()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp:165:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 165 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp: In member function ‘void ignore_and_fire_neuron_nestml::recompute_internal_variables(bool)’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp:195:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 195 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp: In member function ‘virtual void ignore_and_fire_neuron_nestml::update(const nest::Time&, long int, long int)’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp:247:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]\n", + " 247 | for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)\n", + " | ~~^~~~~~~~~~~~~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp:238:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 238 | auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/ignore_and_fire_neuron_nestml.cpp:232:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 232 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "[100%] Linking CXX shared module nestml_215ac5b257a3452e8dd58c88b2082847_module.so\n", + "[100%] Built target nestml_215ac5b257a3452e8dd58c88b2082847_module_module\n", + "[100%] Built target nestml_215ac5b257a3452e8dd58c88b2082847_module_module\n", + "Install the project...\n", + "-- Install configuration: \"\"\n", + "-- Installing: /tmp/nestml_target_1ldbyxm6/nestml_215ac5b257a3452e8dd58c88b2082847_module.so\n", + "[1,GLOBAL, INFO]: List of files that will be processed:\n", + "[2,GLOBAL, INFO]: /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/../../../models/neurons/iaf_psc_exp_neuron.nestml\n", + "[3,GLOBAL, INFO]: /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/../../../models/synapses/neuromodulated_stdp_synapse.nestml\n", + "[4,GLOBAL, INFO]: Target platform code will be generated in directory: '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target'\n", + "[5,GLOBAL, INFO]: Target platform code will be installed in directory: '/tmp/nestml_target_lrqc1inz'\n", + "\n", + " -- N E S T --\n", + " Copyright (C) 2004 The NEST Initiative\n", + "\n", + " Version: 3.8.0-post0.dev0\n", + " Built: Dec 10 2024 12:04:47\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", + "[6,GLOBAL, INFO]: The NEST Simulator version was automatically detected as: master\n", + "[7,GLOBAL, INFO]: Given template root path is not an absolute path. Creating the absolute path with default templates directory '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/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 '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/pynestml/codegeneration/resources_nest/point_neuron'\n", + "[9,GLOBAL, INFO]: Given template root path is not an absolute path. Creating the absolute path with default templates directory '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/pynestml/codegeneration/resources_nest/point_neuron'\n", + "[10,GLOBAL, INFO]: The NEST Simulator installation path was automatically detected as: /home/charl/julich/nest-simulator-install\n", + "[11,GLOBAL, INFO]: Start processing '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/../../../models/neurons/iaf_psc_exp_neuron.nestml'!\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[12,GLOBAL, INFO]: Start processing '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/../../../models/synapses/neuromodulated_stdp_synapse.nestml'!\n", + "[13,neuromodulated_stdp_synapse_nestml, INFO, [62:13;62:18]]: Implicit casting from (compatible) type '1 / ms' to 'real'.\n", + "[14,neuromodulated_stdp_synapse_nestml, INFO, [83:13;84:59]]: Implicit casting from (compatible) type 'ms' to 'real'.\n", + "[15,iaf_psc_exp_neuron_nestml, INFO, [66:39;66:63]]: Implicit magnitude conversion from pA to pA buffer with factor 1.0 \n", + "[16,iaf_psc_exp_neuron_nestml, INFO, [66:15;66:30]]: Implicit magnitude conversion from mV / ms to pA / pF with factor 1.0 \n", + "[17,neuromodulated_stdp_synapse_nestml, WARNING, [35:8;35:17]]: Variable 'd' has the same name as a physical unit!\n", + "[18,neuromodulated_stdp_synapse_nestml, INFO, [62:13;62:18]]: Implicit casting from (compatible) type '1 / ms' to 'real'.\n", + "[19,neuromodulated_stdp_synapse_nestml, INFO, [83:13;84:59]]: Implicit casting from (compatible) type 'ms' to 'real'.\n", + "[20,GLOBAL, INFO]: State variables that will be moved from synapse to neuron: ['post_tr']\n", + "[21,GLOBAL, INFO]: Parameters that will be copied from synapse to neuron: ['tau_tr_post']\n", + "[22,GLOBAL, INFO]: Synaptic state variables moved to neuron that will need buffering: []\n", + "[23,GLOBAL, INFO]: Moving state var defining equation(s) post_tr\n", + "[24,GLOBAL, INFO]: Moving state variables for equation(s) post_tr\n", + "[25,GLOBAL, INFO]: Moving definition of post_tr from synapse to neuron\n", + "[26,GLOBAL, INFO]: \tMoving statement post_tr += 1.0\n", + "[27,GLOBAL, INFO]: In synapse: replacing ``continuous`` type input ports that are connected to postsynaptic neuron with external variable references\n", + "[28,GLOBAL, INFO]: Copying parameters from synapse to neuron...\n", + "[29,GLOBAL, INFO]: Copying definition of tau_tr_post from synapse to neuron\n", + "[30,GLOBAL, INFO]: Adding suffix to variables in spike updates\n", + "[31,GLOBAL, INFO]: In synapse: replacing variables with suffixed external variable references\n", + "[32,GLOBAL, INFO]: \t• Replacing variable post_tr\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:Analysing input:\n", + "INFO:{\n", + " \"dynamics\": [\n", + " {\n", + " \"expression\": \"I_syn_exc' = (-I_syn_exc) / tau_syn_exc\",\n", + " \"initial_values\": {\n", + " \"I_syn_exc\": \"0\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"I_syn_inh' = (-I_syn_inh) / tau_syn_inh\",\n", + " \"initial_values\": {\n", + " \"I_syn_inh\": \"0\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"V_m' = (-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m\",\n", + " \"initial_values\": {\n", + " \"V_m\": \"E_L\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"refr_t' = (-1000.0) * 1.0 / 1000.0\",\n", + " \"initial_values\": {\n", + " \"refr_t\": \"0\"\n", + " }\n", + " }\n", + " ],\n", + " \"options\": {\n", + " \"output_timestep_symbol\": \"__h\"\n", + " },\n", + " \"parameters\": {\n", + " \"C_m\": \"250\",\n", + " \"E_L\": \"(-70)\",\n", + " \"I_e\": \"0\",\n", + " \"V_reset\": \"(-70)\",\n", + " \"V_th\": \"(-55)\",\n", + " \"refr_T\": \"2\",\n", + " \"tau_m\": \"10\",\n", + " \"tau_syn_exc\": \"2\",\n", + " \"tau_syn_inh\": \"2\"\n", + " }\n", + "}\n", + "INFO:Processing global options...\n", + "INFO:Processing input shapes...\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_exc with defining expression = \"(-I_syn_exc) / tau_syn_exc\"\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols [I_syn_exc])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol I_syn_exc, derivative_factors = [-1/tau_syn_exc], inhom_term = 0.0, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"I_syn_exc\" of order 1\n", + "INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_inh with defining expression = \"(-I_syn_inh) / tau_syn_inh\"\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols [I_syn_inh])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_inh]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol I_syn_inh, derivative_factors = [-1/tau_syn_inh], inhom_term = 0.0, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"I_syn_inh\" of order 1\n", + "INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh\n", + "INFO:\n", + "Processing differential-equation form shape V_m with defining expression = \"(-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m\"\n", + "DEBUG:Splitting expression (E_L - V_m)/tau_m + (I_e + I_stim + I_syn_exc - I_syn_inh)/C_m (symbols [V_m])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_m]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m\n", + "DEBUG:\tnonlinear term: I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "DEBUG:Created Shape with symbol V_m, derivative_factors = [-1/tau_m], inhom_term = E_L/tau_m + I_e/C_m, nonlin_term = I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "INFO:\tReturning shape: Shape \"V_m\" of order 1\n", + "INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "INFO:\n", + "Processing differential-equation form shape refr_t with defining expression = \"(-1000.0) * 1.0 / 1000.0\"\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols [refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol refr_t, derivative_factors = [0], inhom_term = -1.00000000000000, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"refr_t\" of order 1\n", + "INFO:Shape refr_t: reconstituting expression -1.00000000000000\n", + "INFO:All known variables: [I_syn_exc, I_syn_inh, V_m, refr_t], all parameters used in ODEs: {tau_syn_exc, I_stim, E_L, C_m, tau_syn_inh, I_e, tau_m}\n", + "INFO:No numerical value specified for parameter \"I_stim\"\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_exc with defining expression = \"(-I_syn_exc) / tau_syn_exc\"\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, I_syn_exc])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[33,GLOBAL, INFO]: Successfully constructed neuron-synapse pair iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml\n", + "[34,GLOBAL, INFO]: Analysing/transforming model 'iaf_psc_exp_neuron_nestml'\n", + "[35,iaf_psc_exp_neuron_nestml, INFO, [55:0;108:0]]: Starts processing of the model 'iaf_psc_exp_neuron_nestml'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:Created Shape with symbol I_syn_exc, derivative_factors = [-1/tau_syn_exc], inhom_term = 0.0, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"I_syn_exc\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_inh with defining expression = \"(-I_syn_inh) / tau_syn_inh\"\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, I_syn_exc, I_syn_inh])\n", + "DEBUG:\tlinear factors: Matrix([[0], [-1/tau_syn_inh], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol I_syn_inh, derivative_factors = [-1/tau_syn_inh], inhom_term = 0.0, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"I_syn_inh\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape V_m with defining expression = \"(-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m\"\n", + "DEBUG:Splitting expression (E_L - V_m)/tau_m + (I_e + I_stim + I_syn_exc - I_syn_inh)/C_m (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, I_syn_exc, I_syn_inh, V_m])\n", + "DEBUG:\tlinear factors: Matrix([[1/C_m], [-1/C_m], [-1/tau_m], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m + I_stim/C_m\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol V_m, derivative_factors = [-1/tau_m], inhom_term = E_L/tau_m + I_e/C_m + I_stim/C_m, nonlin_term = I_syn_exc/C_m - I_syn_inh/C_m\n", + "INFO:\tReturning shape: Shape \"V_m\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape refr_t with defining expression = \"(-1000.0) * 1.0 / 1000.0\"\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, I_syn_exc, I_syn_inh, V_m, refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol refr_t, derivative_factors = [0], inhom_term = -1.00000000000000, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"refr_t\" of order 1\n", + "INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]]))\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]]))\n", + "DEBUG:\tlinear factors: Matrix([[0], [-1/tau_syn_inh], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "DEBUG:Splitting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]]))\n", + "DEBUG:\tlinear factors: Matrix([[1/C_m], [-1/C_m], [-1/tau_m], [0]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m + I_stim/C_m\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape refr_t: reconstituting expression -1.00000000000000\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]]))\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Initializing system of shapes with x = Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]]), A = Matrix([[-1/tau_syn_exc, 0, 0, 0], [0, -1/tau_syn_inh, 0, 0], [1/C_m, -1/C_m, -1/tau_m, 0], [0, 0, 0, 0]]), b = Matrix([[0], [0], [E_L/tau_m + I_e/C_m + I_stim/C_m], [-1.00000000000000]]), c = Matrix([[0], [0], [0], [0]])\n", + "INFO:Finding analytically solvable equations...\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph.dot']\n", + "INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols [I_syn_exc, I_syn_inh, V_m, refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols [I_syn_exc, I_syn_inh, V_m, refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[0], [-1/tau_syn_inh], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "DEBUG:Splitting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m (symbols [I_syn_exc, I_syn_inh, V_m, refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[1/C_m], [-1/C_m], [-1/tau_m], [0]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m + I_stim/C_m\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape refr_t: reconstituting expression -1.00000000000000\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols [I_syn_exc, I_syn_inh, V_m, refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph_analytically_solvable_before_propagated.dot']\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph_analytically_solvable.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph_analytically_solvable.dot']\n", + "INFO:Generating propagators for the following symbols: I_syn_exc, I_syn_inh, V_m, refr_t\n", + "DEBUG:Initializing system of shapes with x = Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]]), A = Matrix([[-1/tau_syn_exc, 0, 0, 0], [0, -1/tau_syn_inh, 0, 0], [1/C_m, -1/C_m, -1/tau_m, 0], [0, 0, 0, 0]]), b = Matrix([[0], [0], [E_L/tau_m + I_e/C_m + I_stim/C_m], [-1.00000000000000]]), c = Matrix([[0], [0], [0], [0]])\n", + "WARNING:Under certain conditions, the propagator matrix is singular (contains infinities).\n", + "WARNING:List of all conditions that result in a singular propagator:\n", + "WARNING:\ttau_m = tau_syn_exc\n", + "WARNING:\ttau_m = tau_syn_inh\n", + "DEBUG:System of equations:\n", + "DEBUG:x = Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t]])\n", + "DEBUG:A = Matrix([\n", + "[-1/tau_syn_exc, 0, 0, 0],\n", + "[ 0, -1/tau_syn_inh, 0, 0],\n", + "[ 1/C_m, -1/C_m, -1/tau_m, 0],\n", + "[ 0, 0, 0, 0]])\n", + "DEBUG:b = Matrix([[0], [0], [E_L/tau_m + I_e/C_m + I_stim/C_m], [-1.00000000000000]])\n", + "DEBUG:c = Matrix([[0], [0], [0], [0]])\n", + "INFO:update_expr[I_syn_exc] = I_syn_exc*__P__I_syn_exc__I_syn_exc\n", + "INFO:update_expr[I_syn_inh] = I_syn_inh*__P__I_syn_inh__I_syn_inh\n", + "INFO:update_expr[V_m] = -E_L*__P__V_m__V_m + E_L + I_syn_exc*__P__V_m__I_syn_exc + I_syn_inh*__P__V_m__I_syn_inh + V_m*__P__V_m__V_m - 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:update_expr[refr_t] = __P__refr_t__refr_t*refr_t - 1.0*__h\n", + "WARNING:Not preserving expression for variable \"I_syn_exc\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"I_syn_inh\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"V_m\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"refr_t\" as it is solved by propagator solver\n", + "INFO:In ode-toolbox: returning outdict = \n", + "INFO:[\n", + " {\n", + " \"initial_values\": {\n", + " \"I_syn_exc\": \"0\",\n", + " \"I_syn_inh\": \"0\",\n", + " \"V_m\": \"E_L\",\n", + " \"refr_t\": \"0\"\n", + " },\n", + " \"parameters\": {\n", + " \"C_m\": \"250.000000000000\",\n", + " \"E_L\": \"-70.0000000000000\",\n", + " \"I_e\": \"0\",\n", + " \"tau_m\": \"10.0000000000000\",\n", + " \"tau_syn_exc\": \"2.00000000000000\",\n", + " \"tau_syn_inh\": \"2.00000000000000\"\n", + " },\n", + " \"propagators\": {\n", + " \"__P__I_syn_exc__I_syn_exc\": \"exp(-__h/tau_syn_exc)\",\n", + " \"__P__I_syn_inh__I_syn_inh\": \"exp(-__h/tau_syn_inh)\",\n", + " \"__P__V_m__I_syn_exc\": \"tau_m*tau_syn_exc*(-exp(__h/tau_m) + exp(__h/tau_syn_exc))*exp(-__h*(tau_m + tau_syn_exc)/(tau_m*tau_syn_exc))/(C_m*(tau_m - tau_syn_exc))\",\n", + " \"__P__V_m__I_syn_inh\": \"tau_m*tau_syn_inh*(exp(__h/tau_m) - exp(__h/tau_syn_inh))*exp(-__h*(tau_m + tau_syn_inh)/(tau_m*tau_syn_inh))/(C_m*(tau_m - tau_syn_inh))\",\n", + " \"__P__V_m__V_m\": \"exp(-__h/tau_m)\",\n", + " \"__P__refr_t__refr_t\": \"1\"\n", + " },\n", + " \"solver\": \"analytical\",\n", + " \"state_variables\": [\n", + " \"I_syn_exc\",\n", + " \"I_syn_inh\",\n", + " \"V_m\",\n", + " \"refr_t\"\n", + " ],\n", + " \"update_expressions\": {\n", + " \"I_syn_exc\": \"I_syn_exc*__P__I_syn_exc__I_syn_exc\",\n", + " \"I_syn_inh\": \"I_syn_inh*__P__I_syn_inh__I_syn_inh\",\n", + " \"V_m\": \"-E_L*__P__V_m__V_m + E_L + I_syn_exc*__P__V_m__I_syn_exc + I_syn_inh*__P__V_m__I_syn_inh + V_m*__P__V_m__V_m - 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", + " \"refr_t\": \"__P__refr_t__refr_t*refr_t - 1.0*__h\"\n", + " }\n", + " }\n", + "]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:Analysing input:\n", + "INFO:{\n", + " \"dynamics\": [\n", + " {\n", + " \"expression\": \"I_syn_exc' = (-I_syn_exc) / tau_syn_exc\",\n", + " \"initial_values\": {\n", + " \"I_syn_exc\": \"0\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"I_syn_inh' = (-I_syn_inh) / tau_syn_inh\",\n", + " \"initial_values\": {\n", + " \"I_syn_inh\": \"0\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"V_m' = (-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m\",\n", + " \"initial_values\": {\n", + " \"V_m\": \"E_L\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"refr_t' = (-1000.0) * 1.0 / 1000.0\",\n", + " \"initial_values\": {\n", + " \"refr_t\": \"0\"\n", + " }\n", + " },\n", + " {\n", + " \"expression\": \"post_tr__for_neuromodulated_stdp_synapse_nestml' = (-post_tr__for_neuromodulated_stdp_synapse_nestml) / tau_tr_post__for_neuromodulated_stdp_synapse_nestml\",\n", + " \"initial_values\": {\n", + " \"post_tr__for_neuromodulated_stdp_synapse_nestml\": \"0.0\"\n", + " }\n", + " }\n", + " ],\n", + " \"options\": {\n", + " \"output_timestep_symbol\": \"__h\"\n", + " },\n", + " \"parameters\": {\n", + " \"C_m\": \"250\",\n", + " \"E_L\": \"(-70)\",\n", + " \"I_e\": \"0\",\n", + " \"V_reset\": \"(-70)\",\n", + " \"V_th\": \"(-55)\",\n", + " \"refr_T\": \"2\",\n", + " \"tau_m\": \"10\",\n", + " \"tau_syn_exc\": \"2\",\n", + " \"tau_syn_inh\": \"2\",\n", + " \"tau_tr_post__for_neuromodulated_stdp_synapse_nestml\": \"20\"\n", + " }\n", + "}\n", + "INFO:Processing global options...\n", + "INFO:Processing input shapes...\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_exc with defining expression = \"(-I_syn_exc) / tau_syn_exc\"\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols [I_syn_exc])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol I_syn_exc, derivative_factors = [-1/tau_syn_exc], inhom_term = 0.0, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"I_syn_exc\" of order 1\n", + "INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_inh with defining expression = \"(-I_syn_inh) / tau_syn_inh\"\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols [I_syn_inh])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_inh]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol I_syn_inh, derivative_factors = [-1/tau_syn_inh], inhom_term = 0.0, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"I_syn_inh\" of order 1\n", + "INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh\n", + "INFO:\n", + "Processing differential-equation form shape V_m with defining expression = \"(-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m\"\n", + "DEBUG:Splitting expression (E_L - V_m)/tau_m + (I_e + I_stim + I_syn_exc - I_syn_inh)/C_m (symbols [V_m])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_m]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m\n", + "DEBUG:\tnonlinear term: I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "DEBUG:Created Shape with symbol V_m, derivative_factors = [-1/tau_m], inhom_term = E_L/tau_m + I_e/C_m, nonlin_term = I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "INFO:\tReturning shape: Shape \"V_m\" of order 1\n", + "INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "INFO:\n", + "Processing differential-equation form shape refr_t with defining expression = \"(-1000.0) * 1.0 / 1000.0\"\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols [refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol refr_t, derivative_factors = [0], inhom_term = -1.00000000000000, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"refr_t\" of order 1\n", + "INFO:Shape refr_t: reconstituting expression -1.00000000000000\n", + "INFO:\n", + "Processing differential-equation form shape post_tr__for_neuromodulated_stdp_synapse_nestml with defining expression = \"(-post_tr__for_neuromodulated_stdp_synapse_nestml) / tau_tr_post__for_neuromodulated_stdp_synapse_nestml\"\n", + "DEBUG:Splitting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml (symbols [post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol post_tr__for_neuromodulated_stdp_synapse_nestml, derivative_factors = [-1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml], inhom_term = 0.0, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"post_tr__for_neuromodulated_stdp_synapse_nestml\" of order 1\n", + "INFO:Shape post_tr__for_neuromodulated_stdp_synapse_nestml: reconstituting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml\n", + "INFO:All known variables: [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml], all parameters used in ODEs: {tau_syn_exc, I_stim, E_L, C_m, tau_syn_inh, I_e, tau_tr_post__for_neuromodulated_stdp_synapse_nestml, tau_m}\n", + "INFO:No numerical value specified for parameter \"I_stim\"\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_exc with defining expression = \"(-I_syn_exc) / tau_syn_exc\"\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml, I_syn_exc])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc], [0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol I_syn_exc, derivative_factors = [-1/tau_syn_exc], inhom_term = 0.0, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"I_syn_exc\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape I_syn_inh with defining expression = \"(-I_syn_inh) / tau_syn_inh\"\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml, I_syn_exc, I_syn_inh])\n", + "DEBUG:\tlinear factors: Matrix([[0], [-1/tau_syn_inh], [0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[36,GLOBAL, INFO]: Analysing/transforming model 'iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml'\n", + "[37,iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, INFO, [55:0;108:0]]: Starts processing of the model 'iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:Created Shape with symbol I_syn_inh, derivative_factors = [-1/tau_syn_inh], inhom_term = 0.0, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"I_syn_inh\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape V_m with defining expression = \"(-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m\"\n", + "DEBUG:Splitting expression (E_L - V_m)/tau_m + (I_e + I_stim + I_syn_exc - I_syn_inh)/C_m (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml, I_syn_exc, I_syn_inh, V_m])\n", + "DEBUG:\tlinear factors: Matrix([[1/C_m], [-1/C_m], [-1/tau_m], [0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m + I_stim/C_m\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol V_m, derivative_factors = [-1/tau_m], inhom_term = E_L/tau_m + I_e/C_m + I_stim/C_m, nonlin_term = I_syn_exc/C_m - I_syn_inh/C_m\n", + "INFO:\tReturning shape: Shape \"V_m\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape refr_t with defining expression = \"(-1000.0) * 1.0 / 1000.0\"\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml, I_syn_exc, I_syn_inh, V_m, refr_t])\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol refr_t, derivative_factors = [0], inhom_term = -1.00000000000000, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"refr_t\" of order 1\n", + "INFO:\n", + "Processing differential-equation form shape post_tr__for_neuromodulated_stdp_synapse_nestml with defining expression = \"(-post_tr__for_neuromodulated_stdp_synapse_nestml) / tau_tr_post__for_neuromodulated_stdp_synapse_nestml\"\n", + "DEBUG:Splitting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml, I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [-1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml], [0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol post_tr__for_neuromodulated_stdp_synapse_nestml, derivative_factors = [-1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml], inhom_term = 0.0, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"post_tr__for_neuromodulated_stdp_synapse_nestml\" of order 1\n", + "INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]))\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]))\n", + "DEBUG:\tlinear factors: Matrix([[0], [-1/tau_syn_inh], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "DEBUG:Splitting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]))\n", + "DEBUG:\tlinear factors: Matrix([[1/C_m], [-1/C_m], [-1/tau_m], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m + I_stim/C_m\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape refr_t: reconstituting expression -1.00000000000000\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]))\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape post_tr__for_neuromodulated_stdp_synapse_nestml: reconstituting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml\n", + "DEBUG:Splitting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml (symbols Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]))\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [-1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Initializing system of shapes with x = Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]), A = Matrix([[-1/tau_syn_exc, 0, 0, 0, 0], [0, -1/tau_syn_inh, 0, 0, 0], [1/C_m, -1/C_m, -1/tau_m, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, -1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml]]), b = Matrix([[0], [0], [E_L/tau_m + I_e/C_m + I_stim/C_m], [-1.00000000000000], [0]]), c = Matrix([[0], [0], [0], [0], [0]])\n", + "INFO:Finding analytically solvable equations...\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph.dot']\n", + "INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc\n", + "DEBUG:Splitting expression -I_syn_exc/tau_syn_exc (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_syn_exc], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh\n", + "DEBUG:Splitting expression -I_syn_inh/tau_syn_inh (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[0], [-1/tau_syn_inh], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m\n", + "DEBUG:Splitting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m + I_syn_exc/C_m - I_syn_inh/C_m (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[1/C_m], [-1/C_m], [-1/tau_m], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: E_L/tau_m + I_e/C_m + I_stim/C_m\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape refr_t: reconstituting expression -1.00000000000000\n", + "DEBUG:Splitting expression -1.00000000000000 (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [0]])\n", + "DEBUG:\tinhomogeneous term: -1.00000000000000\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Shape post_tr__for_neuromodulated_stdp_synapse_nestml: reconstituting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml\n", + "DEBUG:Splitting expression -post_tr__for_neuromodulated_stdp_synapse_nestml/tau_tr_post__for_neuromodulated_stdp_synapse_nestml (symbols [I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml])\n", + "DEBUG:\tlinear factors: Matrix([[0], [0], [0], [0], [-1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph_analytically_solvable_before_propagated.dot']\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph_analytically_solvable.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph_analytically_solvable.dot']\n", + "INFO:Generating propagators for the following symbols: I_syn_exc, I_syn_inh, V_m, refr_t, post_tr__for_neuromodulated_stdp_synapse_nestml\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:Initializing system of shapes with x = Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]]), A = Matrix([[-1/tau_syn_exc, 0, 0, 0, 0], [0, -1/tau_syn_inh, 0, 0, 0], [1/C_m, -1/C_m, -1/tau_m, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, -1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml]]), b = Matrix([[0], [0], [E_L/tau_m + I_e/C_m + I_stim/C_m], [-1.00000000000000], [0]]), c = Matrix([[0], [0], [0], [0], [0]])\n", + "WARNING:Under certain conditions, the propagator matrix is singular (contains infinities).\n", + "WARNING:List of all conditions that result in a singular propagator:\n", + "WARNING:\ttau_m = tau_syn_exc\n", + "WARNING:\ttau_m = tau_syn_inh\n", + "DEBUG:System of equations:\n", + "DEBUG:x = Matrix([[I_syn_exc], [I_syn_inh], [V_m], [refr_t], [post_tr__for_neuromodulated_stdp_synapse_nestml]])\n", + "DEBUG:A = Matrix([\n", + "[-1/tau_syn_exc, 0, 0, 0, 0],\n", + "[ 0, -1/tau_syn_inh, 0, 0, 0],\n", + "[ 1/C_m, -1/C_m, -1/tau_m, 0, 0],\n", + "[ 0, 0, 0, 0, 0],\n", + "[ 0, 0, 0, 0, -1/tau_tr_post__for_neuromodulated_stdp_synapse_nestml]])\n", + "DEBUG:b = Matrix([[0], [0], [E_L/tau_m + I_e/C_m + I_stim/C_m], [-1.00000000000000], [0]])\n", + "DEBUG:c = Matrix([[0], [0], [0], [0], [0]])\n", + "INFO:update_expr[I_syn_exc] = I_syn_exc*__P__I_syn_exc__I_syn_exc\n", + "INFO:update_expr[I_syn_inh] = I_syn_inh*__P__I_syn_inh__I_syn_inh\n", + "INFO:update_expr[V_m] = -E_L*__P__V_m__V_m + E_L + I_syn_exc*__P__V_m__I_syn_exc + I_syn_inh*__P__V_m__I_syn_inh + V_m*__P__V_m__V_m - 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:update_expr[refr_t] = __P__refr_t__refr_t*refr_t - 1.0*__h\n", + "INFO:update_expr[post_tr__for_neuromodulated_stdp_synapse_nestml] = __P__post_tr__for_neuromodulated_stdp_synapse_nestml__post_tr__for_neuromodulated_stdp_synapse_nestml*post_tr__for_neuromodulated_stdp_synapse_nestml\n", + "WARNING:Not preserving expression for variable \"I_syn_exc\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"I_syn_inh\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"V_m\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"refr_t\" as it is solved by propagator solver\n", + "WARNING:Not preserving expression for variable \"post_tr__for_neuromodulated_stdp_synapse_nestml\" as it is solved by propagator solver\n", + "INFO:In ode-toolbox: returning outdict = \n", + "INFO:[\n", + " {\n", + " \"initial_values\": {\n", + " \"I_syn_exc\": \"0\",\n", + " \"I_syn_inh\": \"0\",\n", + " \"V_m\": \"E_L\",\n", + " \"post_tr__for_neuromodulated_stdp_synapse_nestml\": \"0.0\",\n", + " \"refr_t\": \"0\"\n", + " },\n", + " \"parameters\": {\n", + " \"C_m\": \"250.000000000000\",\n", + " \"E_L\": \"-70.0000000000000\",\n", + " \"I_e\": \"0\",\n", + " \"tau_m\": \"10.0000000000000\",\n", + " \"tau_syn_exc\": \"2.00000000000000\",\n", + " \"tau_syn_inh\": \"2.00000000000000\",\n", + " \"tau_tr_post__for_neuromodulated_stdp_synapse_nestml\": \"20.0000000000000\"\n", + " },\n", + " \"propagators\": {\n", + " \"__P__I_syn_exc__I_syn_exc\": \"exp(-__h/tau_syn_exc)\",\n", + " \"__P__I_syn_inh__I_syn_inh\": \"exp(-__h/tau_syn_inh)\",\n", + " \"__P__V_m__I_syn_exc\": \"tau_m*tau_syn_exc*(-exp(__h/tau_m) + exp(__h/tau_syn_exc))*exp(-__h*(tau_m + tau_syn_exc)/(tau_m*tau_syn_exc))/(C_m*(tau_m - tau_syn_exc))\",\n", + " \"__P__V_m__I_syn_inh\": \"tau_m*tau_syn_inh*(exp(__h/tau_m) - exp(__h/tau_syn_inh))*exp(-__h*(tau_m + tau_syn_inh)/(tau_m*tau_syn_inh))/(C_m*(tau_m - tau_syn_inh))\",\n", + " \"__P__V_m__V_m\": \"exp(-__h/tau_m)\",\n", + " \"__P__post_tr__for_neuromodulated_stdp_synapse_nestml__post_tr__for_neuromodulated_stdp_synapse_nestml\": \"exp(-__h/tau_tr_post__for_neuromodulated_stdp_synapse_nestml)\",\n", + " \"__P__refr_t__refr_t\": \"1\"\n", + " },\n", + " \"solver\": \"analytical\",\n", + " \"state_variables\": [\n", + " \"I_syn_exc\",\n", + " \"I_syn_inh\",\n", + " \"V_m\",\n", + " \"refr_t\",\n", + " \"post_tr__for_neuromodulated_stdp_synapse_nestml\"\n", + " ],\n", + " \"update_expressions\": {\n", + " \"I_syn_exc\": \"I_syn_exc*__P__I_syn_exc__I_syn_exc\",\n", + " \"I_syn_inh\": \"I_syn_inh*__P__I_syn_inh__I_syn_inh\",\n", + " \"V_m\": \"-E_L*__P__V_m__V_m + E_L + I_syn_exc*__P__V_m__I_syn_exc + I_syn_inh*__P__V_m__I_syn_inh + V_m*__P__V_m__V_m - 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", + " \"post_tr__for_neuromodulated_stdp_synapse_nestml\": \"__P__post_tr__for_neuromodulated_stdp_synapse_nestml__post_tr__for_neuromodulated_stdp_synapse_nestml*post_tr__for_neuromodulated_stdp_synapse_nestml\",\n", + " \"refr_t\": \"__P__refr_t__refr_t*refr_t - 1.0*__h\"\n", + " }\n", + " }\n", + "]\n", + "INFO:Analysing input:\n", + "INFO:{\n", + " \"dynamics\": [\n", + " {\n", + " \"expression\": \"pre_tr' = (-pre_tr) / tau_tr_pre\",\n", + " \"initial_values\": {\n", + " \"pre_tr\": \"0.0\"\n", + " }\n", + " }\n", + " ],\n", + " \"options\": {\n", + " \"output_timestep_symbol\": \"__h\"\n", + " },\n", + " \"parameters\": {\n", + " \"A_minus\": \"1.5\",\n", + " \"A_plus\": \"1.0\",\n", + " \"Wmax\": \"200.0\",\n", + " \"Wmin\": \"0.0\",\n", + " \"b\": \"0.0\",\n", + " \"d\": \"1\",\n", + " \"tau_c\": \"1000\",\n", + " \"tau_n\": \"200\",\n", + " \"tau_tr_post\": \"20\",\n", + " \"tau_tr_pre\": \"20\"\n", + " }\n", + "}\n", + "INFO:Processing global options...\n", + "INFO:Processing input shapes...\n", + "INFO:\n", + "Processing differential-equation form shape pre_tr with defining expression = \"(-pre_tr) / tau_tr_pre\"\n", + "DEBUG:Splitting expression -pre_tr/tau_tr_pre (symbols [pre_tr])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_tr_pre]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol pre_tr, derivative_factors = [-1/tau_tr_pre], inhom_term = 0.0, nonlin_term = 0.0\n", + "INFO:\tReturning shape: Shape \"pre_tr\" of order 1\n", + "INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre\n", + "INFO:All known variables: [pre_tr], all parameters used in ODEs: {tau_tr_pre}\n", + "INFO:\n", + "Processing differential-equation form shape pre_tr with defining expression = \"(-pre_tr) / tau_tr_pre\"\n", + "DEBUG:Splitting expression -pre_tr/tau_tr_pre (symbols [pre_tr, pre_tr])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_tr_pre], [0]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Created Shape with symbol pre_tr, derivative_factors = [-1/tau_tr_pre], inhom_term = 0.0, nonlin_term = 0\n", + "INFO:\tReturning shape: Shape \"pre_tr\" of order 1\n", + "INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre\n", + "DEBUG:Splitting expression -pre_tr/tau_tr_pre (symbols Matrix([[pre_tr]]))\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_tr_pre]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "DEBUG:Initializing system of shapes with x = Matrix([[pre_tr]]), A = Matrix([[-1/tau_tr_pre]]), b = Matrix([[0]]), c = Matrix([[0]])\n", + "INFO:Finding analytically solvable equations...\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph.dot']\n", + "INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre\n", + "DEBUG:Splitting expression -pre_tr/tau_tr_pre (symbols [pre_tr])\n", + "DEBUG:\tlinear factors: Matrix([[-1/tau_tr_pre]])\n", + "DEBUG:\tinhomogeneous term: 0.0\n", + "DEBUG:\tnonlinear term: 0.0\n", + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph_analytically_solvable_before_propagated.dot']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[38,GLOBAL, INFO]: Analysing/transforming synapse neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.\n", + "[39,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [26:0;88:0]]: Starts processing of the model 'neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot\n", + "DEBUG:os.makedirs('/tmp')\n", + "DEBUG:write lines to '/tmp/ode_dependency_graph_analytically_solvable.dot'\n", + "DEBUG:run [PosixPath('dot'), '-Kdot', '-Tpdf', '-O', 'ode_dependency_graph_analytically_solvable.dot']\n", + "INFO:Generating propagators for the following symbols: pre_tr\n", + "DEBUG:Initializing system of shapes with x = Matrix([[pre_tr]]), A = Matrix([[-1/tau_tr_pre]]), b = Matrix([[0]]), c = Matrix([[0]])\n", + "DEBUG:System of equations:\n", + "DEBUG:x = Matrix([[pre_tr]])\n", + "DEBUG:A = Matrix([[-1/tau_tr_pre]])\n", + "DEBUG:b = Matrix([[0]])\n", + "DEBUG:c = Matrix([[0]])\n", + "INFO:update_expr[pre_tr] = __P__pre_tr__pre_tr*pre_tr\n", + "WARNING:Not preserving expression for variable \"pre_tr\" as it is solved by propagator solver\n", + "INFO:In ode-toolbox: returning outdict = \n", + "INFO:[\n", + " {\n", + " \"initial_values\": {\n", + " \"pre_tr\": \"0.0\"\n", + " },\n", + " \"parameters\": {\n", + " \"tau_tr_pre\": \"20.0000000000000\"\n", + " },\n", + " \"propagators\": {\n", + " \"__P__pre_tr__pre_tr\": \"exp(-__h/tau_tr_pre)\"\n", + " },\n", + " \"solver\": \"analytical\",\n", + " \"state_variables\": [\n", + " \"pre_tr\"\n", + " ],\n", + " \"update_expressions\": {\n", + " \"pre_tr\": \"__P__pre_tr__pre_tr*pre_tr\"\n", + " }\n", + " }\n", + "]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[40,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, WARNING, [35:8;35:17]]: Variable 'd' has the same name as a physical unit!\n", + "[41,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [62:13;62:18]]: Implicit casting from (compatible) type '1 / ms' to 'real'.\n", + "[42,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [83:13;84:59]]: Implicit casting from (compatible) type 'ms' to 'real'.\n", + "[43,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, WARNING, [35:8;35:17]]: Variable 'd' has the same name as a physical unit!\n", + "[44,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [62:13;62:18]]: Implicit casting from (compatible) type '1 / ms' to 'real'.\n", + "[45,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [83:13;84:59]]: Implicit casting from (compatible) type 'ms' to 'real'.\n", + "[46,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp\n", + "[47,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.h\n", + "[48,iaf_psc_exp_neuron_nestml, INFO, [55:0;108:0]]: Successfully generated code for the model: 'iaf_psc_exp_neuron_nestml' in: '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target' !\n", + "[49,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp\n", + "[50,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.h\n", + "[51,iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, INFO, [55:0;108:0]]: Successfully generated code for the model: 'iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml' in: '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target' !\n", + "[52,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h\n", + "[53,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [26:0;88:0]]: Successfully generated code for the model: 'neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml' in: '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target' !\n", + "[54,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/nestml_17cabc36be1d44369f57ca5fb6008595_module.cpp\n", + "[55,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/nestml_17cabc36be1d44369f57ca5fb6008595_module.h\n", + "[56,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/CMakeLists.txt\n", + "[57,GLOBAL, INFO]: Successfully generated NEST module code in '/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target' !\n", + "CMake Warning (dev) at CMakeLists.txt:95 (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", + "\n", + "-- The CXX compiler identification is GNU 12.3.0\n", + "-- Detecting CXX compiler ABI info\n", + "-- Detecting CXX compiler ABI info - done\n", + "-- Check for working CXX compiler: /usr/bin/c++ - skipped\n", + "-- Detecting CXX compile features\n", + "-- Detecting CXX compile features - done\n", + "\n", + "-------------------------------------------------------\n", + "nestml_17cabc36be1d44369f57ca5fb6008595_module Configuration Summary\n", + "-------------------------------------------------------\n", + "\n", + "C++ compiler : /usr/bin/c++\n", + "Build static libs : OFF\n", + "C++ compiler flags : \n", + "NEST compiler flags : -std=c++17 -Wall -fopenmp -O2 -fdiagnostics-color=auto\n", + "NEST include dirs : -I/home/charl/julich/nest-simulator-install/include/nest -I/usr/include -I/usr/include -I/usr/include\n", + "NEST libraries flags : -L/home/charl/julich/nest-simulator-install/lib/nest -lnest -lsli /usr/lib/x86_64-linux-gnu/libltdl.so /usr/lib/x86_64-linux-gnu/libgsl.so /usr/lib/x86_64-linux-gnu/libgslcblas.so /usr/lib/gcc/x86_64-linux-gnu/12/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.a\n", + "\n", + "-------------------------------------------------------\n", + "\n", + "You can now build and install 'nestml_17cabc36be1d44369f57ca5fb6008595_module' using\n", + " make\n", + " make install\n", + "\n", + "The library file libnestml_17cabc36be1d44369f57ca5fb6008595_module.so will be installed to\n", + " /tmp/nestml_target_lrqc1inz\n", + "The module can be loaded into NEST using\n", + " (nestml_17cabc36be1d44369f57ca5fb6008595_module) Install (in SLI)\n", + " nest.Install(nestml_17cabc36be1d44369f57ca5fb6008595_module) (in PyNEST)\n", + "\n", + "CMake 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.26)\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", + "\n", + "-- Configuring done (0.5s)\n", + "-- Generating done (0.0s)\n", + "-- Build files have been written to: /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target\n", + "[ 50%] Building CXX object CMakeFiles/nestml_17cabc36be1d44369f57ca5fb6008595_module_module.dir/iaf_psc_exp_neuron_nestml.o\n", + "[ 50%] Building CXX object CMakeFiles/nestml_17cabc36be1d44369f57ca5fb6008595_module_module.dir/nestml_17cabc36be1d44369f57ca5fb6008595_module.o\n", + "[ 75%] Building CXX object CMakeFiles/nestml_17cabc36be1d44369f57ca5fb6008595_module_module.dir/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.o\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml::init_state_internal_()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:188:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 188 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml::recompute_internal_variables(bool)’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:233:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 233 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp: In member function ‘virtual void iaf_psc_exp_neuron_nestml::update(const nest::Time&, long int, long int)’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:295:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]\n", + " 295 | for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)\n", + " | ~~^~~~~~~~~~~~~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:286:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 286 | auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:280:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 280 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml::on_receive_block_exc_spikes()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:461:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 461 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml::on_receive_block_inh_spikes()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml.cpp:469:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 469 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::init_state_internal_()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:198:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 198 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::recompute_internal_variables(bool)’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:252:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 252 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘virtual void iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::update(const nest::Time&, long int, long int)’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:316:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]\n", + " 316 | for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)\n", + " | ~~^~~~~~~~~~~~~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:307:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 307 | auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:301:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 301 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::on_receive_block_exc_spikes()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:484:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 484 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::on_receive_block_inh_spikes()’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:492:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 492 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "In file included from /home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/nestml_17cabc36be1d44369f57ca5fb6008595_module.cpp:36:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierPtrRport]’:\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25: required from ‘nest::GenericConnectorModel::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/model_manager_impl.h:62:5: required from ‘void nest::ModelManager::register_connection_model(const std::string&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/nest_impl.h:37:70: required from ‘void nest::register_connection_model(const std::string&) [with ConnectorModelT = neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:696:104: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:889:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 889 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::recompute_internal_variables() [with targetidentifierT = nest::TargetIdentifierPtrRport]’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:903:3: required from ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierPtrRport]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25: required from ‘nest::GenericConnectorModel::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/model_manager_impl.h:62:5: required from ‘void nest::ModelManager::register_connection_model(const std::string&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/nest_impl.h:37:70: required from ‘void nest::register_connection_model(const std::string&) [with ConnectorModelT = neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:696:104: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:876:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 876 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierIndex]’:\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25: required from ‘nest::GenericConnectorModel::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/model_manager_impl.h:103:34: required from ‘void nest::ModelManager::register_specific_connection_model_(const std::string&) [with CompleteConnecionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/model_manager_impl.h:67:80: required from ‘void nest::ModelManager::register_connection_model(const std::string&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/nest_impl.h:37:70: required from ‘void nest::register_connection_model(const std::string&) [with ConnectorModelT = neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:696:104: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:889:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 889 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::recompute_internal_variables() [with targetidentifierT = nest::TargetIdentifierIndex]’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:903:3: required from ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierIndex]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25: required from ‘nest::GenericConnectorModel::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/model_manager_impl.h:103:34: required from ‘void nest::ModelManager::register_specific_connection_model_(const std::string&) [with CompleteConnecionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/model_manager_impl.h:67:80: required from ‘void nest::ModelManager::register_connection_model(const std::string&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/nest_impl.h:37:70: required from ‘void nest::register_connection_model(const std::string&) [with ConnectorModelT = neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; std::string = std::__cxx11::basic_string]’\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:696:104: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:876:16: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 876 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int]’:\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22: required from ‘void nest::Connector::send_to_all(size_t, const std::vector&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:605:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 605 | auto get_t = [t_hist_entry_ms](){ return t_hist_entry_ms; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:633:12: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 633 | auto get_t = [__t_spike](){ return __t_spike; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:672:12: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 672 | auto get_t = [__t_spike](){ return __t_spike; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:525:18: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 525 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:527:10: warning: variable ‘get_thread’ set but not used [-Wunused-but-set-variable]\n", + " 527 | auto get_thread = [tid]()\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::trigger_update_weight(size_t, const std::vector&, double, const CommonPropertiesType&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int; CommonPropertiesType = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties]’:\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:446:38: required from ‘void nest::Connector::trigger_update_weight(long int, size_t, const std::vector&, double, const std::vector&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:433:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:1035:18: warning: unused variable ‘_tr_t’ [-Wunused-variable]\n", + " 1035 | const double _tr_t = start->t_;\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:1017:10: warning: unused variable ‘timestep’ [-Wunused-variable]\n", + " 1017 | double timestep = 0;\n", + " | ^~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int]’:\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22: required from ‘void nest::Connector::send_to_all(size_t, const std::vector&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:605:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 605 | auto get_t = [t_hist_entry_ms](){ return t_hist_entry_ms; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:633:12: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 633 | auto get_t = [__t_spike](){ return __t_spike; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:672:12: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 672 | auto get_t = [__t_spike](){ return __t_spike; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:525:18: warning: unused variable ‘__timestep’ [-Wunused-variable]\n", + " 525 | const double __timestep = nest::Time::get_resolution().get_ms(); // do not remove, this is necessary for the timestep() function\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:527:10: warning: variable ‘get_thread’ set but not used [-Wunused-but-set-variable]\n", + " 527 | auto get_thread = [tid]()\n", + " | ^~~~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::trigger_update_weight(size_t, const std::vector&, double, const CommonPropertiesType&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int; CommonPropertiesType = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties]’:\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:446:38: required from ‘void nest::Connector::trigger_update_weight(long int, size_t, const std::vector&, double, const std::vector&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:433:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:1035:18: warning: unused variable ‘_tr_t’ [-Wunused-variable]\n", + " 1035 | const double _tr_t = start->t_;\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:1017:10: warning: unused variable ‘timestep’ [-Wunused-variable]\n", + " 1017 | double timestep = 0;\n", + " | ^~~~~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::process_mod_spikes_spikes_(const std::vector&, double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport]’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:579:9: required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22: required from ‘void nest::Connector::send_to_all(size_t, const std::vector&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:725:12: warning: unused variable ‘cd’ [-Wunused-variable]\n", + " 725 | double cd;\n", + " | ^~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::update_internal_state_(double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport]’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:600:9: required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22: required from ‘void nest::Connector::send_to_all(size_t, const std::vector&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:960:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 960 | auto get_t = [t_start](){ return t_start; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::process_mod_spikes_spikes_(const std::vector&, double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex]’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:579:9: required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22: required from ‘void nest::Connector::send_to_all(size_t, const std::vector&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:725:12: warning: unused variable ‘cd’ [-Wunused-variable]\n", + " 725 | double cd;\n", + " | ^~\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::update_internal_state_(double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex]’:\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:600:9: required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22: required from ‘void nest::Connector::send_to_all(size_t, const std::vector&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml; size_t = long unsigned int]’\n", + "/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3: required from here\n", + "/home/charl/julich/nestml-fork-AlexisWis-cart_pole_tutorial/nestml/doc/tutorials/cart_pole_reinforcement_learning/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:960:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]\n", + " 960 | auto get_t = [t_start](){ return t_start; }; // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model\n", + " | ^~~~~\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[100%] Linking CXX shared module nestml_17cabc36be1d44369f57ca5fb6008595_module.so\n", + "[100%] Built target nestml_17cabc36be1d44369f57ca5fb6008595_module_module\n", + "[100%] Built target nestml_17cabc36be1d44369f57ca5fb6008595_module_module\n", + "Install the project...\n", + "-- Install configuration: \"\"\n", + "-- Installing: /tmp/nestml_target_lrqc1inz/nestml_17cabc36be1d44369f57ca5fb6008595_module.so\n" + ] + } + ], "source": [ "# ... generate NESTML model code...\n", "\n", "from pynestml.codegeneration.nest_code_generator_utils import NESTCodeGeneratorUtils\n", "\n", "# generate and build code\n", - "module_name, neuron_model_name = \\\n", - " NESTCodeGeneratorUtils.generate_code_for(\"iaf_psc_exp_neuron.nestml\")\n" + "input_layer_module_name, input_layer_neuron_model_name = \\\n", + " NESTCodeGeneratorUtils.generate_code_for(\"../../../models/neurons/ignore_and_fire_neuron.nestml\")\n", + "\n", + "# ignore_and_fire\n", + "output_layer_module_name, output_layer_neuron_model_name, output_layer_synapse_model_name = \\\n", + " NESTCodeGeneratorUtils.generate_code_for(\"../../../models/neurons/iaf_psc_exp_neuron.nestml\",\n", + " \"../../../models/synapses/neuromodulated_stdp_synapse.nestml\",\n", + " post_ports=[\"post_spikes\"],\n", + " mod_ports=[\"mod_spikes\"],\n", + " logging_level=\"DEBUG\",\n", + " codegen_opts={\"delay_variable\": {\"neuromodulated_stdp_synapse\": \"d\"},\n", + " \"weight_variable\": {\"neuromodulated_stdp_synapse\": \"w\"}})\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "99614c94", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (1176944502.py, line 45)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn [2], line 45\u001b[0;36m\u001b[0m\n\u001b[0;31m self.input_population[box[0], box[1], box[2], box[3]].I_e = ??? # a current to make the neuron fire at a \"reasonable\" rate (like 10 Hz)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], "source": [ "import nest\n", "\n", @@ -557,7 +1680,8 @@ " \n", " def construct_neural_network(self):\n", " nest.ResetKernel()\n", - " nest.Install(module_name) # makes the generated NESTML model available\n", + " nest.Install(input_layer_module_name) # makes the generated NESTML model available\n", + " nest.Install(output_layer_module_name) # makes the generated NESTML model available\n", " \"\"\"\n", " #PROBLEM: NEST likes to use two NodeCollection objects\n", " #perhaps just use an equation to derive the correct index?\n", @@ -570,8 +1694,8 @@ " self.input_population[idx[0], idx[1], idx[2], idx[3]] = nest.Create(neuron_model_name)\n", " \"\"\"\n", " input_size = self.dimensions[0] * self.dimensions[1] * self.dimensions[2] * self.dimensions[3]\n", - " self.input_population = nest.Create(neuron_model_name, input_size)\n", - " self.output_population = nest.Create(neuron_model_name, 2) #2? 10?\n", + " self.input_population = nest.Create(input_layer_neuron_model_name, input_size)\n", + " self.output_population = nest.Create(output_layer_neuron_model_name, 2) #2? 10?\n", "\n", " \n", "\n", @@ -582,11 +1706,103 @@ " self.input_population[box[0], box[1], box[2], box[3]].I_e = ??? # a current to make the neuron fire at a \"reasonable\" rate (like 10 Hz)\n", "\n" ] + }, + { + "cell_type": "markdown", + "id": "0490ced9", + "metadata": {}, + "source": [ + "# Executing spiking version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c37f6cc0", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import matplotlib.pyplot as plt\n", + "\n", + "r = Renderer(1200, 800, 600, 500, 400)\n", + "clock = pg.time.Clock()\n", + "running = True\n", + "\n", + "p = Physics(0, (np.random.rand() - 1) / 10)\n", + "\n", + "a = SpikingAgent(p.get_state(), 0.5, 0.9999, 1, 0.995, 0.99)\n", + "\n", + "plt.ion() # turning interactive mode on\n", + "# preparing the data\n", + "y_plot = [0]\n", + "x_plot = [0]\n", + "\n", + "# plotting the first frame\n", + "graph = plt.plot(x_plot,y_plot)[0]\n", + "plt.pause(1)\n", + "\n", + "steps_per_episode = 0\n", + "max_steps = 0\n", + "\n", + "while running:\n", + " steps_per_episode += 1\n", + "\n", + " force = 0\n", + " mouse_x = None\n", + "\n", + " # poll for events\n", + " for event in pg.event.get():\n", + " if event.type == pg.QUIT:\n", + " running = False\n", + " pg.quit()\n", + " sys.exit()\n", + " quit()\n", + " elif event.type == pg.MOUSEBUTTONDOWN:\n", + " mouse_x = r.get_relative_mouse_x(pg.mouse.get_pos()[0])\n", + "\n", + " # agent chooses action, simulation is uodated and reward is calculated\n", + " force = 10 if a.choose_action() else -10\n", + " theta, x = p.update(force, mouse_x)\n", + " failure = a.update(p.get_state())\n", + "\n", + " if failure:\n", + " p.reset()\n", + " a.failure_reset(p.get_state())\n", + "\n", + " if steps_per_episode > max_steps:\n", + " max_steps = steps_per_episode\n", + " y_plot.append(steps_per_episode)\n", + " x_plot.append(a.get_episode())\n", + " \n", + " # removing the older graph\n", + " graph.remove()\n", + " \n", + " # plotting newer graph\n", + " graph = plt.plot(x_plot,y_plot,color = 'g')[0]\n", + " plt.xlim(x_plot[0], x_plot[-1])\n", + " plt.ylim(0, max_steps)\n", + " # calling pause function to let it draw the graoh in between episodes\n", + " plt.pause(0.0001)\n", + "\n", + " steps_per_episode = 0\n", + " \n", + " \n", + " if a.get_episode() > 1000:\n", + " r.draw_clear()\n", + " r.draw_ground(0.2, \"grey\")\n", + " r.draw_car(x)\n", + " r.draw_pole(x, theta, 2*p.l, 0.02)\n", + " r.draw_stats(theta*180/np.pi, p.w*180/np.pi, x, p.a, a.get_episode())\n", + " r.display()\n", + "\n", + " clock.tick(50) # limits FPS to 50\n" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -600,7 +1816,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.11.4" } }, "nbformat": 4,