weight_recorder – Recording weights from synapses


The change in synaptic weights over time is a key observable property in studies of plasticity in neuronal network models. To access this information, the weight_recorder can be used. In contrast to other recording devices, which are connected to a specific set of neurons, the weight recorder is instead set as a parameter in the synapse model.

After assigning an instance of a weight recorder to the synapse model by setting its weight_recorder property, the weight recorder collects the global IDs of source and target neurons together with the weight for each spike event that travels through the observed synapses.

To only record from a subset of connected synapses, the weight recorder accepts NodeCollections in the parameters senders and targets. If set, they restrict the recording of data to only synapses that fulfill the given criteria.

>>> wr = nest.Create("weight_recorder")
>>> nest.CopyModel("stdp_synapse", "stdp_synapse_rec", {"weight_recorder": wr})

>>> pre = nest.Create("iaf_psc_alpha", 10)
>>> post = nest.Create("iaf_psc_alpha", 10)

>>> nest.Connect(pre, post, syn_spec="stdp_synapse_rec")

Recording time window

The time span during which the recorder actively records can be specified using the properties start and stop. These define the recording period of the device in ms. An additional property origin allows to shift the recording window by a certain time, which can be useful in experimental protocols with repeated simulations. Please note that events with timestamp t = start are not recorded.

Data handling

All recorded data is handed over to the recording backend, selected via the record_to property:

>>> sr  = nest.Create("spike_recorder", params={"record_to":"ascii", "time_in_steps": False})
>>> mm = nest.Create("multimeter", 1, {"record_from": ["V_m", "g_ex"], "record_to": "memory"})

By default, data recorded from recorders is stored in the memory backend. You can access the data recorded by the recorders with the events property.

mm_events = mm.get("events")


The type of recording backend you choose may affect the efficiency of your simulation. The memory backend is ideal for interactive work, but can only be used for limited amount of data. Additionally, transferring data to disk later on may be slower than directly writing from the NEST kernel via ascii or sionlib backends.

Large simulations with many threads may benefit from the sionlib backend, as the ascii backend opens many files which can be very time consuming on parallel file systems.

The complete list of parameters and other recording backend options can be found in the guide to recording from simulations.

Recorder properties


A string (default: “”) specifying an arbitrary textual label for the device. Recording backends might use the label to generate device specific identifiers like filenames and such.


The number of events that were collected by the recorder can be read out of the n_events entry. The number of events can be reset to 0. Other values cannot be set.


A positive floating point number (default : 0.0) used as the reference time in ms for start and stop.


A string (default: “memory”) containing the name of the recording backend where to write data to. An empty string turns all recording of individual events off.


A positive floating point number (default: 0.0) specifying the activation time in ms, relative to origin.


A floating point number (default: infinity) specifying the deactivation time in ms, relative to origin. The value of stop must be greater than or equal to start.

See also

Device, Recorder

Examples using this model