Recording spikes and state variables¶
It is possible to record the times of action potentials, and the values of state variables, of any neuron in the network. Recording state variables of dynamic synapse models is not yet supported.
all have a
record() method, which takes either a single variable name or
a list/tuple of such names, and which sets up recording of the requested variables
for all neurons in the population:
>>> population.record(['v', 'spikes']) # record membrane potential and spikes from all neurons in the population >>> assembly.record('spikes') # record spikes from all neurons in multiple populations
To record from only a subset of the neurons in a
Population, we create
PopulationView using indexing or the
record() on this view:
>>> population.sample(10).record('v') # record membrane potential from 10 neurons chosen at random >>> population[[0,1,2]].record(['v', 'gsyn_exc', 'gsyn_inh']) # record several variables from specific neurons
To find out what variable names are available for a given neuron model, inspect
recordable attribute of the population’s
>>> population.celltype EIF_cond_alpha_isfa_ista(<parameters>) >>> population.celltype.recordable ['spikes', 'v', 'w', 'gsyn_exc', 'gsyn_inh']
By default, variables are recorded at every time step. It is possible to record at a lower frequency using the
sampling_interval argument, e.g.:
>>> population.record(None) # reset recording for this population >>> population.record('v', sampling_interval=1.0)
You should ensure that the sampling interval is an integer multiple of the simulation time step. Other values may work, but have not been tested.
An alternative syntax is available, using the top-level
>>> record(['v', 'spikes'], population, filename="output_data.pkl", sampling_interval=1.0)
This avoids having to call
population.write_data() at the end of the simulation; the data
will be automatically written to the specified filename.