Recording

Organisation

All recorders in DeNSE are managed in C++ by the record_manager object. The recorders save the values of observables that are defined by the object recorded.

Recorders can work at the level of: * neurons (:cppclass:`NeuronContinuousRecorder` and NeuronDiscreteRecorder), * neurites (NeuriteContinuousRecorder and NeuriteDiscreteRecorder), * growth cones (GrowthConeContinuousRecorder and

GrowthConeDiscreteRecorder).

They all inherit from :cppclass:`BaseRecorder` but differ for a given level depending on the continuous or discrete nature of the events they are recording.

The reason for this difference is that the storage mode changes to optimize memory (times are stored as [first, last, num_steps] for continuous events) while all event times are stored for discrete events.

Interactions between recorders and objects

Accessing the objects

Recorders get access to the neurons through kernel().neuron_manager. Once the get the neuron, they can reach the neurites through the :cppfunc:`Neuron::neurite_cbegin` and :cppfunc:`Neuron::neurite_cend` iterators. Similarly, growth cones can then be attained through the :cppfunc:`Neurite::gc_cbegin` and :cppfunc:`Neurite::gc_cend` iterators.

Continuous variables

For continuous variables, fast access to the parameters is provided through the get_state functions of the :cppclass:`Neuron`, :cppclass:`Neurite`, and :cppclass:`GrowthCone` classes.

Discrete variables

Discrete variables are among the following:

  • branching event

  • actin wave event

They are stored as ??? (find the sheet).