Base class implementing archiving for node models supporting e-prop plasticity.
More...
|
| | EpropArchivingNode () |
| | Constructs a new EpropArchivingNode object.
|
| |
| | EpropArchivingNode (const EpropArchivingNode &n) |
| | Constructs a new EpropArchivingNode object by copying another EpropArchivingNode object.
|
| |
| void | register_eprop_connection () override |
| | Registers an eprop connection.
|
| |
| void | initialize_update_history () override |
| | Initializes the update history.
|
| |
| void | write_update_to_history (const long t_previous_update, const long t_current_update, const bool is_flush_event, const bool previous_was_flush_event) override |
| | Registers the current update in the update history and deregisters the previous update.
|
| |
| void | require_eprop_history_entry (const typename std::vector< HistEntryT >::iterator eprop_hist_it, const long time_step) const |
| | Requires that an e-prop history iterator points to the expected time step.
|
| |
| std::vector< HistEntryEpropUpdate >::iterator | get_update_history (const long time_step) |
| | Retrieves the update history entry for a specific time step.
|
| |
| std::vector< HistEntryT >::iterator | get_eprop_history (const long time_step) |
| | Retrieves the eprop history entry for a specified time step.
|
| |
| void | erase_used_eprop_history () override |
| | Erases the used eprop history for bsshslm_2020 models.
|
| |
| void | erase_used_eprop_history (const long t_spike, const long t_spike_previous) override |
| | Erases the used eprop history.
|
| |
| double | get_eprop_history_duration () const |
| | Retrieves eprop history size.
|
| |
| long | get_eprop_isi_trace_cutoff () const |
| | Retrieves the eprop ISI trace cutoff.
|
| |
| | Node () |
| |
| | Node (Node const &) |
| |
| virtual | ~Node () |
| |
| virtual Node * | clone () const |
| | This function creates a new object by calling the derived class' copy constructor and returning its pointer.
|
| |
| virtual bool | has_proxies () const |
| | Returns true if the node has proxies on remote threads.
|
| |
| virtual bool | supports_urbanczik_archiving () const |
| | Returns true if the node supports the Urbanczik-Senn plasticity rule.
|
| |
| virtual bool | local_receiver () const |
| | Returns true if the node only receives events from nodes/devices on the same thread.
|
| |
| virtual bool | one_node_per_process () const |
| | Returns true if the node exists only once per process, but does not have proxies on remote threads.
|
| |
| virtual bool | is_off_grid () const |
| | Returns true if the node sends/receives off-grid events.
|
| |
| virtual bool | is_proxy () const |
| | Returns true if the node is a proxy node.
|
| |
| std::string | get_name () const |
| | Return class name.
|
| |
| virtual std::string | get_element_type () const |
| | Return the element type of the node.
|
| |
| size_t | get_node_id () const |
| | Return global Network ID.
|
| |
| int | get_model_id () const |
| | Return model ID of the node.
|
| |
| bool | is_frozen () const |
| | Returns true if node is frozen, i.e., shall not be updated.
|
| |
| bool | node_uses_wfr () const |
| | Returns true if the node uses the waveform relaxation method.
|
| |
| void | set_node_uses_wfr (const bool) |
| | Sets node_uses_wfr_ member variable (to be able to set it to "true" for any class derived from Node)
|
| |
| void | init () |
| | Initialize node prior to first simulation after node has been created.
|
| |
| virtual void | pre_run_hook ()=0 |
| | Re-calculate dependent parameters of the node.
|
| |
| virtual void | calibrate_time (const TimeConverter &) |
| | Re-calculate time-based properties of the node.
|
| |
| virtual void | post_run_cleanup () |
| | Cleanup node after Run.
|
| |
| virtual void | finalize () |
| | Finalize node.
|
| |
| virtual void | update (Time const &, const long, const long)=0 |
| | Advance the state of the node in time through the given interval.
|
| |
| virtual bool | wfr_update (Time const &, const long, const long) |
| | Advance the state of the node in time through the given interval (see Node::update() for more details).
|
| |
| virtual void | set_status (const Dictionary &)=0 |
| | Change properties of the node according to the entries in the dictionary.
|
| |
| virtual void | get_status (Dictionary &) const =0 |
| | Export properties of the node by setting entries in the status dictionary.
|
| |
| virtual size_t | send_test_event (Node &receiving_node, size_t receptor_type, synindex syn_id, bool dummy_target) |
| | Send an event to the receiving_node passed as an argument.
|
| |
| virtual size_t | handles_test_event (SpikeEvent &, size_t receptor_type) |
| | Check if the node can handle a particular event and receptor type.
|
| |
| virtual size_t | handles_test_event (WeightRecorderEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (RateEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (DataLoggingRequest &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (CurrentEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (ConductanceEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (DoubleDataEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (DSSpikeEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (DSCurrentEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (GapJunctionEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (InstantaneousRateConnectionEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (DiffusionConnectionEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (DelayedRateConnectionEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (LearningSignalConnectionEvent &, size_t receptor_type) |
| |
| virtual size_t | handles_test_event (SICEvent &, size_t receptor_type) |
| |
| virtual void | sends_secondary_event (GapJunctionEvent &ge) |
| | Required to check, if source neuron may send a SecondaryEvent.
|
| |
| virtual void | sends_secondary_event (InstantaneousRateConnectionEvent &re) |
| | Required to check, if source neuron may send a SecondaryEvent.
|
| |
| virtual void | sends_secondary_event (DiffusionConnectionEvent &de) |
| | Required to check, if source neuron may send a SecondaryEvent.
|
| |
| virtual void | sends_secondary_event (DelayedRateConnectionEvent &re) |
| | Required to check, if source neuron may send a SecondaryEvent.
|
| |
| virtual void | sends_secondary_event (LearningSignalConnectionEvent &re) |
| | Required to check if source node may send a LearningSignalConnectionEvent.
|
| |
| virtual void | sends_secondary_event (SICEvent &sic) |
| | Required to check if source node may send a SICEvent.
|
| |
| virtual void | register_stdp_connection (double, double) |
| | Register a STDP connection.
|
| |
| virtual long | get_shift () const |
| | Retrieves the temporal shift of the signal.
|
| |
| virtual bool | is_eprop_recurrent_node () const |
| | Checks if the node is part of the recurrent network and thus not a readout neuron.
|
| |
| virtual void | handle (SpikeEvent &e) |
| | Handle incoming spike events.
|
| |
| virtual void | handle (WeightRecorderEvent &e) |
| | Handle incoming weight recording events.
|
| |
| virtual void | handle (RateEvent &e) |
| | Handler for rate events.
|
| |
| virtual void | handle (DataLoggingRequest &e) |
| | Handler for universal data logging request.
|
| |
| virtual void | handle (DataLoggingReply &e) |
| | Handler for universal data logging request.
|
| |
| virtual void | handle (CurrentEvent &e) |
| | Handler for current events.
|
| |
| virtual void | handle (ConductanceEvent &e) |
| | Handler for conductance events.
|
| |
| virtual void | handle (DoubleDataEvent &e) |
| | Handler for DoubleData events.
|
| |
| virtual void | handle (GapJunctionEvent &e) |
| | Handler for gap junction events.
|
| |
| virtual void | handle (InstantaneousRateConnectionEvent &e) |
| | Handler for rate neuron events.
|
| |
| virtual void | handle (DiffusionConnectionEvent &e) |
| | Handler for rate neuron events.
|
| |
| virtual void | handle (DelayedRateConnectionEvent &e) |
| | Handler for delay rate neuron events.
|
| |
| virtual void | handle (LearningSignalConnectionEvent &e) |
| | Handler for learning signal connection events.
|
| |
| virtual void | handle (SICEvent &e) |
| | Handler for slow inward current events (SICEvents).
|
| |
| virtual double | get_Ca_minus () const |
| | Return the Ca_minus value at time Ca_t which corresponds to the time of the last update in Calcium concentration which is performed each time a Node spikes.
|
| |
| virtual double | get_synaptic_elements (std::string) const |
| | Get the number of synaptic element for the current Node at Ca_t which corresponds to the time of the last spike.
|
| |
| virtual int | get_synaptic_elements_vacant (std::string) const |
| | Get the number of vacant synaptic element for the current Node Return 0 if not overridden.
|
| |
| virtual int | get_synaptic_elements_connected (std::string) const |
| | Get the number of connected synaptic element for the current Node.
|
| |
| virtual std::map< std::string, double > | get_synaptic_elements () const |
| | Get the number of all synaptic elements for the current Node at time t.
|
| |
| virtual void | update_synaptic_elements (double) |
| | Triggers the update of all SynapticElements stored in the synaptic_element_map_.
|
| |
| virtual void | decay_synaptic_elements_vacant () |
| | Is used to reduce the number of synaptic elements in the node through time.
|
| |
| virtual void | connect_synaptic_element (std::string, int) |
| | Is used to update the number of connected synaptic elements (SynapticElement::z_connected_) when a synapse is formed or deleted.
|
| |
| virtual double | get_K_value (double t) |
| | return the Kminus value at t (in ms).
|
| |
| virtual double | get_LTD_value (double t) |
| |
| virtual void | get_K_values (double t, double &Kminus, double &nearest_neighbor_Kminus, double &Kminus_triplet) |
| | write the Kminus, nearest_neighbor_Kminus, and Kminus_triplet values at t (in ms) to the provided locations.
|
| |
| virtual void | get_history (double t1, double t2, std::deque< histentry >::iterator *start, std::deque< histentry >::iterator *finish) |
| | return the spike history for (t1,t2].
|
| |
| virtual void | get_LTP_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish) |
| |
| virtual void | get_urbanczik_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish, int) |
| |
| virtual double | get_C_m (int comp) |
| |
| virtual double | get_g_L (int comp) |
| |
| virtual double | get_tau_L (int comp) |
| |
| virtual double | get_tau_s (int comp) |
| |
| virtual double | get_tau_syn_ex (int comp) |
| |
| virtual double | get_tau_syn_in (int comp) |
| |
| virtual void | compute_gradient (const long t_spike, const long t_spike_previous, double &z_previous_buffer, double &z_bar, double &e_bar, double &e_bar_reg, double &epsilon, double &weight, const CommonSynapseProperties &cp, WeightOptimizer *optimizer, bool is_flush_event, bool previous_was_flush_event, double &sum_grad, long &remaining_steps_until_cutoff, long &decay_steps) |
| | Compute gradient change for eprop synapses.
|
| |
| virtual double | compute_gradient (std::vector< long > &presyn_isis, const long t_previous_update, const long t_previous_trigger_spike, const double kappa, const bool average_gradient) |
| | Compute gradient change for eprop synapses.
|
| |
| virtual void | event_hook (DSSpikeEvent &) |
| | Modify Event object parameters during event delivery.
|
| |
| virtual void | event_hook (DSCurrentEvent &) |
| |
| void | set_thread (size_t) |
| | Store the number of the thread to which the node is assigned.
|
| |
| size_t | get_thread () const |
| | Retrieve the number of the thread to which the node is assigned.
|
| |
| void | set_vp (size_t) |
| | Store the number of the virtual process to which the node is assigned.
|
| |
| size_t | get_vp () const |
| | Retrieve the number of the virtual process to which the node is assigned.
|
| |
| void | set_model_id (int) |
| | Set the model id.
|
| |
| void | set_initialized () |
| | Execute post-initialization actions in node models.
|
| |
| virtual SignalType | sends_signal () const |
| |
| virtual SignalType | receives_signal () const |
| |
| Dictionary | get_status_base () |
| | Return a dictionary with the node's properties.
|
| |
| void | set_status_base (const Dictionary &) |
| | Set status dictionary of a node.
|
| |
| bool | is_model_prototype () const |
| | Returns true if node is model prototype.
|
| |
| void | set_thread_lid (const size_t) |
| | set thread local index
|
| |
| size_t | get_thread_lid () const |
| | get thread local index
|
| |
| virtual void | set_local_device_id (const size_t lsdid) |
| | Sets the local device id.
|
| |
| virtual size_t | get_local_device_id () const |
| | Gets the local device id.
|
| |
| void | set_tmp_nc_index (size_t index) |
| | Set index in node collection; required by ThirdOutBuilder.
|
| |
| size_t | get_tmp_nc_index () |
| | Return and invalidate index in node collection; required by ThirdOutBuilder.
|
| |
| | FlushEventMechanism () |
| | Default constructor.
|
| |
| | FlushEventMechanism (const FlushEventMechanism &n) |
| | Copy constructor.
|
| |
| virtual | ~FlushEventMechanism ()=default |
| | Destructor.
|
| |
| void | set_last_event_time (const long last_event_time) |
| | Sets the time the neuron last sent an event (spike or flush event).
|
| |
| long | get_last_event_time () const |
| | Gets the last time the neuron sent an event (spike or flush event).
|
| |
| void | pre_run_hook () |
| | Re-calculates dependent parameters.
|
| |
| bool | flush_event_is_due (const long current_time) const |
| | Checks if a flush event is due at the current time.
|
| |
| void | get_status (Dictionary &d) const |
| | Retrieves parameters and adds them to the status dictionary.
|
| |
| void | set_status (const Dictionary &d, Node *node, const bool check_eprop_constraint=false) |
| | Sets and validates parameters from the status dictionary.
|
| |
Public Member Functions inherited from nest::IgnoreAndSpikeMechanism |
| | IgnoreAndSpikeMechanism () |
| | Default constructor.
|
| |
| | IgnoreAndSpikeMechanism (const IgnoreAndSpikeMechanism &n) |
| | Copy constructor.
|
| |
| virtual | ~IgnoreAndSpikeMechanism ()=default |
| | Virtual destructor.
|
| |
| bool | spike_event_is_due (bool emit_dynamic_spike) |
| | Updates spike schedule and returns whether a spike should be emitted.
|
| |
| void | get_status (Dictionary &d) const |
| | Retrieves parameters and adds them to the status dictionary.
|
| |
| void | set_status (const Dictionary &d, Node *node) |
| | Sets and validates parameters from the status dictionary.
|
| |
template<typename HistEntryT>
class nest::EpropArchivingNode< HistEntryT >
Base class implementing archiving for node models supporting e-prop plasticity.
Base class implementing an intermediate archiving node model for node models supporting e-prop plasticity according to Bellec et al. (2020) and supporting additional biological features described in Korcsak-Gorzo et al. (2025).
A node which archives the history of dynamic variables, the firing rate regularization, and update times needed to calculate the weight updates for e-prop plasticity. It further provides a set of get, write, and set functions for these histories and the hardcoded shifts to synchronize the factors of the plasticity rule.
- Template Parameters
-
| HistEntryT | The type of history entry. |