NESTML dopamine-modulated STDP synapse tutorial

Some text in this this notebook is copied verbatim from [1]. Network diagrams were modeled after [2].

Pavlov and Thompson (1902) first described classical conditioning: a phenomenon in which a biologically potent stimulus–the Unconditional Stimulus (UC)—is initially paired with a neutral stimulus—the Conditional Stimulus (CS). After many trials, learning is observed when the previously neutral stimuli start to elicit a response similar to that which was previously only elicited by the biologically potent stimulus. Pavlov and Thompson performed many experiments with dogs, observing their response (by monitoring salivation) to the appearance of a person who has been feeding them and the actual food appearing (UC). He demonstrated that the dogs started to salivate in the presence of the person who has been feeding them (or any other CS), rather than just when the food appears, because the CS had previously been associated with food.

d282fc01d54649a0a6e2b399f3171795

Image credits: https://www.psychologicalscience.org/observer/revisiting-pavlovian-conditioning

In this tutorial, a dopamine-modulated STDP model is created in NESTML, and we characterize the model before using it in a network (reinforcement) learning task.

Model

Izhikevich (2007) revisits an important question: how does an animal know which of the many cues and actions preceding a reward should be credited for the reward? Izhikevich explains that dopamine-modulated STDP has a built-in instrumental conditioning property, i.e., the associations between cues, actions and rewards are learned automatically by reinforcing the firing patterns (networks of synapses) responsible, even when the firings of those patterns are followed by a delayed reward or masked by other network activity.

To achieve this, each synapse has an eligibility trace \(C\):

\[\frac{dC}{dt} = -\frac{C}{\tau_C} + \text{STDP}(\Delta t)\delta(t - t_\text{pre/post}) \quad \text{(1)}\]

where \(\tau_C\) is the decay time constant of the eligibility trace and \(\text{STDP}(\Delta t)\) represents the magnitude of the change to make to the eligibility trace in response to a pair of pre- and post-synaptic spikes with temporal difference \(\Delta t = t_\text{post} − t_\text{pre}\). (This is just the usual STDP rule, see https://nestml.readthedocs.io/en/latest/tutorials/stdp_windows/stdp_windows.html.) Finally, \(\delta(t − t_\text{pre/post})\) is a Dirac delta function used to apply the effect of STDP to the trace at the times of pre- or post-synaptic spikes.

The concentration of dopamine is described by a variable \(D\):

\[\frac{dD}{dt} = − \frac{D}{\tau_d} + D_c \sum_{t_d^f} \delta(t - t_d^f) \quad \text{(2)}\]

where \(\tau_d\) is the time constant of dopamine re-absorption, \(D_c\) is a real number indicating the increase in dopamine concentration caused by each incoming dopaminergic spike; \(t_d^f\) are the times of these spikes.

Equations (1, 2) are then combined to calculate the change in synaptic strength \(W\):

\[\frac{dW}{dt} = CD \quad \text{(3)}\]

When a post-synaptic spike arrives very shortly after a pre-synaptic spike, a standard STDP rule would immediately potentiate the synaptic strength. However, when using the three-factor STDP rule, this potentiation would instead be applied to the eligibility trace.

Because changes to the synaptic strength are gated by dopamine concentration \(D\) (Equation 3), changes are only made to the synaptic strength if \(D \neq 0\). Furthermore, if the eligibility trace has decayed back to 0 before any dopaminergic spikes arrive, the synaptic strength will also not be changed.

[1]:
%matplotlib inline

from typing import List, Optional

import matplotlib as mpl

mpl.rcParams['axes.formatter.useoffset'] = False
mpl.rcParams['axes.grid'] = True
mpl.rcParams['grid.color'] = 'k'
mpl.rcParams['grid.linestyle'] = ':'
mpl.rcParams['grid.linewidth'] = 0.5
mpl.rcParams['figure.dpi'] = 120
mpl.rcParams['figure.figsize'] = [8., 3.]

import matplotlib.pyplot as plt
import nest
import numpy as np
import os
import random
import re

from pynestml.codegeneration.nest_code_generator_utils import NESTCodeGeneratorUtils
/home/charl/.local/lib/python3.11/site-packages/matplotlib/projections/__init__.py:63: UserWarning: Unable to import Axes3D. This may be due to multiple versions of Matplotlib being installed (e.g. as a system package and as a pip package). As a result, the 3D projection is not available.
  warnings.warn("Unable to import Axes3D. This may be due to multiple versions of "

              -- N E S T --
  Copyright (C) 2004 The NEST Initiative

 Version: 3.6.0-post0.dev0
 Built: Mar 26 2024 08:52:51

 This program is provided AS IS and comes with
 NO WARRANTY. See the file LICENSE for details.

 Problems or suggestions?
   Visit https://www.nest-simulator.org

 Type 'nest.help()' to find out more about NEST.

Generating code with NESTML

To generate fast code, NESTML needs to process the synapse model together with the neuron model that will be its postsynaptic partner in the network instantiantion (see https://nestml.readthedocs.io/en/latest/nestml_language/synapses_in_nestml.html#generating-code).

In this tutorial, we will use a very simple integrate-and-fire model, where arriving spikes cause an instantaneous increment of the membrane potential, the “iaf_psc_delta” model.

We first define a helper function to generate the C++ code for the models, build it as a NEST extension module, and load the module into the kernel. The resulting model names are composed of associated neuron and synapse partners, because of the co-generation, for example, “stdp_synapse__with_iaf_psc_delta” and “iaf_psc_delta__with_stdp_synapse”.

Because NEST does not support un- or reloading of modules at the time of writing, we implement a workaround that appends a unique number to the name of each generated model, for example, “stdp_synapse_3cc945f__with_iaf_psc_delta_3cc945f” and “iaf_psc_delta_3cc945f__with_stdp_synapse_3cc945f”.

The resulting neuron and synapse model names are returned by the function, so we do not have to think about these internals.

Formulating the model in NESTML

We now go on to define the full synapse model in NESTML:

[2]:
nestml_stdp_dopa_model = """
model neuromodulated_stdp_synapse:

    state:
        w real = 1.
        n real = 0.   # Neuromodulator concentration
        c real = 0.   # Eligibility trace
        pre_tr real = 0.
        post_tr real = 0.

    parameters:
        d ms = 1 ms  @nest::delay
        tau_tr_pre ms = 20 ms   # STDP time constant for weight changes caused by pre-before-post spike pairings.
        tau_tr_post ms = 20 ms    # STDP time constant for weight changes caused by post-before-pre spike pairings.
        tau_c ms = 1000 ms    # Time constant of eligibility trace
        tau_n ms = 200 ms   # Time constant of dopaminergic trace
        b real = 0.   # Dopaminergic baseline concentration
        Wmax real = 200.    # Maximal synaptic weight
        Wmin real = 0.    # Minimal synaptic weight
        A_plus real = 1.    # Multiplier applied to weight changes caused by pre-before-post spike pairings. If b (dopamine baseline concentration) is zero, then A_plus is simply the multiplier for facilitation (as in the stdp_synapse model). If b is not zero, then A_plus will be the multiplier for facilitation only if n - b is positive, where n is the instantenous dopamine concentration in the volume transmitter. If n - b is negative, A_plus will be the multiplier for depression.
        A_minus real = 1.5    # Multiplier applied to weight changes caused by post-before-pre spike pairings. If b (dopamine baseline concentration) is zero, then A_minus is simply the multiplier for depression (as in the stdp_synapse model). If b is not zero, then A_minus will be the multiplier for depression only if n - b is positive, where n is the instantenous dopamine concentration in the volume transmitter. If n - b is negative, A_minus will be the multiplier for facilitation.
        A_vt real = 1.     # Multiplier applied to dopa spikes

    equations:
        pre_tr' = -pre_tr / tau_tr_pre
        post_tr' = -post_tr / tau_tr_post

    internals:
        tau_s 1/ms = (tau_c + tau_n) / (tau_c * tau_n)

    input:
        pre_spikes <- spike
        post_spikes <- spike
        mod_spikes <- spike

    output:
        spike

    onReceive(mod_spikes):
        n += A_vt / tau_n

    onReceive(post_spikes):
        post_tr += 1.

        # facilitation
        c += A_plus * pre_tr

    onReceive(pre_spikes):
        pre_tr += 1.

        # depression
        c -= A_minus * post_tr

        # deliver spike to postsynaptic partner
        emit_spike(w, d)

    # update from time t to t + resolution()
    update:
        integrate_odes()

        # resolution() returns the timestep to be made (in units of time)
        # the sequence here matters: the update step for w requires the "old" values of c and n
        w -= c * ( n / tau_s * expm1( -tau_s * resolution() ) \
                 - b * tau_c * expm1( -resolution() / tau_c ))
        w = max(0., w)
        c = c * exp(-resolution() / tau_c)
        n = n * exp(-resolution() / tau_n)
"""

Generate the code, build the user module and make the model available to instantiate in NEST:

[3]:
# generate and build code
module_name, neuron_model_name, synapse_model_name = NESTCodeGeneratorUtils.generate_code_for("../../../models/neurons/iaf_psc_delta_neuron.nestml",
                                                                                              nestml_stdp_dopa_model,
                                                                                              post_ports=["post_spikes"],
                                                                                              mod_ports=["mod_spikes"],
                                                                                              logging_level="INFO")

[1,GLOBAL, INFO]: List of files that will be processed:
[2,GLOBAL, INFO]: /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/iaf_psc_delta_neuron.nestml
[3,GLOBAL, INFO]: /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/neuromodulated_stdp_synapse.nestml
[4,GLOBAL, INFO]: Target platform code will be generated in directory: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target'
[5,GLOBAL, INFO]: Target platform code will be installed in directory: '/tmp/nestml_target_2nbwam92'

              -- N E S T --
  Copyright (C) 2004 The NEST Initiative

 Version: 3.6.0-post0.dev0
 Built: Mar 26 2024 08:52:51

 This program is provided AS IS and comes with
 NO WARRANTY. See the file LICENSE for details.

 Problems or suggestions?
   Visit https://www.nest-simulator.org

 Type 'nest.help()' to find out more about NEST.

[6,GLOBAL, INFO]: The NEST Simulator version was automatically detected as: master
[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-integrate_specific_odes/nestml/pynestml/codegeneration/resources_nest/point_neuron'
[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-integrate_specific_odes/nestml/pynestml/codegeneration/resources_nest/point_neuron'
[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-integrate_specific_odes/nestml/pynestml/codegeneration/resources_nest/point_neuron'
[10,GLOBAL, INFO]: The NEST Simulator installation path was automatically detected as: /home/charl/julich/nest-simulator-install
[11,GLOBAL, INFO]: Start processing '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/iaf_psc_delta_neuron.nestml'!
[13,iaf_psc_delta_neuron_nestml, INFO, [51:79;51:79]]: Implicit magnitude conversion from pA to pA buffer with factor 1.0
[14,iaf_psc_delta_neuron_nestml, INFO, [51:15;51:74]]: Implicit magnitude conversion from mV / ms to pA / pF with factor 1.0
[15,GLOBAL, INFO]: Start processing '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/neuromodulated_stdp_synapse.nestml'!
[17,neuromodulated_stdp_synapse_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[18,neuromodulated_stdp_synapse_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[19,neuromodulated_stdp_synapse_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[22,neuromodulated_stdp_synapse_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[23,neuromodulated_stdp_synapse_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[24,neuromodulated_stdp_synapse_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[26,iaf_psc_delta_neuron_nestml, INFO, [51:79;51:79]]: Implicit magnitude conversion from pA to pA buffer with factor 1.0
[27,iaf_psc_delta_neuron_nestml, INFO, [51:15;51:74]]: Implicit magnitude conversion from mV / ms to pA / pF with factor 1.0
[29,neuromodulated_stdp_synapse_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[30,neuromodulated_stdp_synapse_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[31,neuromodulated_stdp_synapse_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[32,GLOBAL, INFO]: State variables that will be moved from synapse to neuron: ['post_tr']
[33,GLOBAL, INFO]: Parameters that will be copied from synapse to neuron: ['tau_tr_post']
[34,GLOBAL, INFO]: Moving state var defining equation(s) post_tr
[35,GLOBAL, INFO]: Moving state variables for equation(s) post_tr
[36,GLOBAL, INFO]: Moving definition of post_tr from synapse to neuron
[37,GLOBAL, INFO]:      Moving statement post_tr += 1.0
[38,GLOBAL, INFO]: In synapse: replacing ``continuous`` type input ports that are connected to postsynaptic neuron with suffixed external variable references
[39,GLOBAL, INFO]: Copying parameters from synapse to neuron...
[40,GLOBAL, INFO]: Copying definition of tau_tr_post from synapse to neuron
[41,GLOBAL, INFO]: Adding suffix to variables in spike updates
[42,GLOBAL, INFO]: In synapse: replacing variables with suffixed external variable references
[43,GLOBAL, INFO]:      • Replacing variable post_tr
[44,GLOBAL, INFO]: ASTSimpleExpression replacement made (var = post_tr__for_neuromodulated_stdp_synapse_nestml) in expression: A_minus * post_tr
[47,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[48,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[49,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
INFO:Analysing input:
INFO:{
    "dynamics": [
        {
            "expression": "V_m' = (-(V_m - E_L)) / tau_m + 0 * (1.0 / 1.0) + (I_e + I_stim) / C_m",
            "initial_values": {
                "V_m": "E_L"
            }
        }
    ],
    "options": {
        "output_timestep_symbol": "__h"
    },
    "parameters": {
        "C_m": "250",
        "E_L": "(-70)",
        "I_e": "0",
        "V_min": "(-oo) * 1",
        "V_reset": "(-70)",
        "V_th": "(-55)",
        "refr_T": "2",
        "tau_m": "10",
        "tau_syn": "2"
    }
}
INFO:Processing global options...
INFO:Processing input shapes...
INFO:
Processing differential-equation form shape V_m with defining expression = "(-(V_m - E_L)) / tau_m + 0 * (1.0 / 1.0) + (I_e + I_stim) / C_m"
INFO:   Returning shape: Shape "V_m" of order 1
INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m
INFO:All known variables: [V_m], all parameters used in ODEs: {tau_m, I_e, C_m, I_stim, E_L}
INFO:No numerical value specified for parameter "I_stim"
INFO:
Processing differential-equation form shape V_m with defining expression = "(-(V_m - E_L)) / tau_m + 0 * (1.0 / 1.0) + (I_e + I_stim) / C_m"
INFO:   Returning shape: Shape "V_m" of order 1
INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m
INFO:Finding analytically solvable equations...
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot
[50,GLOBAL, INFO]: Successfully constructed neuron-synapse pair iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml
[51,GLOBAL, INFO]: Analysing/transforming model 'iaf_psc_delta_neuron_nestml'
[52,iaf_psc_delta_neuron_nestml, INFO, [43:0;94:0]]: Starts processing of the model 'iaf_psc_delta_neuron_nestml'
INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot
INFO:Generating propagators for the following symbols: V_m
INFO:update_expr[V_m] = -E_L*__P__V_m__V_m + E_L + 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
WARNING:Not preserving expression for variable "V_m" as it is solved by propagator solver
INFO:In ode-toolbox: returning outdict =
INFO:[
    {
        "initial_values": {
            "V_m": "E_L"
        },
        "parameters": {
            "C_m": "250.000000000000",
            "E_L": "-70.0000000000000",
            "I_e": "0",
            "tau_m": "10.0000000000000"
        },
        "propagators": {
            "__P__V_m__V_m": "exp(-__h/tau_m)"
        },
        "solver": "analytical",
        "state_variables": [
            "V_m"
        ],
        "update_expressions": {
            "V_m": "-E_L*__P__V_m__V_m + E_L + 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"
        }
    }
]
INFO:Analysing input:
INFO:{
    "dynamics": [
        {
            "expression": "V_m' = (-(V_m - E_L)) / tau_m + 0 * (1.0 / 1.0) + (I_e + I_stim) / C_m",
            "initial_values": {
                "V_m": "E_L"
            }
        },
        {
            "expression": "post_tr__for_neuromodulated_stdp_synapse_nestml' = (-post_tr__for_neuromodulated_stdp_synapse_nestml) / tau_tr_post__for_neuromodulated_stdp_synapse_nestml",
            "initial_values": {
                "post_tr__for_neuromodulated_stdp_synapse_nestml": "0.0"
            }
        }
    ],
    "options": {
        "output_timestep_symbol": "__h"
    },
    "parameters": {
        "C_m": "250",
        "E_L": "(-70)",
        "I_e": "0",
        "V_min": "(-oo) * 1",
        "V_reset": "(-70)",
        "V_th": "(-55)",
        "refr_T": "2",
        "tau_m": "10",
        "tau_syn": "2",
        "tau_tr_post__for_neuromodulated_stdp_synapse_nestml": "20"
    }
}
INFO:Processing global options...
INFO:Processing input shapes...
INFO:
Processing differential-equation form shape V_m with defining expression = "(-(V_m - E_L)) / tau_m + 0 * (1.0 / 1.0) + (I_e + I_stim) / C_m"
INFO:   Returning shape: Shape "V_m" of order 1
INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m
INFO:
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"
INFO:   Returning shape: Shape "post_tr__for_neuromodulated_stdp_synapse_nestml" of order 1
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
INFO:All known variables: [V_m, post_tr__for_neuromodulated_stdp_synapse_nestml], all parameters used in ODEs: {tau_m, I_e, C_m, I_stim, E_L, tau_tr_post__for_neuromodulated_stdp_synapse_nestml}
INFO:No numerical value specified for parameter "I_stim"
INFO:
Processing differential-equation form shape V_m with defining expression = "(-(V_m - E_L)) / tau_m + 0 * (1.0 / 1.0) + (I_e + I_stim) / C_m"
INFO:   Returning shape: Shape "V_m" of order 1
INFO:
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"
INFO:   Returning shape: Shape "post_tr__for_neuromodulated_stdp_synapse_nestml" of order 1
INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m
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
INFO:Finding analytically solvable equations...
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot
[54,GLOBAL, INFO]: Analysing/transforming model 'iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml'
[55,iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, INFO, [43:0;94:0]]: Starts processing of the model 'iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml'
INFO:Shape V_m: reconstituting expression E_L/tau_m - V_m/tau_m + I_e/C_m + I_stim/C_m
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
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot
INFO:Generating propagators for the following symbols: V_m, post_tr__for_neuromodulated_stdp_synapse_nestml
INFO:update_expr[V_m] = -E_L*__P__V_m__V_m + E_L + 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
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
WARNING:Not preserving expression for variable "V_m" as it is solved by propagator solver
WARNING:Not preserving expression for variable "post_tr__for_neuromodulated_stdp_synapse_nestml" as it is solved by propagator solver
INFO:In ode-toolbox: returning outdict =
INFO:[
    {
        "initial_values": {
            "V_m": "E_L",
            "post_tr__for_neuromodulated_stdp_synapse_nestml": "0.0"
        },
        "parameters": {
            "C_m": "250.000000000000",
            "E_L": "-70.0000000000000",
            "I_e": "0",
            "tau_m": "10.0000000000000",
            "tau_tr_post__for_neuromodulated_stdp_synapse_nestml": "20.0000000000000"
        },
        "propagators": {
            "__P__V_m__V_m": "exp(-__h/tau_m)",
            "__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)"
        },
        "solver": "analytical",
        "state_variables": [
            "V_m",
            "post_tr__for_neuromodulated_stdp_synapse_nestml"
        ],
        "update_expressions": {
            "V_m": "-E_L*__P__V_m__V_m + E_L + 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",
            "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"
        }
    }
]
INFO:Analysing input:
INFO:{
    "dynamics": [
        {
            "expression": "pre_tr' = (-pre_tr) / tau_tr_pre",
            "initial_values": {
                "pre_tr": "0.0"
            }
        }
    ],
    "options": {
        "output_timestep_symbol": "__h"
    },
    "parameters": {
        "A_minus": "1.5",
        "A_plus": "1.0",
        "A_vt": "1.0",
        "Wmax": "200.0",
        "Wmin": "0.0",
        "b": "0.0",
        "d": "1",
        "tau_c": "1000",
        "tau_n": "200",
        "tau_tr_post": "20",
        "tau_tr_pre": "20"
    }
}
INFO:Processing global options...
INFO:Processing input shapes...
INFO:
Processing differential-equation form shape pre_tr with defining expression = "(-pre_tr) / tau_tr_pre"
INFO:   Returning shape: Shape "pre_tr" of order 1
INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre
INFO:All known variables: [pre_tr], all parameters used in ODEs: {tau_tr_pre}
INFO:
Processing differential-equation form shape pre_tr with defining expression = "(-pre_tr) / tau_tr_pre"
INFO:   Returning shape: Shape "pre_tr" of order 1
INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre
INFO:Finding analytically solvable equations...
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot
INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot
[57,GLOBAL, INFO]: Analysing/transforming synapse neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.
[58,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [2:0;66:0]]: Starts processing of the model 'neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml'
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot
INFO:Generating propagators for the following symbols: pre_tr
INFO:update_expr[pre_tr] = __P__pre_tr__pre_tr*pre_tr
WARNING:Not preserving expression for variable "pre_tr" as it is solved by propagator solver
INFO:In ode-toolbox: returning outdict =
INFO:[
    {
        "initial_values": {
            "pre_tr": "0.0"
        },
        "parameters": {
            "tau_tr_pre": "20.0000000000000"
        },
        "propagators": {
            "__P__pre_tr__pre_tr": "exp(-__h/tau_tr_pre)"
        },
        "solver": "analytical",
        "state_variables": [
            "pre_tr"
        ],
        "update_expressions": {
            "pre_tr": "__P__pre_tr__pre_tr*pre_tr"
        }
    }
]
[60,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[61,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[62,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[64,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[65,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[66,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[67,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.cpp
[68,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.h
[69,iaf_psc_delta_neuron_nestml, INFO, [43:0;94:0]]: Successfully generated code for the model: 'iaf_psc_delta_neuron_nestml' in: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
[70,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp
[71,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.h
[72,iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, INFO, [43:0;94:0]]: Successfully generated code for the model: 'iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml' in: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
Generating code for the synapse neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.
[73,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h
[74,neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml, INFO, [2:0;66:0]]: Successfully generated code for the model: 'neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml' in: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
[75,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module.cpp
[76,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module.h
[77,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/CMakeLists.txt
[78,GLOBAL, INFO]: Successfully generated NEST module code in '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
CMake Warning (dev) at CMakeLists.txt:95 (project):
  cmake_minimum_required() should be called prior to this top-level project()
  call.  Please see the cmake-commands(7) manual for usage documentation of
  both commands.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The CXX compiler identification is GNU 12.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done

-------------------------------------------------------
nestml_9557cf48dd76469a8f5dc4ea86b34c42_module Configuration Summary
-------------------------------------------------------

C++ compiler         : /usr/bin/c++
Build static libs    : OFF
C++ compiler flags   :
NEST compiler flags  :  -std=c++17 -Wall -fopenmp -O2 -fdiagnostics-color=auto
NEST include dirs    :  -I/home/charl/julich/nest-simulator-install/include/nest -I/usr/include -I/usr/include -I/usr/include
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

-------------------------------------------------------

You can now build and install 'nestml_9557cf48dd76469a8f5dc4ea86b34c42_module' using
  make
  make install

The library file libnestml_9557cf48dd76469a8f5dc4ea86b34c42_module.so will be installed to
  /tmp/nestml_target_2nbwam92
The module can be loaded into NEST using
  (nestml_9557cf48dd76469a8f5dc4ea86b34c42_module) Install       (in SLI)
  nest.Install(nestml_9557cf48dd76469a8f5dc4ea86b34c42_module)   (in PyNEST)

CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.26)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done (0.5s)
-- Generating done (0.0s)
-- Build files have been written to: /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target
[ 25%] Building CXX object CMakeFiles/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module_module.dir/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module.o
[ 50%] Building CXX object CMakeFiles/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module_module.dir/iaf_psc_delta_neuron_nestml.o
[ 75%] Building CXX object CMakeFiles/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module_module.dir/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.o
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘void iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::init_state_internal_()’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:183:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  183 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp: In member function ‘virtual void iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml::update(const nest::Time&, long int, long int)’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:287:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]
  287 |     for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)
      |                      ~~^~~~~~~~~~~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:282:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  282 |     auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };
      |          ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.cpp: In member function ‘void iaf_psc_delta_neuron_nestml::init_state_internal_()’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.cpp:173:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  173 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.cpp: In member function ‘virtual void iaf_psc_delta_neuron_nestml::update(const nest::Time&, long int, long int)’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.cpp:266:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]
  266 |     for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)
      |                      ~~^~~~~~~~~~~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_delta_neuron_nestml.cpp:261:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  261 |     auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };
      |          ^~~~~
In file included from /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module.cpp:36:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierPtrRport>; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:671:106:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:862:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  862 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::recompute_internal_variables() [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:876:3:   required from ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierPtrRport]’
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierPtrRport>; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:671:106:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:849:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  849 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:671:106:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:862:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  862 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::recompute_internal_variables() [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:876:3:   required from ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierIndex]’
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/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_delta_neuron_nestml; std::string = std::__cxx11::basic_string<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:671:106:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:849:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  849 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:589:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  589 |         auto get_t = [_tr_t](){ return _tr_t; };   // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:614:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  614 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:649:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  649 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:517:18: warning: unused variable ‘__resolution’ [-Wunused-variable]
  517 |     const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                  ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:519:10: warning: variable ‘get_thread’ set but not used [-Wunused-but-set-variable]
  519 |     auto get_thread = [tid]()
      |          ^~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::trigger_update_weight(size_t, const std::vector<nest::spikecounter>&, double, const CommonPropertiesType&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int; CommonPropertiesType = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:446:38:   required from ‘void nest::Connector<ConnectionT>::trigger_update_weight(long int, size_t, const std::vector<nest::spikecounter>&, double, const std::vector<nest::ConnectorModel*>&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:433:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:1009:18: warning: unused variable ‘_tr_t’ [-Wunused-variable]
 1009 |     const double _tr_t = start->t_;
      |                  ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:991:10: warning: unused variable ‘timestep’ [-Wunused-variable]
  991 |   double timestep = 0;
      |          ^~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:589:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  589 |         auto get_t = [_tr_t](){ return _tr_t; };   // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:614:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  614 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:649:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  649 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:517:18: warning: unused variable ‘__resolution’ [-Wunused-variable]
  517 |     const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                  ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:519:10: warning: variable ‘get_thread’ set but not used [-Wunused-but-set-variable]
  519 |     auto get_thread = [tid]()
      |          ^~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::trigger_update_weight(size_t, const std::vector<nest::spikecounter>&, double, const CommonPropertiesType&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int; CommonPropertiesType = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:446:38:   required from ‘void nest::Connector<ConnectionT>::trigger_update_weight(long int, size_t, const std::vector<nest::spikecounter>&, double, const std::vector<nest::ConnectorModel*>&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:433:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:1009:18: warning: unused variable ‘_tr_t’ [-Wunused-variable]
 1009 |     const double _tr_t = start->t_;
      |                  ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:991:10: warning: unused variable ‘timestep’ [-Wunused-variable]
  991 |   double timestep = 0;
      |          ^~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::process_mod_spikes_spikes_(const std::vector<nest::spikecounter>&, double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:563:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:699:12: warning: unused variable ‘cd’ [-Wunused-variable]
  699 |     double cd;
      |            ^~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::update_internal_state_(double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:584:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:935:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  935 |     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
      |          ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::process_mod_spikes_spikes_(const std::vector<nest::spikecounter>&, double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:563:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:699:12: warning: unused variable ‘cd’ [-Wunused-variable]
  699 |     double cd;
      |            ^~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h: In instantiation of ‘void nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::update_internal_state_(double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:584:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<targetidentifierT>::send(nest::Event&, size_t, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_delta_neuron_nestml.h:935:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  935 |     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
      |          ^~~~~
[100%] Linking CXX shared module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module.so
[100%] Built target nestml_9557cf48dd76469a8f5dc4ea86b34c42_module_module
[100%] Built target nestml_9557cf48dd76469a8f5dc4ea86b34c42_module_module
Install the project...
-- Install configuration: ""
-- Installing: /tmp/nestml_target_2nbwam92/nestml_9557cf48dd76469a8f5dc4ea86b34c42_module.so

Running the simulation in NEST

Let’s define a function that will instantiate a simple network with one presynaptic cell and one postsynaptic cell connected by a single synapse, then run a simulation and plot the results.

image-2.png

[4]:
def run_network(pre_spike_time, post_spike_time, vt_spike_times,
                neuron_model_name,
                synapse_model_name,
                resolution=.1, # [ms]
                delay=1., # [ms]
                lmbda=1E-6,
                sim_time=None,  # if None, computed from pre and post spike times
                synapse_parameters=None,  # optional dictionary passed to the synapse
                fname_snip="",
                debug=False):

    #nest.set_verbosity("M_WARNING")
    nest.set_verbosity("M_ALL")

    nest.ResetKernel()
    nest.Install(module_name)
    nest.SetKernelStatus({'resolution': resolution})

    # create spike_generators with these times
    pre_sg = nest.Create("spike_generator",
                         params={"spike_times": [pre_spike_time]})
    post_sg = nest.Create("spike_generator",
                          params={"spike_times": [post_spike_time]})
    vt_sg = nest.Create("spike_generator",
                            params={"spike_times": vt_spike_times})

    # create  volume transmitter
    vt = nest.Create("volume_transmitter")
    vt_parrot = nest.Create("parrot_neuron")
    nest.Connect(vt_sg, vt_parrot)
    nest.Connect(vt_parrot, vt, syn_spec={"synapse_model": "static_synapse",
                                          "weight": 1.,
                                          "delay": 1.})   # delay is ignored!

    # set up custom synapse models
    wr = nest.Create('weight_recorder')
    nest.CopyModel(synapse_model_name, "stdp_nestml_rec",
                {"weight_recorder": wr[0],
                 "w": 1.,
                 "delay": delay,
                 "receptor_type": 0,
                 "volume_transmitter": vt,
                 "tau_tr_pre": 10.,
                })

    # create parrot neurons and connect spike_generators
    pre_neuron = nest.Create("parrot_neuron")
    post_neuron = nest.Create(neuron_model_name)

    spikedet_pre = nest.Create("spike_recorder")
    spikedet_post = nest.Create("spike_recorder")
    spikedet_vt = nest.Create("spike_recorder")

    #mm = nest.Create("multimeter", params={"record_from" : ["V_m"]})

    nest.Connect(pre_sg, pre_neuron, "one_to_one", syn_spec={"delay": 1.})
    nest.Connect(post_sg, post_neuron, "one_to_one", syn_spec={"delay": 1., "weight": 9999.})
    nest.Connect(pre_neuron, post_neuron, "all_to_all", syn_spec={'synapse_model': 'stdp_nestml_rec'})
    #nest.Connect(mm, post_neuron)

    nest.Connect(pre_neuron, spikedet_pre)
    nest.Connect(post_neuron, spikedet_post)
    nest.Connect(vt_parrot, spikedet_vt)

    # get STDP synapse and weight before protocol
    syn = nest.GetConnections(source=pre_neuron, synapse_model="stdp_nestml_rec")
    if synapse_parameters is None:
        synapse_parameters = {}
    nest.SetStatus(syn, synapse_parameters)

    initial_weight = nest.GetStatus(syn)[0]["w"]
    np.testing.assert_allclose(initial_weight, 1)
    nest.Simulate(sim_time)
    updated_weight = nest.GetStatus(syn)[0]["w"]

    actual_t_pre_sp = nest.GetStatus(spikedet_pre)[0]["events"]["times"][0]
    actual_t_post_sp = nest.GetStatus(spikedet_post)[0]["events"]["times"][0]

    pre_spike_times_ = nest.GetStatus(spikedet_pre, "events")[0]["times"]
    assert len(pre_spike_times_) == 1 and pre_spike_times_[0] > 0

    post_spike_times_ = nest.GetStatus(spikedet_post, "events")[0]["times"]
    assert len(post_spike_times_) == 1 and post_spike_times_[0] > 0

    vt_spike_times_ = nest.GetStatus(spikedet_vt, "events")[0]["times"]
    assert len(vt_spike_times_) == 1 and vt_spike_times_[0] > 0

    #dt = actual_t_post_sp - actual_t_pre_sp
    dt = 0.
    dw = updated_weight

    return dt, dw
[5]:
def run_vt_spike_timing_experiment(neuron_model_name, synapse_model_name, synapse_parameters=None):
    sim_time = 10000.    # [ms] -- make sure to simulate for much longer than the eligibility trace
                         #         time constant, which is typically the slowest time constant in
                         #         the system, PLUS the time of the latest vt spike
    pre_spike_time = 1.  # [ms]
    post_spike_time = 3. # [ms]
    delay = .5           # dendritic delay [ms]

    dt_vec = []
    dw_vec = []
    for vt_spike_time in np.round(np.linspace(4, 5000, 12)).astype(float):  # sim_time - 10 * delay
        dt, dw = run_network(pre_spike_time, post_spike_time, [vt_spike_time],
                          neuron_model_name,
                          synapse_model_name,
                          delay=delay, # [ms]
                          synapse_parameters=synapse_parameters,
                          sim_time=sim_time)
        dt_vec.append(vt_spike_time)
        dw_vec.append(dw)

    return dt_vec, dw_vec, delay
[6]:
fig, ax = plt.subplots()
for A_vt in [1., -1.]:
    dt_vec, dw_vec, delay = run_vt_spike_timing_experiment(neuron_model_name,
                                                       synapse_model_name,
                                                       synapse_parameters={"A_vt": A_vt})
    ax.plot(dt_vec, dw_vec, marker='o', label="$A_{vt}$ = " + str(A_vt))

ax.set_xlabel("Time of dopa spike [ms]")
ax.set_ylabel("Weight at $t = \infty$")
ax.legend()

Apr 19 11:33:12 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:12 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:12 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:12 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:12 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:12 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:12 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:12 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:12 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:12 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:12 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:12 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:12 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:13 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:13 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:13 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:13 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:14 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:14 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:14 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:14 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:14 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:14 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:14 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:14 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:14 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:14 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:14 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:14 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:14 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:14 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:14 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:14 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:14 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:14 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:14 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

Apr 19 11:33:14 NodeManager::prepare_nodes [Info]:
    Preparing 11 nodes for simulation.

Apr 19 11:33:14 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 11
    Simulation time (ms): 10000
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:14 SimulationManager::run [Info]:
    Simulation finished.
[6]:
<matplotlib.legend.Legend at 0x7fb610f89010>
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_10_2.png

Learning through dopamine

In this section we simulate the spiking activity of a group of neurons with the learning rule as described above. Here, we perform the simulation on 10 iaf_psc_delta neurons in which each of the neurons receives input from an independent Poisson source of 50Hz. These neurons are also connected to a single dopamine spike source. These dopamine spikes are delivered to the neurons as reward and punishment signals at specific time intervals.

image-2.png

Single dopamine source, multiple independent pre-post cell pairs (3 pairs shown).

[7]:
# Labels for x and y axes for traces used in plotting functions
labels = {"c": {"x_label": "Times [ms]", "y_label": "Eligibility \ntrace (c)"},
          "w": {"x_label": "Times [ms]", "y_label": "Weight \ntrace (w)"},
          "pre_tr": {"x_label": "Times [ms]", "y_label": "Presynaptic \ntrace (pre_tr)"},
          "n": {"x_label": "Times [ms]", "y_label": "Doapmine \ntrace (n)"}
         }
[8]:
# Plot trace values for a neurons or set of neurons
def plot_traces_for_neuron(log, recordables, neuron_numbers=None, pos_dopa_spike_times=None, neg_dopa_spike_times=None):
    """
    Plots the trace values for the given list of neuron IDs
    """
    times = log["t"]
    trace_values = {}
    # Initialize the list if "neuron_numbers" is None, which corresponds to all neurons
    if neuron_numbers is None:
        neuron_numbers = np.array([i+1 for i in range(10)])

    # The actual neuron numbers are -1 of the given numbers
    neuron_numbers_actual = np.array(neuron_numbers) - 1

    # Get the values of recordables for the given neuron IDs
    for recordable in recordables:
        trace_values[recordable] = np.array(log[recordable])[:, neuron_numbers_actual]

    n_neurons = len(neuron_numbers)
    palette = plt.get_cmap('tab10')

    for i in range(n_neurons):
        fig, ax = plt.subplots(nrows=len(recordables), sharex=True, squeeze=False)
        ax = ax.flatten()
        fig.suptitle("Trace values for Neuron " + str(neuron_numbers[i]))
        for j, recordable in enumerate(recordables):
            ax[j].plot(times, trace_values[recordable][:, i], label="neuron " + str(neuron_numbers[i]), color=palette(neuron_numbers_actual[i]))
            ax[j].set_xlim(xmin=0)
            ax[j].set_ylabel(labels[recordable]["y_label"], rotation=0, ha="right", va="center")
            ax[j].legend(loc="upper right", labelspacing=0.)
            if pos_dopa_spike_times is not None:
                ax[j].scatter(pos_dopa_spike_times, np.ones_like(pos_dopa_spike_times) * np.amin(trace_values[recordable][:, i]), marker="^", c="green", s=20)
            if neg_dopa_spike_times is not None:
                ax[j].scatter(neg_dopa_spike_times, np.ones_like(neg_dopa_spike_times) * np.amin(trace_values[recordable][:, i]), marker="^", c="red", s=20)
        fig.tight_layout(rect=[0, 0.03, 1, 0.95])
[9]:
def plot_spiking_activity(neuron_spike_times, pos_dopa_spike_times, neg_dopa_spike_times, source_ids, total_t_sim):
    fig, ax = plt.subplots()
    palette = plt.get_cmap('tab10')

    n_neurons = len(neuron_spike_times)
    y_ticks = [i * 10 for i in range(n_neurons, 0, -1)]
    for i in range(n_neurons):
        ax.scatter(neuron_spike_times[i], np.ones_like(neuron_spike_times[i]) * y_ticks[i], color=palette(i), s=1)

    if pos_dopa_spike_times is not None:
        ax.scatter(pos_dopa_spike_times, np.zeros_like(pos_dopa_spike_times), marker="^", c="green", s=100)
    if neg_dopa_spike_times is not None:
        ax.scatter(neg_dopa_spike_times, np.zeros_like(pos_dopa_spike_times), marker="^", c="red", s=100)

    ax.set_xlim(0., total_t_sim)
    ax.set_ylim(ymin=0)
    ax.set_xlim(xmin=0)
    ax.set_yticks(y_ticks)
    ax.set_yticklabels(source_ids)
    ax.set_xlabel("Time [ms]")
    ax.set_ylabel("Neuron ID")
    plt.tight_layout()
    fig.show()

Here, we setup the network with 10 neurons each connected to a Poisson source. The neurons are also connected to a volume transmitter that acts as a dopamine spike source.

[10]:
# simulation parameters
resolution = .1

# network parameters
n_neurons = 10
tau_n = 50.
tau_c = 100.
pre_poisson_rate = 50.  # [s^-1]
initial_weight = 5.6  # controls initial firing rate before potentiation

# stimulus parameters
pos_dopa_spike_times = [2000, 3000, 4000]
neg_dopa_spike_times = [8000, 9000, 10000]
A_vt = [10., -10.]


nest.set_verbosity("M_ALL")

nest.ResetKernel()
nest.Install(module_name)
nest.SetKernelStatus({'resolution': resolution})

# Create the neurons
neurons = nest.Create(neuron_model_name, n_neurons)

# Create a poisson generator
poisson_gen = nest.Create("poisson_generator", n_neurons, params={"rate": pre_poisson_rate})
parrot_neurons = nest.Create("parrot_neuron", n_neurons)

# Spike generators
vt_sg = nest.Create("spike_generator", params={"spike_times": pos_dopa_spike_times + neg_dopa_spike_times})

# Spike recorder
spike_rec = nest.Create("spike_recorder")
spike_rec_vt = nest.Create("spike_recorder")
spike_re_pt = nest.Create("spike_recorder")

# create  volume transmitter
vt = nest.Create("volume_transmitter")
vt_parrot = nest.Create("parrot_neuron")
nest.Connect(vt_sg, vt_parrot, syn_spec={"weight": -1.})
nest.Connect(vt_parrot, vt, syn_spec={"synapse_model": "static_synapse",
                                      "weight": 1.,
                                      "delay": 1.})

# multimeters
mms = [nest.Create("multimeter", params= {"record_from": ["V_m"]}) for _ in range(n_neurons)]

# set up custom synapse models
wr = nest.Create('weight_recorder')
nest.CopyModel(synapse_model_name, "stdp_nestml_rec",
            {"weight_recorder": wr[0],
             "w": initial_weight,
             "d": delay,
             "receptor_type": 0,
             "volume_transmitter": vt,
             "tau_n": tau_n,
             "tau_c": tau_c,
            })

# Connect everything
nest.Connect(poisson_gen, parrot_neurons, "one_to_one")
nest.Connect(parrot_neurons, neurons, "one_to_one", syn_spec="stdp_nestml_rec")

nest.Connect(neurons, spike_rec)
nest.Connect(vt_parrot, spike_rec_vt)

for i in range(n_neurons):
    nest.Connect(mms[i], neurons[i])

Apr 19 11:33:15 Install [Info]:
    loaded module nestml_9557cf48dd76469a8f5dc4ea86b34c42_module

Apr 19 11:33:15 iaf_psc_delta_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:15 iaf_psc_delta_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:33:15 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.

This is a helper function that runs the simulation in chunks of time intervals and records the values of the synapse properties passed as recordables.

[11]:
def run_simulation_in_chunks(sim_chunks, sim_time, recordables, neurons):
    sim_time_per_chunk = sim_time / sim_chunks

    # Init log to collect the values of all recordables
    log = {}
    log["t"] = []

    # Initialize all the arrays
    # Additional one entry is to store the trace value before the simulation begins
    for rec in recordables:
        log[rec] = (sim_chunks + 1) * [[]]

    # Get the value of trace values before the simulation
    syn = nest.GetConnections(target=neurons, synapse_model="stdp_nestml_rec")
    for rec in recordables:
        log[rec][0] = syn.get(rec)

    log["t"].append(nest.GetKernelStatus("biological_time"))

    # Run the simulation in chunks
    nest.Prepare()
    for i in range(sim_chunks):
        print(str(i) + " out of " + str(sim_chunks))
        # Set the reward / punishment for dopa spikes
        # Set the punishment signal only when the timed during simulation == the first negative dopa spike time
        # Otherwise set the reward signal
        sim_start_time = i * sim_time_per_chunk
        sim_end_time = sim_start_time + sim_time_per_chunk

        if sim_end_time > neg_dopa_spike_times[0]:
            syn.set({"A_vt": A_vt[1]})
        else:
            syn.set({"A_vt": A_vt[0]})

        nest.Run(sim_time//sim_chunks)

        # log current values
        log["t"].append(nest.GetKernelStatus("biological_time"))

        # Get the value of trace after the simulation
        for rec in recordables:
            log[rec][i + 1] = syn.get(rec)
    nest.Cleanup()

    return log

Run simulation in NEST

Let’s run the simulation and record the neuron spike times and synapse parameters like the eligibility trace c, the presynaptic trace pre_tr, the dopamine trace n, and the weight w.

[12]:
# Run simulation
sim_time = 12000
n_chunks = 400
recordables = ["c", "pre_tr", "n", "w"]
log = run_simulation_in_chunks(n_chunks, sim_time, recordables, neurons)

times = spike_rec.get("events")["times"]
senders = spike_rec.get("events")["senders"]

times_vt = spike_rec_vt.get("events")["times"]

connections = nest.GetConnections(neurons)
source_ids = connections.get("source")  # source IDs of all neurons
source_ids = list(set(source_ids))

neuron_spike_times = [[] for _ in range(n_neurons)]
for i in range(n_neurons):
    neuron_spike_times[i] = times[senders == source_ids[i]]
0 out of 400

Apr 19 11:33:15 NodeManager::prepare_nodes [Info]:
    Preparing 47 nodes for simulation.
1 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
2 out of 400

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
3 out of 400
4 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
5 out of 400
6 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
7 out of 400
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
8 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
9 out of 400
10 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
11 out of 400
12 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
13 out of 400
14 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
15 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
16 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
17 out of 400
18 out of 400

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
19 out of 400
20 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
21 out of 400
22 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
23 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
24 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
25 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
26 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
27 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
28 out of 400
29 out of 400
30 out of 400
31 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
32 out of 400

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 Simulat33 out of 400
34 out of 400
35 out of 400
ionManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
36 out of 400
37 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
38 out of 400

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
39 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
40 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
41 out of 400
42 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
43 out of 400
44 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
45 out of 400
46 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
47 out of 400
48 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
49 out of 400
50 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
51 out of 400
52 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
53 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
54 out of 400
55 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
56 out of 400
57 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
58 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
59 out of 400
60 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
61 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
62 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
63 out of 400
64 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
65 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
66 out of 400
67 out of 400

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
68 out of 400
69 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
70 out of 400
71 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
72 out of 400
73 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
74 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
75 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
76 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
77 out of 400
78 out of 400

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
79 out of 400
80 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
81 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
82 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
83 out of 400
84 out of 400

Apr 19 11:33:15 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:15 SimulationManager::run [Info]:
    Simulation finished.
85 out of 400
86 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
87 out of 400
88 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
89 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
90 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
91 out of 400
92 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
93 out of 400
94 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
95 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
96 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
97 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
98 out of 400
99 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
100 out of 400
101 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
102 out of 400
103 out of 400
104 out of 400
105 out of 400
106 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
107 out of 400
108 out of 400
109 out of 400
110 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 Simulat111 out of 400
ionManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
112 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
113 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
114 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
115 out of 400
116 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
117 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
118 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
119 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
120 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
121 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
122 out of 400
123 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
124 out of 400
125 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
126 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
127 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
128 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
129 out of 400
130 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
131 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
132 out of 400
133 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
134 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
135 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
136 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
137 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
138 out of 400
139 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
140 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
141 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
142 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
143 out of 400
144 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
145 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
146 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
147 out of 400
148 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
149 out of 400
150 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
151 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
152 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
153 out of 400
154 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
155 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
156 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
157 out of 400
158 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
159 out of 400
160 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
161 out of 400
162 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
163 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
164 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
165 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
166 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
167 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
168 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
169 out of 400
170 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
171 out of 400
172 out of 400
173 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
174 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
175 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
176 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
177 out of 400
178 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
179 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
180 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
181 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
182 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
183 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
184 out of 400
185 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
186 out of 400
187 out of 400
188 out of 400
189 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
190 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
191 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
192 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
193 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
194 out of 400
195 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
196 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
197 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
198 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
199 out of 400
200 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
201 out of 400
202 out of 400
203 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
204 out of 400
205 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
206 out of 400
207 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
208 out of 400

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
209 out of 400
210 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
211 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
212 out of 400
213 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
214 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
215 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
216 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
217 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
218 out of 400
219 out of 400
220 out of 400
221 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
222 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
223 out of 400
224 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
225 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
226 out of 400
227 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
228 out of 400
229 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
230 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
231 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
232 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
233 out of 400
234 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
235 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:16 SimulationManager::run [Info]:
    Simulation finished.
236 out of 400

Apr 19 11:33:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
237 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
238 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
239 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
240 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
241 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
242 out of 400
243 out of 400
244 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
245 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
246 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
247 out of 400
248 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
249 out of 400
250 out of 400
251 out of 400

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
252 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
253 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
254 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
255 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
256 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
257 out of 400
258 out of 400
259 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
260 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
261 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
262 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
263 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
264 out of 400
265 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
266 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
267 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
268 out of 400
269 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
270 out of 400
271 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
272 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
273 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
274 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
275 out of 400
276 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
277 out of 400
278 out of 400
279 out of 400
280 out of 400
281 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
282 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 Simulat283 out of 400
ionManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
284 out of 400
285 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
286 out of 400
287 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
288 out of 400
289 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
290 out of 400
291 out of 400
292 out of 400
293 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
294 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
295 out of 400
296 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
297 out of 400
298 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
299 out of 400
300 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
301 out of 400
302 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
303 out of 400
304 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
305 out of 400
306 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
307 out of 400
308 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
309 out of 400
310 out of 400
311 out of 400
312 out of 400
313 out of 400
314 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
315 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
316 out of 400
317 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
318 out of 400
319 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
320 out of 400
321 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
322 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
323 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
324 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
325 out of 400
326 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
327 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
328 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
329 out of 400
330 out of 400

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
331 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
332 out of 400
333 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
334 out of 400
335 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
336 out of 400
337 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
338 out of 400
339 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
340 out of 400
341 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
342 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
343 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
344 out of 400
345 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
346 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
347 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
348 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
349 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
350 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
351 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
352 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
353 out of 400
354 out of 400
355 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
356 out of 400
357 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 Simulat358 out of 400
ionManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
359 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
360 out of 400
361 out of 400
362 out of 400
363 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
364 out of 400
365 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
366 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
367 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
368 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
369 out of 400
370 out of 400

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
371 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
372 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
373 out of 400
374 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
375 out of 400
376 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:17 SimulationManager::run [Info]:
    Simulation finished.
377 out of 400

Apr 19 11:33:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
378 out of 400
379 out of 400

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
380 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
381 out of 400

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
382 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
383 out of 400
384 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
385 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
386 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
387 out of 400
388 out of 400

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
389 out of 400
390 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
391 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
392 out of 400
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
393 out of 400

394 out of 400
Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
395 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI
396 out of 400
397 out of 400

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.
398 out of 400
399 out of 400

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Apr 19 11:33:18 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 47
    Simulation time (ms): 30
    Number of OpenMP threads: 1
    Not using MPI

Apr 19 11:33:18 SimulationManager::run [Info]:
    Simulation finished.

Spiking activity

[13]:
# Plot the spiking activity
plot_spiking_activity(neuron_spike_times, pos_dopa_spike_times, neg_dopa_spike_times, source_ids, sim_time)
/tmp/ipykernel_335797/2151756254.py:23: UserWarning:FigureCanvasAgg is non-interactive, and thus cannot be shown
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_22_1.png

From the spiking activity of the neurons, we can see that the firing rate of the neurons increases after the dopamine spikes or reward signals (green triangles in the plot) are applied to the synapses. Consequently, when the punishment signals are applied (red triangles), the firing rate decreases. In order to understand the dynamics, let’s plot the different trace variables of the synapse.

Plot the trace values

Let’s plot the trace values and the weight for each synapse. Note that the dopamine trace is the same for every synapse.

[14]:
# Plot trace values for all neurons
plot_traces_for_neuron(log, ["c", "w", "n"], pos_dopa_spike_times=pos_dopa_spike_times, neg_dopa_spike_times=neg_dopa_spike_times)
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_0.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_1.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_2.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_3.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_4.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_5.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_6.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_7.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_8.png
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_25_9.png

As we can see, the eligibility trace values for neurons 1, 2, 4, 5, and 9 are large when the dopamine spikes are applied, which increases the weights of these neurons, resulting in stronger firing. If the dopamine spikes arrive while the eligibility trace is close to zero, the weight does not increase or increases only very little.

In our simulation above, we set a low value of 50 ms for the time constant of the dopamine trace \(\tau_n\). This means that the dopamine signal does not sustain for a long time, allowing only some neurons that fire around the time when the dopamine spikes (reward signal) are applied have their synapses strengthened (see the weight trace plots) and consequenty increase their firing rate. Similarly, the firing rate is decreased when the dopamine spikes (punishment signals) are applied. For neuron 9, the punishment signal doesn’t seem to affect the firing rate. This behavior can be explained by the time constant of the signals and the very large weights after the initial potentiation, resulting in sustained firing.

Play around with the initial weight value w and dopamine time constant \(\tau_n\) to simulate and see the effects of these values on firing rates and trace values.

Noisy Cue-Association: Temporal Credit-Assignment Task

In this experiment, the synapse is embedded in a network consisting of 800 excitatory, and 200 inhibitory neurons, that are randomly and sparsely connected. The network is in the balanced state, meaning that excitatory currents are roughly matched in mean amplitude over time, and the neurons have a membrane potential close to the firing threshold, firing only sparsely and with statistics approaching that of a Poisson process [4].

Using this network, we illustrate a classical (Pavlovian) conditioning experiment: rewarding a conditioned stimulus \(S_1\) embedded in a continuous stream of irrelevant but equally salient stimuli [3]. The conditioned stimulus is repeatedly presented to the network, causing a transient of activity against the background of low-rate random background firing. The CS is always followed by a reward, which reinforces the recurrent excitatory pathways in the network.

To simulate the experiment, n_subgroups random sets of neurons (each representing stimulus \(S_1\) through \(S_\text{n\_subgroups}\)) are chosen from the pool of excitatory and inhibitory neurons in the network. To present a stimulus to the network, we create n_subgroups spike generators (named stim_sg), and connect each to its individual target group of subgroup_size neurons in the network (here, 50) with a very large weight, so that the stimulus spike generator firing will cause all of the neurons in the subgroup to fire.

A continuous input stream is generated, consisting of stimuli \(S_i (1 \leq i \leq \text{n\_subgroups})\) in a random order with random intervals of rate stimulus_rate and at least min_stimulus_presentation_delay. After every presentation of the CS (\(S_1\)), a reward in the form of an increase of extra-cellular dopamine is delivered to all plastic synapses in the network, after a random delay between min_dopa_reinforcement_delay and max_dopa_reinforcement_delay. These delays were chosen lower than in the original publications ([1], [3]) to keep the simulation times low for this interactive tutorial. The delay is large enough to allow irrelevant input stimuli to be presented during the waiting period; these can be considered as distractors.

At the beginning of the experiment the neurons representing each stimulus \(S_i\) respond equally. However, after many trials, the network starts to show reinforced response to the CS (\(S_1\)). Because synapses coming out of neurons representing \(S_1\) are always tagged with the eligibility trace when the reward is delivered, whereas the synapses connected to neurons representing irrelevant stimuli will only be occasionally tagged, the average strength of synaptic connections from neurons representing stimulus \(S_1\) becomes stronger than the mean synaptic connection strength in the rest of the network. Therefore, the other neurons in the network learn to listen more closely to the stimulus \(S_1\), because the activation of this pathway causes a reward.

image.png

This network uses neurons with a decaying-exponential shaped postsynaptic current. Let’s first generate the code for those.

[15]:
# generate and build code

module_name, neuron_model_name, synapse_model_name = NESTCodeGeneratorUtils.generate_code_for("../../../models/neurons/iaf_psc_exp_neuron.nestml",
                                                                                              nestml_stdp_dopa_model,
                                                                                              post_ports=["post_spikes"],
                                                                                              mod_ports=["mod_spikes"],
                                                                                              logging_level="INFO")
[1,GLOBAL, INFO]: List of files that will be processed:
[2,GLOBAL, INFO]: /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/iaf_psc_exp_neuron.nestml
[3,GLOBAL, INFO]: /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/neuromodulated_stdp_synapse.nestml
[4,GLOBAL, INFO]: Target platform code will be generated in directory: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target'
[5,GLOBAL, INFO]: Target platform code will be installed in directory: '/tmp/nestml_target_nxqmze5r'

              -- N E S T --
  Copyright (C) 2004 The NEST Initiative

 Version: 3.6.0-post0.dev0
 Built: Mar 26 2024 08:52:51

 This program is provided AS IS and comes with
 NO WARRANTY. See the file LICENSE for details.

 Problems or suggestions?
   Visit https://www.nest-simulator.org

 Type 'nest.help()' to find out more about NEST.

[6,GLOBAL, INFO]: The NEST Simulator version was automatically detected as: master
[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-integrate_specific_odes/nestml/pynestml/codegeneration/resources_nest/point_neuron'
[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-integrate_specific_odes/nestml/pynestml/codegeneration/resources_nest/point_neuron'
[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-integrate_specific_odes/nestml/pynestml/codegeneration/resources_nest/point_neuron'
[10,GLOBAL, INFO]: The NEST Simulator installation path was automatically detected as: /home/charl/julich/nest-simulator-install
[11,GLOBAL, INFO]: Start processing '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/iaf_psc_exp_neuron.nestml'!
[13,iaf_psc_exp_neuron_nestml, INFO, [67:39;67:63]]: Implicit magnitude conversion from pA to pA buffer with factor 1.0
[14,iaf_psc_exp_neuron_nestml, INFO, [67:15;67:30]]: Implicit magnitude conversion from mV / ms to pA / pF with factor 1.0
[15,GLOBAL, INFO]: Start processing '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/neuromodulated_stdp_synapse.nestml'!
[17,neuromodulated_stdp_synapse_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[18,neuromodulated_stdp_synapse_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[19,neuromodulated_stdp_synapse_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[22,neuromodulated_stdp_synapse_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[23,neuromodulated_stdp_synapse_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[24,neuromodulated_stdp_synapse_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[26,iaf_psc_exp_neuron_nestml, INFO, [67:39;67:63]]: Implicit magnitude conversion from pA to pA buffer with factor 1.0
[27,iaf_psc_exp_neuron_nestml, INFO, [67:15;67:30]]: Implicit magnitude conversion from mV / ms to pA / pF with factor 1.0
[29,neuromodulated_stdp_synapse_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[30,neuromodulated_stdp_synapse_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[31,neuromodulated_stdp_synapse_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[32,GLOBAL, INFO]: State variables that will be moved from synapse to neuron: ['post_tr']
[33,GLOBAL, INFO]: Parameters that will be copied from synapse to neuron: ['tau_tr_post']
[34,GLOBAL, INFO]: Moving state var defining equation(s) post_tr
[35,GLOBAL, INFO]: Moving state variables for equation(s) post_tr
[36,GLOBAL, INFO]: Moving definition of post_tr from synapse to neuron
[37,GLOBAL, INFO]:      Moving statement post_tr += 1.0
[38,GLOBAL, INFO]: In synapse: replacing ``continuous`` type input ports that are connected to postsynaptic neuron with suffixed external variable references
[39,GLOBAL, INFO]: Copying parameters from synapse to neuron...
[40,GLOBAL, INFO]: Copying definition of tau_tr_post from synapse to neuron
[41,GLOBAL, INFO]: Adding suffix to variables in spike updates
[42,GLOBAL, INFO]: In synapse: replacing variables with suffixed external variable references
[43,GLOBAL, INFO]:      • Replacing variable post_tr
[44,GLOBAL, INFO]: ASTSimpleExpression replacement made (var = post_tr__for_neuromodulated_stdp_synapse_nestml) in expression: A_minus * post_tr
[47,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[48,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[49,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
INFO:Analysing input:
INFO:{
    "dynamics": [
        {
            "expression": "I_syn_exc' = (-I_syn_exc) / tau_syn_exc",
            "initial_values": {
                "I_syn_exc": "0"
            }
        },
        {
            "expression": "I_syn_inh' = (-I_syn_inh) / tau_syn_inh",
            "initial_values": {
                "I_syn_inh": "0"
            }
        },
        {
            "expression": "V_m' = (-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m",
            "initial_values": {
                "V_m": "E_L"
            }
        }
    ],
    "options": {
        "output_timestep_symbol": "__h"
    },
    "parameters": {
        "C_m": "250",
        "E_L": "(-70)",
        "I_e": "0",
        "V_reset": "(-70)",
        "V_th": "(-55)",
        "refr_T": "2",
        "tau_m": "10",
        "tau_syn_exc": "2",
        "tau_syn_inh": "2"
    }
}
INFO:Processing global options...
INFO:Processing input shapes...
INFO:
Processing differential-equation form shape I_syn_exc with defining expression = "(-I_syn_exc) / tau_syn_exc"
INFO:   Returning shape: Shape "I_syn_exc" of order 1
INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc
INFO:
Processing differential-equation form shape I_syn_inh with defining expression = "(-I_syn_inh) / tau_syn_inh"
INFO:   Returning shape: Shape "I_syn_inh" of order 1
INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh
INFO:
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"
INFO:   Returning shape: Shape "V_m" of order 1
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
INFO:All known variables: [I_syn_exc, I_syn_inh, V_m], all parameters used in ODEs: {tau_syn_exc, E_L, tau_m, I_e, C_m, I_stim, tau_syn_inh}
INFO:No numerical value specified for parameter "I_stim"
INFO:
Processing differential-equation form shape I_syn_exc with defining expression = "(-I_syn_exc) / tau_syn_exc"
INFO:   Returning shape: Shape "I_syn_exc" of order 1
INFO:
Processing differential-equation form shape I_syn_inh with defining expression = "(-I_syn_inh) / tau_syn_inh"
INFO:   Returning shape: Shape "I_syn_inh" of order 1
INFO:
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"
INFO:   Returning shape: Shape "V_m" of order 1
INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc
INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh
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
INFO:Finding analytically solvable equations...
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot
[50,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
[51,GLOBAL, INFO]: Analysing/transforming model 'iaf_psc_exp_neuron_nestml'
[52,iaf_psc_exp_neuron_nestml, INFO, [55:0;115:0]]: Starts processing of the model 'iaf_psc_exp_neuron_nestml'
INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc
INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh
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
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot
INFO:Generating propagators for the following symbols: I_syn_exc, I_syn_inh, V_m
WARNING:Under certain conditions, the propagator matrix is singular (contains infinities).
WARNING:List of all conditions that result in a singular propagator:
WARNING:        tau_m = tau_syn_exc
WARNING:        tau_m = tau_syn_inh
INFO:update_expr[I_syn_exc] = I_syn_exc*__P__I_syn_exc__I_syn_exc
INFO:update_expr[I_syn_inh] = I_syn_inh*__P__I_syn_inh__I_syn_inh
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
WARNING:Not preserving expression for variable "I_syn_exc" as it is solved by propagator solver
WARNING:Not preserving expression for variable "I_syn_inh" as it is solved by propagator solver
WARNING:Not preserving expression for variable "V_m" as it is solved by propagator solver
INFO:In ode-toolbox: returning outdict =
INFO:[
    {
        "initial_values": {
            "I_syn_exc": "0",
            "I_syn_inh": "0",
            "V_m": "E_L"
        },
        "parameters": {
            "C_m": "250.000000000000",
            "E_L": "-70.0000000000000",
            "I_e": "0",
            "tau_m": "10.0000000000000",
            "tau_syn_exc": "2.00000000000000",
            "tau_syn_inh": "2.00000000000000"
        },
        "propagators": {
            "__P__I_syn_exc__I_syn_exc": "exp(-__h/tau_syn_exc)",
            "__P__I_syn_inh__I_syn_inh": "exp(-__h/tau_syn_inh)",
            "__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))",
            "__P__V_m__I_syn_inh": "tau_m*tau_syn_inh*(exp(__h/tau_m) - exp(__h/tau_syn_inh))*exp(-__h/tau_syn_inh - __h/tau_m)/(C_m*(tau_m - tau_syn_inh))",
            "__P__V_m__V_m": "exp(-__h/tau_m)"
        },
        "solver": "analytical",
        "state_variables": [
            "I_syn_exc",
            "I_syn_inh",
            "V_m"
        ],
        "update_expressions": {
            "I_syn_exc": "I_syn_exc*__P__I_syn_exc__I_syn_exc",
            "I_syn_inh": "I_syn_inh*__P__I_syn_inh__I_syn_inh",
            "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"
        }
    }
]
INFO:Analysing input:
INFO:{
    "dynamics": [
        {
            "expression": "I_syn_exc' = (-I_syn_exc) / tau_syn_exc",
            "initial_values": {
                "I_syn_exc": "0"
            }
        },
        {
            "expression": "I_syn_inh' = (-I_syn_inh) / tau_syn_inh",
            "initial_values": {
                "I_syn_inh": "0"
            }
        },
        {
            "expression": "V_m' = (-(V_m - E_L)) / tau_m + (I_syn_exc - I_syn_inh + I_e + I_stim) / C_m",
            "initial_values": {
                "V_m": "E_L"
            }
        },
        {
            "expression": "post_tr__for_neuromodulated_stdp_synapse_nestml' = (-post_tr__for_neuromodulated_stdp_synapse_nestml) / tau_tr_post__for_neuromodulated_stdp_synapse_nestml",
            "initial_values": {
                "post_tr__for_neuromodulated_stdp_synapse_nestml": "0.0"
            }
        }
    ],
    "options": {
        "output_timestep_symbol": "__h"
    },
    "parameters": {
        "C_m": "250",
        "E_L": "(-70)",
        "I_e": "0",
        "V_reset": "(-70)",
        "V_th": "(-55)",
        "refr_T": "2",
        "tau_m": "10",
        "tau_syn_exc": "2",
        "tau_syn_inh": "2",
        "tau_tr_post__for_neuromodulated_stdp_synapse_nestml": "20"
    }
}
INFO:Processing global options...
INFO:Processing input shapes...
INFO:
Processing differential-equation form shape I_syn_exc with defining expression = "(-I_syn_exc) / tau_syn_exc"
INFO:   Returning shape: Shape "I_syn_exc" of order 1
INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc
INFO:
Processing differential-equation form shape I_syn_inh with defining expression = "(-I_syn_inh) / tau_syn_inh"
INFO:   Returning shape: Shape "I_syn_inh" of order 1
INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh
INFO:
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"
INFO:   Returning shape: Shape "V_m" of order 1
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
INFO:
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"
INFO:   Returning shape: Shape "post_tr__for_neuromodulated_stdp_synapse_nestml" of order 1
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
INFO:All known variables: [I_syn_exc, I_syn_inh, V_m, post_tr__for_neuromodulated_stdp_synapse_nestml], all parameters used in ODEs: {tau_syn_exc, tau_tr_post__for_neuromodulated_stdp_synapse_nestml, E_L, tau_m, I_e, C_m, I_stim, tau_syn_inh}
INFO:No numerical value specified for parameter "I_stim"
INFO:
Processing differential-equation form shape I_syn_exc with defining expression = "(-I_syn_exc) / tau_syn_exc"
INFO:   Returning shape: Shape "I_syn_exc" of order 1
INFO:
Processing differential-equation form shape I_syn_inh with defining expression = "(-I_syn_inh) / tau_syn_inh"
INFO:   Returning shape: Shape "I_syn_inh" of order 1
INFO:
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"
INFO:   Returning shape: Shape "V_m" of order 1
INFO:
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"
INFO:   Returning shape: Shape "post_tr__for_neuromodulated_stdp_synapse_nestml" of order 1
INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc
INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh
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
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
INFO:Finding analytically solvable equations...
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot
[54,GLOBAL, INFO]: Analysing/transforming model 'iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml'
[55,iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, INFO, [55:0;115:0]]: Starts processing of the model 'iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml'
INFO:Shape I_syn_exc: reconstituting expression -I_syn_exc/tau_syn_exc
INFO:Shape I_syn_inh: reconstituting expression -I_syn_inh/tau_syn_inh
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
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
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot
INFO:Generating propagators for the following symbols: I_syn_exc, I_syn_inh, V_m, post_tr__for_neuromodulated_stdp_synapse_nestml
WARNING:Under certain conditions, the propagator matrix is singular (contains infinities).
WARNING:List of all conditions that result in a singular propagator:
WARNING:        tau_m = tau_syn_exc
WARNING:        tau_m = tau_syn_inh
INFO:update_expr[I_syn_exc] = I_syn_exc*__P__I_syn_exc__I_syn_exc
INFO:update_expr[I_syn_inh] = I_syn_inh*__P__I_syn_inh__I_syn_inh
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
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
WARNING:Not preserving expression for variable "I_syn_exc" as it is solved by propagator solver
WARNING:Not preserving expression for variable "I_syn_inh" as it is solved by propagator solver
WARNING:Not preserving expression for variable "V_m" as it is solved by propagator solver
WARNING:Not preserving expression for variable "post_tr__for_neuromodulated_stdp_synapse_nestml" as it is solved by propagator solver
INFO:In ode-toolbox: returning outdict =
INFO:[
    {
        "initial_values": {
            "I_syn_exc": "0",
            "I_syn_inh": "0",
            "V_m": "E_L",
            "post_tr__for_neuromodulated_stdp_synapse_nestml": "0.0"
        },
        "parameters": {
            "C_m": "250.000000000000",
            "E_L": "-70.0000000000000",
            "I_e": "0",
            "tau_m": "10.0000000000000",
            "tau_syn_exc": "2.00000000000000",
            "tau_syn_inh": "2.00000000000000",
            "tau_tr_post__for_neuromodulated_stdp_synapse_nestml": "20.0000000000000"
        },
        "propagators": {
            "__P__I_syn_exc__I_syn_exc": "exp(-__h/tau_syn_exc)",
            "__P__I_syn_inh__I_syn_inh": "exp(-__h/tau_syn_inh)",
            "__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))",
            "__P__V_m__I_syn_inh": "tau_m*tau_syn_inh*(exp(__h/tau_m) - exp(__h/tau_syn_inh))*exp(-__h/tau_syn_inh - __h/tau_m)/(C_m*(tau_m - tau_syn_inh))",
            "__P__V_m__V_m": "exp(-__h/tau_m)",
            "__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)"
        },
        "solver": "analytical",
        "state_variables": [
            "I_syn_exc",
            "I_syn_inh",
            "V_m",
            "post_tr__for_neuromodulated_stdp_synapse_nestml"
        ],
        "update_expressions": {
            "I_syn_exc": "I_syn_exc*__P__I_syn_exc__I_syn_exc",
            "I_syn_inh": "I_syn_inh*__P__I_syn_inh__I_syn_inh",
            "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",
            "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"
        }
    }
]
INFO:Analysing input:
INFO:{
    "dynamics": [
        {
            "expression": "pre_tr' = (-pre_tr) / tau_tr_pre",
            "initial_values": {
                "pre_tr": "0.0"
            }
        }
    ],
    "options": {
        "output_timestep_symbol": "__h"
    },
    "parameters": {
        "A_minus": "1.5",
        "A_plus": "1.0",
        "A_vt": "1.0",
        "Wmax": "200.0",
        "Wmin": "0.0",
        "b": "0.0",
        "d": "1",
        "tau_c": "1000",
        "tau_n": "200",
        "tau_tr_post": "20",
        "tau_tr_pre": "20"
    }
}
INFO:Processing global options...
INFO:Processing input shapes...
INFO:
Processing differential-equation form shape pre_tr with defining expression = "(-pre_tr) / tau_tr_pre"
INFO:   Returning shape: Shape "pre_tr" of order 1
INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre
INFO:All known variables: [pre_tr], all parameters used in ODEs: {tau_tr_pre}
INFO:
Processing differential-equation form shape pre_tr with defining expression = "(-pre_tr) / tau_tr_pre"
INFO:   Returning shape: Shape "pre_tr" of order 1
INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre
INFO:Finding analytically solvable equations...
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph.dot
INFO:Shape pre_tr: reconstituting expression -pre_tr/tau_tr_pre
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable_before_propagated.dot
[57,GLOBAL, INFO]: Analysing/transforming synapse neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.
[58,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [2:0;66:0]]: Starts processing of the model 'neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml'
INFO:Saving dependency graph plot to /tmp/ode_dependency_graph_analytically_solvable.dot
INFO:Generating propagators for the following symbols: pre_tr
INFO:update_expr[pre_tr] = __P__pre_tr__pre_tr*pre_tr
WARNING:Not preserving expression for variable "pre_tr" as it is solved by propagator solver
INFO:In ode-toolbox: returning outdict =
INFO:[
    {
        "initial_values": {
            "pre_tr": "0.0"
        },
        "parameters": {
            "tau_tr_pre": "20.0000000000000"
        },
        "propagators": {
            "__P__pre_tr__pre_tr": "exp(-__h/tau_tr_pre)"
        },
        "solver": "analytical",
        "state_variables": [
            "pre_tr"
        ],
        "update_expressions": {
            "pre_tr": "__P__pre_tr__pre_tr*pre_tr"
        }
    }
]
[60,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[61,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[62,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[64,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, WARNING, [12:8;12:28]]: Variable 'd' has the same name as a physical unit!
[65,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [40:13;40:20]]: Implicit casting from (compatible) type '1 / ms' to 'real'.
[66,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [63:13;63:123]]: Implicit casting from (compatible) type 'ms' to 'real'.
[67,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml.cpp
[68,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml.h
[69,iaf_psc_exp_neuron_nestml, INFO, [55:0;115:0]]: Successfully generated code for the model: 'iaf_psc_exp_neuron_nestml' in: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
[70,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp
[71,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.h
[72,iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml, INFO, [55:0;115:0]]: Successfully generated code for the model: 'iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml' in: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
Generating code for the synapse neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.
[73,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h
[74,neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml, INFO, [2:0;66:0]]: Successfully generated code for the model: 'neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml' in: '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
[75,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.cpp
[76,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.h
[77,GLOBAL, INFO]: Rendering template /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/CMakeLists.txt
[78,GLOBAL, INFO]: Successfully generated NEST module code in '/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target' !
CMake Warning (dev) at CMakeLists.txt:95 (project):
  cmake_minimum_required() should be called prior to this top-level project()
  call.  Please see the cmake-commands(7) manual for usage documentation of
  both commands.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The CXX compiler identification is GNU 12.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done

-------------------------------------------------------
nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module Configuration Summary
-------------------------------------------------------

C++ compiler         : /usr/bin/c++
Build static libs    : OFF
C++ compiler flags   :
NEST compiler flags  :  -std=c++17 -Wall -fopenmp -O2 -fdiagnostics-color=auto
NEST include dirs    :  -I/home/charl/julich/nest-simulator-install/include/nest -I/usr/include -I/usr/include -I/usr/include
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

-------------------------------------------------------

You can now build and install 'nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module' using
  make
  make install

The library file libnestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.so will be installed to
  /tmp/nestml_target_nxqmze5r
The module can be loaded into NEST using
  (nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module) Install       (in SLI)
  nest.Install(nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module)   (in PyNEST)

CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.26)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done (0.5s)
-- Generating done (0.0s)
-- Build files have been written to: /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target
[ 25%] Building CXX object CMakeFiles/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module_module.dir/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.o
[ 50%] Building CXX object CMakeFiles/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module_module.dir/iaf_psc_exp_neuron_nestml.o
[ 75%] Building CXX object CMakeFiles/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module_module.dir/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.o
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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_()’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:196:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  196 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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)’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:310:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]
  310 |     for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)
      |                      ~~^~~~~~~~~~~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml.cpp:305:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  305 |     auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };
      |          ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml.cpp: In member function ‘void iaf_psc_exp_neuron_nestml::init_state_internal_()’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml.cpp:186:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  186 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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)’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml.cpp:289:24: warning: comparison of integer expressions of different signedness: ‘long int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]
  289 |     for (long i = 0; i < NUM_SPIKE_RECEPTORS; ++i)
      |                      ~~^~~~~~~~~~~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/iaf_psc_exp_neuron_nestml.cpp:284:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  284 |     auto get_t = [origin, lag](){ return nest::Time( nest::Time::step( origin.get_steps() + lag + 1) ).get_ms(); };
      |          ^~~~~
In file included from /home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.cpp:36:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierPtrRport>; std::string = std::__cxx11::basic_string<char>]’
/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<char>]’
/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<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:671:104:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:862:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  862 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::recompute_internal_variables() [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:876:3:   required from ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierPtrRport]’
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierPtrRport>; std::string = std::__cxx11::basic_string<char>]’
/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<char>]’
/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<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:671:104:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:849:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  849 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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<char>]’
/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<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:671:104:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:862:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  862 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::recompute_internal_variables() [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:876:3:   required from ‘nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<targetidentifierT>::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml() [with targetidentifierT = nest::TargetIdentifierIndex]’
/home/charl/julich/nest-simulator-install/include/nest/connector_model.h:164:25:   required from ‘nest::GenericConnectorModel<ConnectionT>::GenericConnectorModel(std::string) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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<nest::TargetIdentifierIndex>; std::string = std::__cxx11::basic_string<char>]’
/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<char>]’
/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<char>]’
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:671:104:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:849:16: warning: unused variable ‘__resolution’ [-Wunused-variable]
  849 |   const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::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]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:589:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  589 |         auto get_t = [_tr_t](){ return _tr_t; };   // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:614:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  614 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:649:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  649 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:517:18: warning: unused variable ‘__resolution’ [-Wunused-variable]
  517 |     const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                  ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:519:10: warning: variable ‘get_thread’ set but not used [-Wunused-but-set-variable]
  519 |     auto get_thread = [tid]()
      |          ^~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::trigger_update_weight(size_t, const std::vector<nest::spikecounter>&, double, const CommonPropertiesType&) [with targetidentifierT = nest::TargetIdentifierPtrRport; size_t = long unsigned int; CommonPropertiesType = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:446:38:   required from ‘void nest::Connector<ConnectionT>::trigger_update_weight(long int, size_t, const std::vector<nest::spikecounter>&, double, const std::vector<nest::ConnectorModel*>&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:433:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:1009:18: warning: unused variable ‘_tr_t’ [-Wunused-variable]
 1009 |     const double _tr_t = start->t_;
      |                  ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:991:10: warning: unused variable ‘timestep’ [-Wunused-variable]
  991 |   double timestep = 0;
      |          ^~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::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]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:589:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  589 |         auto get_t = [_tr_t](){ return _tr_t; };   // do not remove, this is in case the predefined time variable ``t`` is used in the NESTML model
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:614:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  614 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:649:14: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  649 |         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
      |              ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:517:18: warning: unused variable ‘__resolution’ [-Wunused-variable]
  517 |     const double __resolution = nest::Time::get_resolution().get_ms();  // do not remove, this is necessary for the resolution() function
      |                  ^~~~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:519:10: warning: variable ‘get_thread’ set but not used [-Wunused-but-set-variable]
  519 |     auto get_thread = [tid]()
      |          ^~~~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::trigger_update_weight(size_t, const std::vector<nest::spikecounter>&, double, const CommonPropertiesType&) [with targetidentifierT = nest::TargetIdentifierIndex; size_t = long unsigned int; CommonPropertiesType = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties]’:
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:446:38:   required from ‘void nest::Connector<ConnectionT>::trigger_update_weight(long int, size_t, const std::vector<nest::spikecounter>&, double, const std::vector<nest::ConnectorModel*>&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:433:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:1009:18: warning: unused variable ‘_tr_t’ [-Wunused-variable]
 1009 |     const double _tr_t = start->t_;
      |                  ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:991:10: warning: unused variable ‘timestep’ [-Wunused-variable]
  991 |   double timestep = 0;
      |          ^~~~~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::process_mod_spikes_spikes_(const std::vector<nest::spikecounter>&, double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:563:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<targetidentifierT>::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]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:699:12: warning: unused variable ‘cd’ [-Wunused-variable]
  699 |     double cd;
      |            ^~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::update_internal_state_(double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierPtrRport]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:584:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<targetidentifierT>::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]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierPtrRport>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:935:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  935 |     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
      |          ^~~~~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::process_mod_spikes_spikes_(const std::vector<nest::spikecounter>&, double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:563:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<targetidentifierT>::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]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:699:12: warning: unused variable ‘cd’ [-Wunused-variable]
  699 |     double cd;
      |            ^~
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/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<targetidentifierT>::update_internal_state_(double, double, const nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestmlCommonSynapseProperties&) [with targetidentifierT = nest::TargetIdentifierIndex]’:
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:584:9:   required from ‘bool nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<targetidentifierT>::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]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:391:22:   required from ‘void nest::Connector<ConnectionT>::send_to_all(size_t, const std::vector<nest::ConnectorModel*>&, nest::Event&) [with ConnectionT = nest::neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml<nest::TargetIdentifierIndex>; size_t = long unsigned int]’
/home/charl/julich/nest-simulator-install/include/nest/connector_base.h:383:3:   required from here
/home/charl/julich/nestml-fork-integrate_specific_odes/nestml/doc/tutorials/stdp_dopa_synapse/target/neuromodulated_stdp_synapse_nestml__with_iaf_psc_exp_neuron_nestml.h:935:10: warning: variable ‘get_t’ set but not used [-Wunused-but-set-variable]
  935 |     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
      |          ^~~~~
[100%] Linking CXX shared module nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.so
[100%] Built target nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module_module
[100%] Built target nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module_module
Install the project...
-- Install configuration: ""
-- Installing: /tmp/nestml_target_nxqmze5r/nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module.so

Now, we define the network and the simulation parameters.

[16]:
# simulation parameters

dt = .1    # the resolution in ms
delay = 1.    # synaptic delay in ms
total_t_sim = 10000.  # [ms]

# parameters for balanced network

g = 4.  # ratio inhibitory weight/excitatory weight
epsilon = .1  # connection probability
NE = 800  # number of excitatory neurons
NI = 200  # number of inhibitory neurons
N_neurons = NE + NI   # number of neurons in total
N_rec = 50      # record from 50 neurons

CE = int(epsilon * NE)  # number of excitatory synapses per neuron
CI = int(epsilon * NI)  # number of inhibitory synapses per neuron
C_tot = int(CI + CE)      # total number of synapses per neuron

# neuron parameters

tauSyn = 1.  # synaptic time constant [ms]
tauMem = 10.  # time constant of membrane potential [ms]
CMem = 300.  # capacitance of membrane [pF]

neuron_params_exc = {"C_m": CMem,
                 "tau_m": tauMem,
                 "tau_syn_exc": tauSyn,
                 "tau_syn_inh": tauSyn,
                 "refr_T": 4.0,
                 "E_L": -65.,
                 "V_reset": -70.,
                 "V_m": -65.,
                 "V_th": -55.4,
                 "I_e": 0.   # [pA]
}
neuron_params_inh = {"C_m": CMem,
                 "tau_m": tauMem,
                 "tau_syn_exc": tauSyn,
                 "tau_syn_inh": tauSyn,
                 "refr_T": 2.0,
                 "E_L": -65.,
                 "V_reset": -70.,
                 "V_m": -65.,
                 "V_th": -56.4}

# J_ex should be large enough so that when stimulus excites the subgroup cells,
# the subgroup cells cause an excitatory transient in the network to establish
# a causal STDP timing and positive eligibility trace in the synapses
J_ex = 300.  # amplitude of excitatory postsynaptic current
J_in = -g * J_ex    # amplitude of inhibitory postsynaptic current
J_poisson = 2500.
J_stim = 5000.

p_rate = 5.    # external Poisson generator rate [s^-1]

# synapse parameters

learning_rate = .1   # multiplier for weight updates
tau_c = 200.  # [ms]
tau_n = 200.  # [ms]

# stimulus parameters

n_subgroups = 2  # = n_stimuli
subgroup_size = 50   # per subgroup, this many neurons are stimulated when stimulus is presented
reinforced_subgroup_idx = 0
stimulus_rate = 5.   # [s^-1]

min_stimulus_presentation_delay = 10.   # minimum time between presenting stimuli [ms]

min_dopa_reinforcement_delay = 10. # [ms]
max_dopa_reinforcement_delay = 30. # [ms]

With the parameters defined, we are ready to instantiate and connect the network.

[17]:
nest.ResetKernel()
nest.Install(module_name)    # load dynamic library (NEST extension module) into NEST kernel
nest.set_verbosity("M_ALL")
nest.local_num_threads = 4
nest.resolution = dt
nest.print_time = True
nest.overwrite_files = True

nodes_ex = nest.Create(neuron_model_name, NE, params=neuron_params_exc)
nodes_in = nest.Create(neuron_model_name, NI, params=neuron_params_inh)
noise = nest.Create("poisson_generator", params={"rate": p_rate})
vt_spike_times = []
vt_sg = nest.Create("spike_generator",
                    params={"spike_times": vt_spike_times,
                            "allow_offgrid_times": True})

espikes = nest.Create("spike_recorder")
ispikes = nest.Create("spike_recorder")
spikedet_vt = nest.Create("spike_recorder")

# create volume transmitter
vt = nest.Create("volume_transmitter")
vt_parrot = nest.Create("parrot_neuron")
nest.Connect(vt_sg, vt_parrot)
nest.Connect(vt_parrot, vt, syn_spec={"synapse_model": "static_synapse",
                                      "weight": 1.,
                                      "delay": 1.})   # delay is ignored
# set up custom synapse models
wr = nest.Create("weight_recorder")
nest.CopyModel(synapse_model_name, "excitatory",
               {"weight_recorder": wr, "w": J_ex, "d": delay, "receptor_type": 0,
                "volume_transmitter": vt, "A_plus": learning_rate * 1., "A_minus": learning_rate * 1.5,
               "tau_n": tau_n,
               "tau_c": tau_c})

nest.CopyModel("static_synapse", "inhibitory",
               {"weight": J_in, "delay": delay})
nest.CopyModel("static_synapse", "poisson",
               {"weight": J_poisson, "delay": delay})

# make subgroups: pick from excitatory population. subgroups can overlap, but
# each group consists of `subgroup_size` unique neurons

subgroup_indices = n_subgroups * [[]]
for i in range(n_subgroups):
    ids_nonoverlapping = False
    # TODO: replace while loop with:
    # subgroup_indices[i] = np.sort(np.random.choice(NE, size=subgroup_size, replace=False))
    while not ids_nonoverlapping:
        ids = np.random.randint(0, NE, subgroup_size)
        ids_nonoverlapping = len(np.unique(ids)) == subgroup_size
    ids.sort()
    subgroup_indices[i] = ids

# make one spike generator and one parrot neuron for each subgroup
stim_sg = nest.Create("spike_generator", n_subgroups)
stim_parrots = nest.Create("parrot_neuron", n_subgroups)

# make recording devices
stim_spikes_rec = nest.Create("spike_recorder")
mm = nest.Create("multimeter", params={'record_from': ['V_m'], 'interval': dt})
mms = [nest.Create("multimeter", params={'record_from': ['V_m'], 'interval': dt}) for _ in range(10)]

# connect everything up
nest.Connect(stim_parrots, stim_spikes_rec, syn_spec="static_synapse")
nest.Connect(noise, nodes_ex + nodes_in, syn_spec="poisson")
nest.Connect(mm, nodes_ex[0])
[nest.Connect(mms[i], nodes_ex[i]) for i in range(10)]

nest.Connect(stim_sg, stim_parrots, "one_to_one")

for i in range(n_subgroups):
    nest.Connect(stim_parrots[i], nodes_ex[subgroup_indices[i]], "all_to_all", syn_spec={"weight": J_stim})

conn_params_ex = {'rule': 'fixed_indegree', 'indegree': CE}
nest.Connect(nodes_ex, nodes_ex + nodes_in, conn_params_ex, "excitatory")

conn_params_in = {'rule': 'fixed_indegree', 'indegree': CI}
nest.Connect(nodes_in, nodes_ex + nodes_in, conn_params_in, "inhibitory")

nest.Connect(vt_parrot, spikedet_vt)

nest.Connect(nodes_ex, espikes, syn_spec="static_synapse")
nest.Connect(nodes_in, ispikes, syn_spec="static_synapse")

# generate stimulus timings (input stimulus and reinforcement signal)

t_dopa_spikes = []
t_pre_sg_spikes = [[] for _ in range(n_subgroups)]   # mapping from subgroup_idx to a list of spike (or presentation) times of that subgroup

t = 0.   # [ms]
ev_timestamps = []
while t < total_t_sim:
    # jump to time of next stimulus presentation
    dt_next_stimulus = max(min_stimulus_presentation_delay, np.round(random.expovariate(stimulus_rate) * 1000)) # [ms]
    t += dt_next_stimulus

    ev_timestamps.append(t)

    # apply stimulus
    subgroup_idx = np.random.randint(0, n_subgroups)
    t_pre_sg_spikes[subgroup_idx].append(t)

    # reinforce?
    if subgroup_idx == reinforced_subgroup_idx:
        # fire a dopa spike some time after the current time
        t_dopa_spike = t + min_dopa_reinforcement_delay + np.random.randint(max_dopa_reinforcement_delay - min_dopa_reinforcement_delay)
        t_dopa_spikes.append(t_dopa_spike)

print("--> Stimuli will be presented at times: " + str(ev_timestamps))

# set the spike times in the spike generators
for i in range(n_subgroups):
    t_pre_sg_spikes[i].sort()
    stim_sg[i].spike_times = t_pre_sg_spikes[i]

t_dopa_spikes.sort()
vt_sg.spike_times = t_dopa_spikes

print("--> t_dopa_spikes = " + str(t_dopa_spikes))

Apr 19 11:34:22 Install [Info]:
    loaded module nestml_6a0e5b32a83c4b3a83ce6c87a2445436_module

Apr 19 11:34:22 iaf_psc_exp_neuron_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:34:22 iaf_psc_exp_neuron_nestml__with_neuromodulated_stdp_synapse_nestml [Warning]:
    Simulation resolution has changed. Internal state and parameters of the
    model have been reset!

Apr 19 11:34:22 SimulationManager::set_status [Info]:
    Temporal resolution changed from 0.1 to 0.1 ms.
--> Stimuli will be presented at times: [137.0, 168.0, 197.0, 242.0, 351.0, 400.0, 410.0, 712.0, 1254.0, 1284.0, 1651.0, 1858.0, 1921.0, 2093.0, 2210.0, 2242.0, 2252.0, 2675.0, 2734.0, 2768.0, 3022.0, 3040.0, 3229.0, 3371.0, 3434.0, 3712.0, 3887.0, 4080.0, 4209.0, 4808.0, 5490.0, 5581.0, 5621.0, 5701.0, 6040.0, 6262.0, 6491.0, 6754.0, 6837.0, 6980.0, 7042.0, 7222.0, 7273.0, 7472.0, 8103.0, 8126.0, 8451.0, 8489.0, 8676.0, 8745.0, 8876.0, 9068.0, 9152.0, 9224.0, 9433.0, 9447.0, 9580.0, 9633.0, 9643.0, 9920.0, 10113.0]
--> t_dopa_spikes = [163.0, 209.0, 425.0, 731.0, 1883.0, 2106.0, 2230.0, 2701.0, 2785.0, 3050.0, 3052.0, 3395.0, 3904.0, 5514.0, 5633.0, 5721.0, 6055.0, 6290.0, 6510.0, 6781.0, 6999.0, 7069.0, 7500.0, 8126.0, 8463.0, 8768.0, 9164.0, 9237.0, 9449.0, 9459.0, 9593.0]

Run the simulation. Instead of just running from start to finish in one go:

[18]:
# nest.Simulate(total_t_sim)

we split the simulation into equally-sized chunks, so that we can measure and record the state of some internal variables inbetween:

[19]:
def run_chunked_simulation(n_chunks, all_nodes, reinforced_group_nodes, not_reinforced_group_nodes):
    # init log
    log = {}
    log["t"] = []
    log["w_net"] = []
    recordables = ["c_sum", "w_avg", "n_avg"]
    for group in ["reinforced_group", "not_reinforced_group"]:
        log[group] = {}
        for recordable in recordables:
            log[group][recordable] = []

    nest.Prepare()
    for i in range(n_chunks):
        print(str(np.round(100 * i / n_chunks)) + "%")

        # simulate one chunk
        nest.Run(total_t_sim // n_chunks)

        # log current values
        log["t"].append(nest.GetKernelStatus("biological_time"))

        syn_reinforced_subgroup = nest.GetConnections(source=reinforced_group_nodes, synapse_model="excitatory")
        syn_nonreinforced_subgroup = nest.GetConnections(source=not_reinforced_group_nodes, synapse_model="excitatory")
        syn_all = nest.GetConnections(source=all_nodes, synapse_model="excitatory")

        log["w_net"].append(np.mean(syn_all.w))

        log["reinforced_group"]["w_avg"].append(np.mean(syn_reinforced_subgroup.get("w")))
        log["not_reinforced_group"]["w_avg"].append(np.mean(syn_nonreinforced_subgroup.get("w")))

        log["reinforced_group"]["c_sum"].append(np.sum(syn_reinforced_subgroup.get("c")))
        log["not_reinforced_group"]["c_sum"].append(np.sum(syn_nonreinforced_subgroup.get("c")))

        log["reinforced_group"]["n_avg"].append(np.mean(syn_reinforced_subgroup.get("n")))
        log["not_reinforced_group"]["n_avg"].append(np.mean(syn_nonreinforced_subgroup.get("n")))
    nest.Cleanup()

    return log
[20]:
all_nodes = nodes_ex
reinforced_group_nodes = nodes_ex[subgroup_indices[reinforced_subgroup_idx]]
not_reinforced_group_nodes = nodes_ex[subgroup_indices[1 - reinforced_subgroup_idx]]

n_chunks = 100

log = run_chunked_simulation(n_chunks,
                             all_nodes,
                             reinforced_group_nodes,
                             not_reinforced_group_nodes)
0.0%

Apr 19 11:34:22 NodeManager::prepare_nodes [Info]:
    Preparing 1087 nodes for simulation.

Apr 19 11:34:22 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 100.0 ms, Real-time factor: 3.9082

Apr 19 11:34:23 SimulationManager::run [Info]:
    Simulation finished.
1.0%

Apr 19 11:34:25 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 200.0 ms, Real-time factor: 8.043620

Apr 19 11:34:26 SimulationManager::run [Info]:
    Simulation finished.
2.0%

Apr 19 11:34:29 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 300.0 ms, Real-time factor: 12.32186

Apr 19 11:34:29 SimulationManager::run [Info]:
    Simulation finished.
3.0%

Apr 19 11:34:31 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 400.0 ms, Real-time factor: 17.752280

Apr 19 11:34:32 SimulationManager::run [Info]:
    Simulation finished.
4.0%

Apr 19 11:34:35 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 500.0 ms, Real-time factor: 22.306230

Apr 19 11:34:35 SimulationManager::run [Info]:
    Simulation finished.
5.0%

Apr 19 11:34:37 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 600.0 ms, Real-time factor: 26.830080

Apr 19 11:34:38 SimulationManager::run [Info]:
    Simulation finished.
6.0%

Apr 19 11:34:40 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 700.0 ms, Real-time factor: 31.369480

Apr 19 11:34:41 SimulationManager::run [Info]:
    Simulation finished.
7.0%

Apr 19 11:34:43 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 800.0 ms, Real-time factor: 35.899100

Apr 19 11:34:44 SimulationManager::run [Info]:
    Simulation finished.
8.0%

Apr 19 11:34:46 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 900.0 ms, Real-time factor: 40.469433

Apr 19 11:34:47 SimulationManager::run [Info]:
    Simulation finished.
9.0%

Apr 19 11:34:49 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1000.0 ms, Real-time factor: 44.99197

Apr 19 11:34:50 SimulationManager::run [Info]:
    Simulation finished.
10.0%

Apr 19 11:34:52 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1100.0 ms, Real-time factor: 49.572998

Apr 19 11:34:53 SimulationManager::run [Info]:
    Simulation finished.
11.0%

Apr 19 11:34:55 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1200.0 ms, Real-time factor: 54.278378

Apr 19 11:34:56 SimulationManager::run [Info]:
    Simulation finished.
12.0%

Apr 19 11:34:59 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1300.0 ms, Real-time factor: 58.832242

Apr 19 11:34:59 SimulationManager::run [Info]:
    Simulation finished.
13.0%

Apr 19 11:35:01 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1400.0 ms, Real-time factor: 63.269854

Apr 19 11:35:02 SimulationManager::run [Info]:
    Simulation finished.
14.0%

Apr 19 11:35:04 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1500.0 ms, Real-time factor: 67.680667

Apr 19 11:35:05 SimulationManager::run [Info]:
    Simulation finished.
15.0%

Apr 19 11:35:07 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1600.0 ms, Real-time factor: 72.092067

Apr 19 11:35:08 SimulationManager::run [Info]:
    Simulation finished.
16.0%

Apr 19 11:35:10 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1700.0 ms, Real-time factor: 76.708270

Apr 19 11:35:11 SimulationManager::run [Info]:
    Simulation finished.
17.0%

Apr 19 11:35:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1800.0 ms, Real-time factor: 81.506157

Apr 19 11:35:14 SimulationManager::run [Info]:
    Simulation finished.
18.0%

Apr 19 11:35:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 1900.0 ms, Real-time factor: 87.605451

Apr 19 11:35:17 SimulationManager::run [Info]:
    Simulation finished.
19.0%

Apr 19 11:35:19 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2000.0 ms, Real-time factor: 93.715430

Apr 19 11:35:20 SimulationManager::run [Info]:
    Simulation finished.
20.0%

Apr 19 11:35:23 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2100.0 ms, Real-time factor: 99.787984

Apr 19 11:35:23 SimulationManager::run [Info]:
    Simulation finished.
21.0%

Apr 19 11:35:26 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2200.0 ms, Real-time factor: 105.96668

Apr 19 11:35:26 SimulationManager::run [Info]:
    Simulation finished.
22.0%

Apr 19 11:35:29 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2300.0 ms, Real-time factor: 110.354440

Apr 19 11:35:29 SimulationManager::run [Info]:
    Simulation finished.
23.0%

Apr 19 11:35:32 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2400.0 ms, Real-time factor: 114.504260

Apr 19 11:35:32 SimulationManager::run [Info]:
    Simulation finished.
24.0%

Apr 19 11:35:35 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2500.0 ms, Real-time factor: 118.613960

Apr 19 11:35:35 SimulationManager::run [Info]:
    Simulation finished.
25.0%

Apr 19 11:35:37 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2600.0 ms, Real-time factor: 122.836110

Apr 19 11:35:38 SimulationManager::run [Info]:
    Simulation finished.
26.0%

Apr 19 11:35:40 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2700.0 ms, Real-time factor: 127.048340

Apr 19 11:35:41 SimulationManager::run [Info]:
    Simulation finished.
27.0%

Apr 19 11:35:43 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2800.0 ms, Real-time factor: 131.240150

Apr 19 11:35:44 SimulationManager::run [Info]:
    Simulation finished.
28.0%

Apr 19 11:35:46 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 2900.0 ms, Real-time factor: 135.360930

Apr 19 11:35:47 SimulationManager::run [Info]:
    Simulation finished.
29.0%

Apr 19 11:35:49 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3000.0 ms, Real-time factor: 139.438050

Apr 19 11:35:50 SimulationManager::run [Info]:
    Simulation finished.
30.0%

Apr 19 11:35:52 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3100.0 ms, Real-time factor: 143.641890

Apr 19 11:35:53 SimulationManager::run [Info]:
    Simulation finished.
31.0%

Apr 19 11:35:55 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3200.0 ms, Real-time factor: 147.738860

Apr 19 11:35:56 SimulationManager::run [Info]:
    Simulation finished.
32.0%

Apr 19 11:35:58 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3300.0 ms, Real-time factor: 151.965970

Apr 19 11:35:59 SimulationManager::run [Info]:
    Simulation finished.
33.0%

Apr 19 11:36:01 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3400.0 ms, Real-time factor: 157.258930

Apr 19 11:36:02 SimulationManager::run [Info]:
    Simulation finished.
34.0%

Apr 19 11:36:04 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3500.0 ms, Real-time factor: 162.003430

Apr 19 11:36:05 SimulationManager::run [Info]:
    Simulation finished.
35.0%

Apr 19 11:36:07 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3600.0 ms, Real-time factor: 166.656710

Apr 19 11:36:08 SimulationManager::run [Info]:
    Simulation finished.
36.0%

Apr 19 11:36:10 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3700.0 ms, Real-time factor: 171.139480

Apr 19 11:36:11 SimulationManager::run [Info]:
    Simulation finished.
37.0%

Apr 19 11:36:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3800.0 ms, Real-time factor: 175.338290

Apr 19 11:36:14 SimulationManager::run [Info]:
    Simulation finished.
38.0%

Apr 19 11:36:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 3900.0 ms, Real-time factor: 179.436560

Apr 19 11:36:17 SimulationManager::run [Info]:
    Simulation finished.
39.0%

Apr 19 11:36:19 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4000.0 ms, Real-time factor: 183.708100

Apr 19 11:36:20 SimulationManager::run [Info]:
    Simulation finished.
40.0%

Apr 19 11:36:22 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4100.0 ms, Real-time factor: 187.850330

Apr 19 11:36:23 SimulationManager::run [Info]:
    Simulation finished.
41.0%

Apr 19 11:36:25 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4200.0 ms, Real-time factor: 192.070740

Apr 19 11:36:26 SimulationManager::run [Info]:
    Simulation finished.
42.0%

Apr 19 11:36:28 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4300.0 ms, Real-time factor: 196.311790

Apr 19 11:36:29 SimulationManager::run [Info]:
    Simulation finished.
43.0%

Apr 19 11:36:31 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4400.0 ms, Real-time factor: 200.388120

Apr 19 11:36:31 SimulationManager::run [Info]:
    Simulation finished.
44.0%

Apr 19 11:36:34 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4500.0 ms, Real-time factor: 204.522525

Apr 19 11:36:35 SimulationManager::run [Info]:
    Simulation finished.
45.0%

Apr 19 11:36:37 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4600.0 ms, Real-time factor: 208.628985

Apr 19 11:36:38 SimulationManager::run [Info]:
    Simulation finished.
46.0%

Apr 19 11:36:40 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4700.0 ms, Real-time factor: 212.699730

Apr 19 11:36:41 SimulationManager::run [Info]:
    Simulation finished.
47.0%

Apr 19 11:36:43 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4800.0 ms, Real-time factor: 217.743655

Apr 19 11:36:44 SimulationManager::run [Info]:
    Simulation finished.
48.0%

Apr 19 11:36:46 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 4900.0 ms, Real-time factor: 221.758590

Apr 19 11:36:47 SimulationManager::run [Info]:
    Simulation finished.
49.0%

Apr 19 11:36:49 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5000.0 ms, Real-time factor: 225.805775

Apr 19 11:36:49 SimulationManager::run [Info]:
    Simulation finished.
50.0%

Apr 19 11:36:52 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5100.0 ms, Real-time factor: 229.738330

Apr 19 11:36:52 SimulationManager::run [Info]:
    Simulation finished.
51.0%

Apr 19 11:36:55 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5200.0 ms, Real-time factor: 233.717475

Apr 19 11:36:55 SimulationManager::run [Info]:
    Simulation finished.
52.0%

Apr 19 11:36:58 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5300.0 ms, Real-time factor: 237.654490

Apr 19 11:36:58 SimulationManager::run [Info]:
    Simulation finished.
53.0%

Apr 19 11:37:01 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5400.0 ms, Real-time factor: 241.620775e: 5385.0 ms, Real-time factor: 283.5706

Apr 19 11:37:01 SimulationManager::run [Info]:
    Simulation finished.
54.0%

Apr 19 11:37:04 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5500.0 ms, Real-time factor: 245.678255

Apr 19 11:37:04 SimulationManager::run [Info]:
    Simulation finished.
55.0%

Apr 19 11:37:07 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5600.0 ms, Real-time factor: 249.818500

Apr 19 11:37:07 SimulationManager::run [Info]:
    Simulation finished.
56.0%

Apr 19 11:37:10 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5700.0 ms, Real-time factor: 254.011505

Apr 19 11:37:10 SimulationManager::run [Info]:
    Simulation finished.
57.0%

Apr 19 11:37:13 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5800.0 ms, Real-time factor: 258.028620

Apr 19 11:37:13 SimulationManager::run [Info]:
    Simulation finished.
58.0%

Apr 19 11:37:16 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 5900.0 ms, Real-time factor: 261.964470

Apr 19 11:37:16 SimulationManager::run [Info]:
    Simulation finished.
59.0%

Apr 19 11:37:19 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6000.0 ms, Real-time factor: 265.921750

Apr 19 11:37:19 SimulationManager::run [Info]:
    Simulation finished.
60.0%

Apr 19 11:37:22 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6100.0 ms, Real-time factor: 269.958005

Apr 19 11:37:22 SimulationManager::run [Info]:
    Simulation finished.
61.0%

Apr 19 11:37:25 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6200.0 ms, Real-time factor: 274.147785

Apr 19 11:37:25 SimulationManager::run [Info]:
    Simulation finished.
62.0%

Apr 19 11:37:28 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6300.0 ms, Real-time factor: 278.180890me: 6268.0 ms, Real-time factor: 407.2064

Apr 19 11:37:28 SimulationManager::run [Info]:
    Simulation finished.
63.0%

Apr 19 11:37:31 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6400.0 ms, Real-time factor: 282.224865

Apr 19 11:37:31 SimulationManager::run [Info]:
    Simulation finished.
64.0%

Apr 19 11:37:34 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6500.0 ms, Real-time factor: 287.381755l time: 6485.0 ms, Real-time factor: 337.1852

Apr 19 11:37:34 SimulationManager::run [Info]:
    Simulation finished.
65.0%

Apr 19 11:37:37 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6600.0 ms, Real-time factor: 292.719700

Apr 19 11:37:37 SimulationManager::run [Info]:
    Simulation finished.
66.0%

Apr 19 11:37:40 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6700.0 ms, Real-time factor: 297.928300time: 6668.0 ms, Real-time factor: 435.7229

Apr 19 11:37:40 SimulationManager::run [Info]:
    Simulation finished.
67.0%

Apr 19 11:37:43 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6800.0 ms, Real-time factor: 303.177260

Apr 19 11:37:44 SimulationManager::run [Info]:
    Simulation finished.
68.0%

Apr 19 11:37:46 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 6900.0 ms, Real-time factor: 308.374353odel time: 6885.0 ms, Real-time factor: 361.9108

Apr 19 11:37:47 SimulationManager::run [Info]:
    Simulation finished.
69.0%

Apr 19 11:37:49 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7000.0 ms, Real-time factor: 313.505170

Apr 19 11:37:50 SimulationManager::run [Info]:
    Simulation finished.
70.0%

Apr 19 11:37:53 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7100.0 ms, Real-time factor: 319.070813

Apr 19 11:37:53 SimulationManager::run [Info]:
    Simulation finished.
71.0%

Apr 19 11:37:56 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7200.0 ms, Real-time factor: 323.023983

Apr 19 11:37:56 SimulationManager::run [Info]:
    Simulation finished.
72.0%

Apr 19 11:37:59 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7300.0 ms, Real-time factor: 327.331420

Apr 19 11:37:59 SimulationManager::run [Info]:
    Simulation finished.
73.0%

Apr 19 11:38:02 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7400.0 ms, Real-time factor: 332.593820 Model time: 7385.0 ms, Real-time factor: 390.3997

Apr 19 11:38:02 SimulationManager::run [Info]:
    Simulation finished.
74.0%

Apr 19 11:38:05 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7500.0 ms, Real-time factor: 336.802090

Apr 19 11:38:05 SimulationManager::run [Info]:
    Simulation finished.
75.0%

Apr 19 11:38:08 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7600.0 ms, Real-time factor: 340.891773

Apr 19 11:38:08 SimulationManager::run [Info]:
    Simulation finished.
76.0%

Apr 19 11:38:11 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7700.0 ms, Real-time factor: 345.941543

Apr 19 11:38:11 SimulationManager::run [Info]:
    Simulation finished.
77.0%

Apr 19 11:38:14 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7800.0 ms, Real-time factor: 351.548327Model time: 7768.0 ms, Real-time factor: 514.7829

Apr 19 11:38:15 SimulationManager::run [Info]:
    Simulation finished.
78.0%

Apr 19 11:38:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 7900.0 ms, Real-time factor: 356.748190

Apr 19 11:38:18 SimulationManager::run [Info]:
    Simulation finished.
79.0%

Apr 19 11:38:20 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8000.0 ms, Real-time factor: 361.131403

Apr 19 11:38:21 SimulationManager::run [Info]:
    Simulation finished.
80.0%

Apr 19 11:38:23 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8100.0 ms, Real-time factor: 365.055957

Apr 19 11:38:24 SimulationManager::run [Info]:
    Simulation finished.
81.0%

Apr 19 11:38:26 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8200.0 ms, Real-time factor: 369.042590

Apr 19 11:38:27 SimulationManager::run [Info]:
    Simulation finished.
82.0%

Apr 19 11:38:29 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8300.0 ms, Real-time factor: 373.174913

Apr 19 11:38:30 SimulationManager::run [Info]:
    Simulation finished.
83.0%

Apr 19 11:38:32 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8400.0 ms, Real-time factor: 377.813927

Apr 19 11:38:33 SimulationManager::run [Info]:
    Simulation finished.
84.0%

Apr 19 11:38:35 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8500.0 ms, Real-time factor: 381.832757

Apr 19 11:38:36 SimulationManager::run [Info]:
    Simulation finished.
85.0%

Apr 19 11:38:38 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8600.0 ms, Real-time factor: 386.786580 85% ] Model time: 8585.0 ms, Real-time factor: 454.1770

Apr 19 11:38:39 SimulationManager::run [Info]:
    Simulation finished.
86.0%

Apr 19 11:38:41 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8700.0 ms, Real-time factor: 391.085007

Apr 19 11:38:42 SimulationManager::run [Info]:
    Simulation finished.
87.0%

Apr 19 11:38:44 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8800.0 ms, Real-time factor: 395.228320

Apr 19 11:38:45 SimulationManager::run [Info]:
    Simulation finished.
88.0%

Apr 19 11:38:47 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 8900.0 ms, Real-time factor: 399.164097

Apr 19 11:38:48 SimulationManager::run [Info]:
    Simulation finished.
89.0%

Apr 19 11:38:50 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9000.0 ms, Real-time factor: 403.140237

Apr 19 11:38:51 SimulationManager::run [Info]:
    Simulation finished.
90.0%

Apr 19 11:38:53 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9100.0 ms, Real-time factor: 407.147390

Apr 19 11:38:54 SimulationManager::run [Info]:
    Simulation finished.
91.0%

Apr 19 11:38:56 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9200.0 ms, Real-time factor: 413.148308

Apr 19 11:38:57 SimulationManager::run [Info]:
    Simulation finished.
92.0%

Apr 19 11:38:59 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9300.0 ms, Real-time factor: 417.084235

Apr 19 11:39:00 SimulationManager::run [Info]:
    Simulation finished.
93.0%

Apr 19 11:39:02 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9400.0 ms, Real-time factor: 421.012175

Apr 19 11:39:03 SimulationManager::run [Info]:
    Simulation finished.
94.0%

Apr 19 11:39:05 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9500.0 ms, Real-time factor: 425.045858

Apr 19 11:39:06 SimulationManager::run [Info]:
    Simulation finished.
95.0%

Apr 19 11:39:08 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9600.0 ms, Real-time factor: 429.079772

Apr 19 11:39:08 SimulationManager::run [Info]:
    Simulation finished.
96.0%

Apr 19 11:39:11 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9700.0 ms, Real-time factor: 433.271405

Apr 19 11:39:11 SimulationManager::run [Info]:
    Simulation finished.
97.0%

Apr 19 11:39:14 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9800.0 ms, Real-time factor: 437.196325

Apr 19 11:39:14 SimulationManager::run [Info]:
    Simulation finished.
98.0%

Apr 19 11:39:17 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 9900.0 ms, Real-time factor: 441.222980

Apr 19 11:39:17 SimulationManager::run [Info]:
    Simulation finished.
99.0%

Apr 19 11:39:20 SimulationManager::start_updating_ [Info]:
    Number of local nodes: 1087
    Simulation time (ms): 100
    Number of OpenMP threads: 4
    Not using MPI

[ 100% ] Model time: 10000.0 ms, Real-time factor: 445.25468

Apr 19 11:39:20 SimulationManager::run [Info]:
    Simulation finished.

Print some network statistics:

[21]:
events_ex = espikes.n_events
events_in = ispikes.n_events

rate_ex = events_ex / total_t_sim * 1000.0 / N_rec
rate_in = events_in / total_t_sim * 1000.0 / N_rec

num_synapses = (nest.GetDefaults("excitatory")["num_connections"] +
                nest.GetDefaults("inhibitory")["num_connections"])

print("Balanced network simulation statistics:")
print(f"Number of neurons : {N_neurons}")
print(f"Number of synapses: {num_synapses}")
print(f"       Exitatory  : {int(CE * N_neurons) + N_neurons}")
print(f"       Inhibitory : {int(CI * N_neurons)}")
print(f"Excitatory rate   : {rate_ex:.2f} Hz")
print(f"Inhibitory rate   : {rate_in:.2f} Hz")
print("Actual times of stimulus presentation: " + str(stim_spikes_rec.events["times"]))
print("Actual t_dopa_spikes = " + str(spikedet_vt.get("events")["times"]))

Balanced network simulation statistics:
Number of neurons : 1000
Number of synapses: 100000
       Exitatory  : 81000
       Inhibitory : 20000
Excitatory rate   : 14.43 Hz
Inhibitory rate   : 3.42 Hz
Actual times of stimulus presentation: [ 169.  243.  352.  401. 1255. 1285. 1652. 1922. 2243. 2253. 2735. 3230.
 3435. 3713. 4081. 4210. 4809. 5582. 6838. 7223. 7274. 8127. 8490. 8677.
 8877. 9069. 9634. 9644. 9921.  138.  198.  411.  713. 1859. 2094. 2211.
 2676. 2769. 3023. 3041. 3372. 3888. 5491. 5622. 5702. 6041. 6263. 6492.
 6755. 6981. 7043. 7473. 8104. 8452. 8746. 9153. 9225. 9434. 9448. 9581.]
Actual t_dopa_spikes = [ 164.  210.  426.  732. 1884. 2107. 2231. 2702. 2786. 3051. 3053. 3396.
 3905. 5515. 5634. 5722. 6056. 6291. 6511. 6782. 7000. 7070. 7501. 8127.
 8464. 8769. 9165. 9238. 9450. 9460. 9594.]

Rasterplot of network activity

N.B. orange diamonds indicate dopamine spikes.

[22]:
def _histogram(a, bins=10, bin_range=None, normed=False):
    """Calculate histogram for data.

    Parameters
    ----------
    a : list
        Data to calculate histogram for
    bins : int, optional
        Number of bins
    bin_range : TYPE, optional
        Range of bins
    normed : bool, optional
        Whether distribution should be normalized

    Raises
    ------
    ValueError
    """
    from numpy import asarray, iterable, linspace, sort, concatenate

    a = asarray(a).ravel()

    if bin_range is not None:
        mn, mx = bin_range
        if mn > mx:
            raise ValueError("max must be larger than min in range parameter")

    if not iterable(bins):
        if bin_range is None:
            bin_range = (a.min(), a.max())
        mn, mx = [mi + 0.0 for mi in bin_range]
        if mn == mx:
            mn -= 0.5
            mx += 0.5
        bins = linspace(mn, mx, bins, endpoint=False)
    else:
        if (bins[1:] - bins[:-1] < 0).any():
            raise ValueError("bins must increase monotonically")

    # best block size probably depends on processor cache size
    block = 65536
    n = sort(a[:block]).searchsorted(bins)
    for i in range(block, a.size, block):
        n += sort(a[i:i + block]).searchsorted(bins)
    n = concatenate([n, [len(a)]])
    n = n[1:] - n[:-1]

    if normed:
        db = bins[1] - bins[0]
        return 1.0 / (a.size * db) * n, bins
    else:
        return n, bins

ev = espikes.get("events")
ts, node_ids = ev["times"], ev["senders"]
hist_binwidth = 10. # [ms]

fig, ax = plt.subplots(nrows=2, gridspec_kw={"height_ratios": (2, 1)})
ax[0].plot(ts, node_ids, ".")
ax[0].scatter(t_dopa_spikes, np.zeros_like(t_dopa_spikes), marker="d", c="orange", alpha=.8, zorder=99)
ax[0].set_ylabel("Neuron ID")

t_bins = np.arange(
    np.amin(ts), np.amax(ts),
    float(hist_binwidth)
)
n, _ = _histogram(ts, bins=t_bins)
num_neurons = len(np.unique(node_ids))
heights = 1000 * n / (hist_binwidth * num_neurons)
ax[1].bar(t_bins, heights, width=hist_binwidth, color="tab:blue", edgecolor="none")
ax[1].set_yticks([
    int(x) for x in
    np.linspace(0, int(max(heights) * 1.1) + 5, 4)
])
ax[1].set_ylabel("Rate [s${}^{-1}$]")
ax[0].set_xticklabels([])
ax[-1].set_xlabel("Time [ms]")
for _ax in ax:
    _ax.set_xlim(0., total_t_sim)
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_42_0.png

Plot membrane potential of 10 random excitatory cells

This helps to check if the network is in a balanced excitation/inhibition regime.

[23]:
fig, ax = plt.subplots()
for i in range(10):
    ax.plot(mms[i].get("events")["times"], mms[i].get("events")["V_m"], label="V_m")
ax.set_xlim(0., total_t_sim)
ax.set_ylabel("$V_m$ [mV]")
ax.set_xlabel("Time [ms]")

None
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_44_0.png

Timeseries

We should verify that the dopamine concentration is the same in group and nongroup neurons.

Note that the timeseries resolution (due to the chunking of the simulation) could be too low to see fast dopamine dynamics. Use more chunks to increase the temporal resolution of this plot, or fewer to speed up the simulation. Consider the relationship between \(\tau_d\) and how many chunks we need to adequately visualize the dynamics.

[24]:
fig,ax = plt.subplots()

ax.plot(log["t"], log["reinforced_group"]["n_avg"], label="avg dopa group", linestyle=":", markersize=10, alpha=.7, marker="x")
ax.plot(log["t"], log["not_reinforced_group"]["n_avg"], label="avg dopa nongroup", linestyle="--", alpha=.7, marker="o")
ax.legend()

ax.set_xlim(0., total_t_sim)
ax.set_xlabel("Time [ms]")
ax.set_ylabel("Dopamine concentration [a.u.]")

None
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_46_0.png

In any case, all synapses seem to be receiving the same dopamine signal.

Now plot the average eligibility trace \(c\) for group and nongroup neurons:

[25]:
fig,ax = plt.subplots(figsize=(8, 3))
ax.plot(log["t"], log["reinforced_group"]["c_sum"], label="group sum")
ax.plot(log["t"], log["not_reinforced_group"]["c_sum"], label="nongroup sum")
ax.scatter(t_dopa_spikes, np.zeros_like(t_dopa_spikes), marker="d", c="orange", alpha=.8, zorder=99)
ax.set_xlim(0., total_t_sim)
ax.set_xlabel("Time [ms]")
ax.set_ylabel("Eligibility trace")
ax.legend()

None
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_48_0.png
[26]:
fig,ax = plt.subplots(nrows=2, gridspec_kw={"height_ratios": (2, 1)})

ax[0].plot(log["t"], log["reinforced_group"]["w_avg"], label="group")
ax[0].plot(log["t"], log["not_reinforced_group"]["w_avg"], label="nongroup")
ax[0].plot(log["t"], log["w_net"], label="net")
ax[1].plot(log["t"], np.array(log["reinforced_group"]["w_avg"]) - np.array(log["not_reinforced_group"]["w_avg"]),
           label="group - nongroup", c="tab:red")
for _ax in ax:
    _ax.legend()
    _ax.set_xlim(0., total_t_sim)

ax[-1].set_xlabel("Time [ms]")
ax[0].set_xticklabels([])
ax[0].set_ylabel("Average weight                                                                     ")

None
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_49_0.png

We can also plot all subgroup_size weights over time for the reinforced and non-reinforced groups as a scatterplot.

[27]:
 group_weight_times = [[] for _ in range(n_subgroups)]
group_weight_values = [[] for _ in range(n_subgroups)]

senders = np.array(wr.events["senders"])

for subgroup_idx in range(n_subgroups):
    nodes_ex_gids = nodes_ex[subgroup_indices[subgroup_idx]].tolist()
    idx = [np.where(senders == nodes_ex_gids[i])[0] for i in range(subgroup_size)]
    idx = [item for sublist in idx for item in sublist]
    group_weight_times[subgroup_idx] = wr.events["times"][idx]
    group_weight_values[subgroup_idx] = wr.events["weights"][idx]

fig, ax = plt.subplots()
for subgroup_idx in range(n_subgroups):
    if subgroup_idx == reinforced_subgroup_idx:
        c = "red"
        zorder = 99
        marker = "x"
        label = "group"
    else:
        c = "blue"
        zorder=1
        marker = "o"
        label = "nongroup"

    ax.scatter(group_weight_times[subgroup_idx], group_weight_values[subgroup_idx], c=c, alpha=.5, zorder=zorder, marker=marker, label=label)

ax.set_ylabel("Weight")
ax.set_xlabel("Time [ms]")
ax.legend()

None
../../_images/tutorials_stdp_dopa_synapse_stdp_dopa_synapse_51_0.png

Citations

[1] Mikaitis M, Pineda García G, Knight JC and Furber SB (2018) Neuromodulated Synaptic Plasticity on the SpiNNaker Neuromorphic System. Front. Neurosci. 12:105. doi: 10.3389/fnins.2018.00105

[2] PyGeNN: A Python library for GPU-enhanced neural networks, James C. Knight, Anton Komissarov, Thomas Nowotny. Frontiers

[3] Eugene M. Izhikevich. Solving the distal reward problem through linkage of STDP and dopamine signaling. Cerebral Cortex 17, no. 10 (2007): 2443-2452.

[4] Nicolas Brunel. Dynamics of sparsely connected networks of excitatory and inhibitory spiking neurons. Journal of Computational Neuroscience 8(3):183-208 (2000)

Acknowledgements

This software was developed in part or in whole in the Human Brain Project, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under Specific Grant Agreements No. 720270, No. 785907 and No. 945539 (Human Brain Project SGA1, SGA2 and SGA3).

The authors would like to thank James Knight, Garibaldi García and Mantas Mikaitis for their kind and helpful feedback.

License

This notebook (and associated files) is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

This notebook (and associated files) is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.