Class implementing an adaptive LIF neuron model for e-prop plasticity. More...
#include <eprop_iaf_adapt_bsshslm_2020.h>
Classes | |
| struct | Buffers_ |
| Structure of buffers. More... | |
| struct | Parameters_ |
| Structure of parameters. More... | |
| struct | State_ |
| Structure of state variables. More... | |
| struct | Variables_ |
| Structure of internal variables. More... | |
Public Member Functions | |
| eprop_iaf_adapt_bsshslm_2020 () | |
| Default constructor. | |
| eprop_iaf_adapt_bsshslm_2020 (const eprop_iaf_adapt_bsshslm_2020 &) | |
| Copy constructor. | |
| size_t | send_test_event (Node &, size_t, synindex, bool) override |
| Send an event to the receiving_node passed as an argument. | |
| void | handle (SpikeEvent &) override |
| Handle incoming spike events. | |
| void | handle (CurrentEvent &) override |
| Handler for current events. | |
| void | handle (LearningSignalConnectionEvent &) override |
| Handler for learning signal connection events. | |
| void | handle (DataLoggingRequest &) override |
| Handler for universal data logging request. | |
| size_t | handles_test_event (SpikeEvent &, size_t) override |
| Check if the node can handle a particular event and receptor type. | |
| size_t | handles_test_event (CurrentEvent &, size_t) override |
| size_t | handles_test_event (LearningSignalConnectionEvent &, size_t) override |
| size_t | handles_test_event (DataLoggingRequest &, size_t) override |
| void | get_status (Dictionary &) const override |
| Export properties of the node by setting entries in the status dictionary. | |
| void | set_status (const Dictionary &) override |
| Change properties of the node according to the entries in the dictionary. | |
| 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 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) |
Public Member Functions inherited from nest::EpropArchivingNodeRecurrent< true > | |
| EpropArchivingNodeRecurrent () | |
| Constructs a new EpropArchivingNodeRecurrent object. | |
| EpropArchivingNodeRecurrent (const EpropArchivingNodeRecurrent &other) | |
| Constructs an EpropArchivingNodeRecurrent object by copying another EpropArchivingNodeRecurrent object. | |
| surrogate_gradient_function | find_surrogate_gradient (const std::string &surrogate_gradient_function_name) |
| Validates and finds surrogate gradient function based on the specified name. | |
| double | compute_piecewise_linear_surrogate_gradient (const double r, const double v_m, const double v_th, const double height, const double width) |
| Computes a piecewise-linear function as the surrogate gradient. | |
| double | compute_exponential_surrogate_gradient (const double r, const double v_m, const double v_th, const double height, const double width) |
| Computes an exponential function as the surrogate gradient. | |
| double | compute_fast_sigmoid_derivative_surrogate_gradient (const double r, const double v_m, const double v_th, const double height, const double width) |
| Computes the derivative of a fast-sigmoid surrogate function as the surrogate gradient. | |
| double | compute_arctan_derivative_surrogate_gradient (const double r, const double v_m, const double v_th, const double height, const double width) |
| Computes the derivative of an arctan surrogate function as the surrogate gradient. | |
| void | append_new_eprop_history_entry (const long time_step) |
| Creates an entry for the specified time step at the end of the eprop history. | |
| void | write_surrogate_gradient_to_history (const long time_step, const double surrogate_gradient) |
| Writes the surrogate gradient to the eprop history entry at the specified time step. | |
| void | write_learning_signal_to_history (const long time_step, const double learning_signal) |
| Writes the learning signal to the eprop history entry at the specifed time step. | |
| void | write_firing_rate_reg_to_history (const long t_current_update, const double f_target, const double c_reg) |
| Calculates the firing rate regularization for the current update and writes it to a new entry in the firing rate regularization history. | |
| void | write_firing_rate_reg_to_history (const long time_step, const double z, const double f_target, const double kappa_reg, const double c_reg) |
| Calculates the current firing rate regularization and writes it to the eprop history at the specified time step. | |
| double | get_firing_rate_reg_history (const long time_step) |
| Retrieves the firing rate regularization at the specified time step from the firing rate regularization history. | |
| double | get_learning_signal_from_history (const long time_step) |
| Retrieves the learning signal from the eprop history at the specified time step. | |
| void | erase_used_firing_rate_reg_history () |
| Erases the history of the used firing rate regularization history. | |
| void | count_spike () |
| Counts an emitted spike for the firing rate regularization. | |
| void | reset_spike_count () |
| Resets the spike count for the firing rate regularization. | |
| void | get_status (Dictionary &d) const override |
| Export properties of the node by setting entries in the status dictionary. | |
| void | set_status (const Dictionary &d) override |
| Change properties of the node according to the entries in the dictionary. | |
Public Member Functions inherited from nest::EpropArchivingNode< HistEntryEpropRecurrent > | |
| 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< HistEntryEpropRecurrent >::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< HistEntryEpropRecurrent >::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. | |
Public Member Functions inherited from nest::Node | |
| 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 | 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 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 | 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 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 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. | |
Public Member Functions inherited from nest::FlushEventMechanism | |
| 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. | |
Private Member Functions | |
| void | init_buffers_ () override |
| Configure persistent internal data structures. | |
| void | pre_run_hook () override |
| Re-calculate dependent parameters of the node. | |
| void | update (Time const &, const long, const long) override |
| Advance the state of the node in time through the given interval. | |
| double | compute_gradient (std::vector< long > &, const long, const long, const double, const bool) override |
| Compute gradient change for eprop synapses. | |
| long | get_shift () const override |
| Retrieves the temporal shift of the signal. | |
| bool | is_eprop_recurrent_node () const override |
| Checks if the node is part of the recurrent network and thus not a readout neuron. | |
| double | get_v_m_ () const |
| Get the current value of the membrane voltage. | |
| double | get_surrogate_gradient_ () const |
| Get the current value of the surrogate gradient. | |
| double | get_learning_signal_ () const |
| Get the current value of the learning signal. | |
| double | get_v_th_adapt_ () const |
| Get the current value of the adapting threshold. | |
| double | get_adaptation_ () const |
| Get the current value of the adaptation. | |
Private Attributes | |
| Parameters_ | P_ |
| Structure of parameters. | |
| State_ | S_ |
| Structure of state variables. | |
| Variables_ | V_ |
| Structure of internal variables. | |
| Buffers_ | B_ |
| Structure of buffers. | |
Static Private Attributes | |
| static RecordablesMap< eprop_iaf_adapt_bsshslm_2020 > | recordablesMap_ |
| Map storing a static set of recordables. | |
Friends | |
| class | RecordablesMap< eprop_iaf_adapt_bsshslm_2020 > |
| Map for storing a static set of recordables. | |
| class | UniversalDataLogger< eprop_iaf_adapt_bsshslm_2020 > |
| Logger for universal data supporting the data logging request / reply mechanism. Populated with a recordables map. | |
Additional Inherited Members | |
Public Types inherited from nest::EpropArchivingNodeRecurrent< true > | |
| typedef double(EpropArchivingNodeRecurrent::* | surrogate_gradient_function) (double, double, double, double, double) |
| Defines the pointer-to-member function type for the surrogate gradient function. | |
Public Attributes inherited from nest::EpropArchivingNodeRecurrent< true > | |
| double | firing_rate_reg_ |
| Firing rate regularization. | |
| double | f_av_ |
| Average firing rate. | |
Public Attributes inherited from nest::Node | |
| DeprecationWarning | deprecation_warning |
| Member of DeprecationWarning class to be used by models if parameters are deprecated. | |
Protected Member Functions inherited from nest::EpropArchivingNodeRecurrent< true > | |
| long | model_dependent_history_shift_ () const override |
| Returns the correct shift for history depending on whether it is a normal or a bsshslm_2020 model. | |
Protected Member Functions inherited from nest::Node | |
| virtual void | init_state_ () |
| Configure state variables depending on runtime information. | |
| virtual void | set_initialized_ () |
| Model & | get_model_ () const |
| void | set_frozen_ (bool frozen) |
| Mark node as frozen. | |
| template<typename ConcreteNode > | |
| const ConcreteNode & | downcast (const Node &) |
| Auxiliary function to downcast a Node to a concrete class derived from Node. | |
Protected Attributes inherited from nest::EpropArchivingNodeRecurrent< true > | |
| surrogate_gradient_function | compute_surrogate_gradient_ |
| Pointer to member function selected for computing the surrogate gradient. | |
Protected Attributes inherited from nest::EpropArchivingNode< HistEntryEpropRecurrent > | |
| size_t | eprop_indegree_ |
| Number of incoming eprop synapses. | |
| double | eprop_isi_trace_cutoff_ |
| Time interval from the previous spike until the cutoff of e-prop update computation between two spikes (ms). | |
| std::vector< HistEntryEpropUpdate > | update_history_ |
| History of updates still needed by at least one synapse. | |
| std::vector< HistEntryEpropRecurrent > | eprop_history_ |
| History of dynamic variables needed for e-prop plasticity. | |
| const long | offset_gen_ |
| Offset since generator signals start from time step 1. | |
| const long | delay_in_rec_ |
| Transmission delay from input to recurrent neurons. | |
| const long | delay_rec_out_ |
| Transmission delay from recurrent to output neurons. | |
| const long | delay_out_norm_ |
| Transmission delay between output neurons for normalization. | |
| const long | delay_out_rec_ |
| Transmission delay from output neurons to recurrent neurons. | |
Protected Attributes inherited from nest::FlushEventMechanism | |
| double | flush_event_send_interval_ |
| Interval since previous event after which a flush event is sent (ms). | |
| long | flush_event_send_interval_steps_ |
| Interval since previous event after which a flush event is sent (steps). | |
| long | last_event_time_ |
| Time of last spike or flush event (steps). | |
Class implementing an adaptive LIF neuron model for e-prop plasticity.
Class implementing a current-based leaky integrate-and-fire neuron model with delta-shaped postsynaptic currents and threshold adaptation for e-prop plasticity according to Bellec et al. (2020).
| nest::eprop_iaf_adapt_bsshslm_2020::eprop_iaf_adapt_bsshslm_2020 | ( | ) |
Default constructor.
References recordablesMap_.
| nest::eprop_iaf_adapt_bsshslm_2020::eprop_iaf_adapt_bsshslm_2020 | ( | const eprop_iaf_adapt_bsshslm_2020 & | n | ) |
Copy constructor.
|
overrideprivatevirtual |
Compute gradient change for eprop synapses.
This method is called from an eprop synapse on the eprop target neuron. It updates various parameters related to e-prop plasticity according to Bellec et al. (2020).
| presyn_isis | [in, out] Vector of inter-spike intervals. |
| t_previous_update | [in] Time of the last update. |
| t_previous_trigger_spike | [in] Time of the last trigger spike. |
| kappa | [in] Decay factor for the eligibility trace. |
| average_gradient | [in] Boolean flag determining whether to compute an average of the gradients over the given period. |
Reimplemented from nest::Node.
References nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::adapt_beta_, nest::EpropArchivingNode< HistEntryEpropRecurrent >::get_eprop_history(), nest::SimulationManager::get_eprop_learning_window(), nest::SimulationManager::get_eprop_update_interval(), nest::EpropArchivingNodeRecurrent< true >::get_firing_rate_reg_history(), get_shift(), nest::Time::get_steps(), nest::kernel(), P_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_adapt_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_v_m_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_z_in_, nest::EpropArchivingNode< HistEntryEpropRecurrent >::require_eprop_history_entry(), nest::KernelManager::simulation_manager, and V_.
|
inlineprivate |
Get the current value of the adaptation.
References nest::eprop_iaf_adapt_bsshslm_2020::State_::adapt_, and S_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineprivate |
Get the current value of the learning signal.
References nest::eprop_iaf_adapt_bsshslm_2020::State_::learning_signal_, and S_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineoverrideprivatevirtual |
Retrieves the temporal shift of the signal.
Retrieves the number of steps the time-point of the signal has to be shifted to place it at the correct location in the e-prop-related histories.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::EpropArchivingNode< HistEntryEpropRecurrent >::delay_in_rec_, and nest::EpropArchivingNode< HistEntryEpropRecurrent >::offset_gen_.
Referenced by compute_gradient(), and update().
|
inlineoverridevirtual |
Export properties of the node by setting entries in the status dictionary.
| d | Dictionary. |
Implements nest::Node.
References nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::get(), nest::eprop_iaf_adapt_bsshslm_2020::State_::get(), nest::EpropArchivingNodeRecurrent< hist_shift_required >::get_status(), P_, nest::names::recordables(), recordablesMap_, and S_.
|
inlineprivate |
Get the current value of the surrogate gradient.
References S_, and nest::eprop_iaf_adapt_bsshslm_2020::State_::surrogate_gradient_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineprivate |
Get the current value of the membrane voltage.
References nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::E_L_, P_, S_, and nest::eprop_iaf_adapt_bsshslm_2020::State_::v_m_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineprivate |
Get the current value of the adapting threshold.
References nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::E_L_, P_, S_, and nest::eprop_iaf_adapt_bsshslm_2020::State_::v_th_adapt_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
virtual |
Handler for conductance events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handler for current events.
| UnexpectedEvent |
Reimplemented from nest::Node.
References nest::RingBuffer::add_value(), B_, nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::currents_, and nest::kernel().
|
virtual |
Handler for current events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for universal data logging request.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handler for universal data logging request.
| UnexpectedEvent |
Reimplemented from nest::Node.
References B_, and nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::logger_.
|
virtual |
Handler for universal data logging request.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for delay rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for DoubleData events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for gap junction events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handler for learning signal connection events.
| UnexpectedEvent |
Reimplemented from nest::Node.
References nest::EpropArchivingNodeRecurrent< true >::write_learning_signal_to_history().
|
virtual |
Handler for learning signal connection events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for rate events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for slow inward current events (SICEvents).
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handle incoming spike events.
Default implementation of event handlers just throws an UnexpectedEvent exception.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept spike events.
| UnexpectedEvent | This is the default event to throw. |
Reimplemented from nest::Node.
References nest::RingBuffer::add_value(), B_, nest::kernel(), and nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::spikes_.
|
virtual |
Handle incoming spike events.
Default implementation of event handlers just throws an UnexpectedEvent exception.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept spike events.
| UnexpectedEvent | This is the default event to throw. |
Reimplemented from nest::Node.
|
virtual |
Handle incoming weight recording events.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept weight recording events.
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Reimplemented from nest::Node.
References nest::Node::get_name().
|
virtual |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Reimplemented from nest::Node.
References B_, nest::Node::get_name(), nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::logger_, and recordablesMap_.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Reimplemented from nest::Node.
References nest::Node::get_name().
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Check if the node can handle a particular event and receptor type.
This function is called upon connection setup by send_test_event().
handles_test_event() function is used to verify that the receiver can handle the event. It can also be used by the receiver to return information to the sender in form of the returned port. The default implementation throws an IllegalConnection exception. Any node class should define handles_test_event() functions for all those event types it can handle.
See Kunkel et al, Front Neuroinform 8:78 (2014), Sec 3.
| IllegalConnection |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Check if the node can handle a particular event and receptor type.
This function is called upon connection setup by send_test_event().
handles_test_event() function is used to verify that the receiver can handle the event. It can also be used by the receiver to return information to the sender in form of the returned port. The default implementation throws an IllegalConnection exception. Any node class should define handles_test_event() functions for all those event types it can handle.
See Kunkel et al, Front Neuroinform 8:78 (2014), Sec 3.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_name().
|
virtual |
Reimplemented from nest::Node.
|
overrideprivatevirtual |
Configure persistent internal data structures.
Let node configure persistent internal data structures, such as input buffers or ODE solvers, to runtime information prior to first simulation.
Reimplemented from nest::Node.
References B_, nest::RingBuffer::clear(), nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::currents_, nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::logger_, and nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::spikes_.
|
inlineoverrideprivatevirtual |
Checks if the node is part of the recurrent network and thus not a readout neuron.
| IllegalConnection |
Reimplemented from nest::Node.
|
overrideprivatevirtual |
Re-calculate dependent parameters of the node.
This function is called each time a simulation is begun/resumed. It must re-calculate all internal Variables of the node required for spike handling or updating the node.
Implements nest::Node.
References nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::adapt_tau_, B_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::C_m_, nest::Time::get_ms(), nest::Time::get_resolution(), nest::Time::get_steps(), nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::logger_, P_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_adapt_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_i_in_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_v_m_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_z_in_, nest::FlushEventMechanism::pre_run_hook(), nest::eprop_iaf_adapt_bsshslm_2020::Variables_::RefractoryCounts_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::regular_spike_arrival_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::t_ref_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::tau_m_, and V_.
|
inlineoverridevirtual |
Send an event to the receiving_node passed as an argument.
Default implementation of check_connection just throws IllegalConnection.
This is required during the connection handshaking to test, if the receiving_node can handle the event type and receptor_type sent by the source node.
If dummy_target is true, this indicates that receiving_node is derived from ConnTestDummyNodeBase and used in the first call to send_test_event(). This can be ignored in most cases, but Nodes sending DS*Events to their own event hooks and then *Events to their proper targets must send DS*Events when called with the dummy target, and *Events when called with the real target, see #478.
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Change properties of the node according to the entries in the dictionary.
| d | Dictionary with named parameter settings. |
Implements nest::Node.
References P_, S_, nest::eprop_iaf_adapt_bsshslm_2020::State_::set(), nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::set(), and nest::EpropArchivingNodeRecurrent< hist_shift_required >::set_status().
|
overrideprivatevirtual |
Advance the state of the node in time through the given interval.
This method advances the state of the node through the interval (origin+from, origin+to], which is at most min_delay long.
origin+from.origin+to.Each step between from and to corresponds to one simulation timestep (nest.resolution).
If events are emitted, they have time stamps in the interval T+from+1 .. T+to.
| origin | network time at beginning of time slice |
| from | initial step inside time slice |
| to | post-final step inside time slice |
Implements nest::Node.
References nest::eprop_iaf_adapt_bsshslm_2020::State_::adapt_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::adapt_beta_, nest::EpropArchivingNodeRecurrent< true >::append_new_eprop_history_entry(), B_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::c_reg_, nest::EpropArchivingNodeRecurrent< true >::compute_surrogate_gradient_, nest::EpropArchivingNodeRecurrent< true >::count_spike(), nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::currents_, nest::EpropArchivingNode< HistEntryEpropRecurrent >::erase_used_eprop_history(), nest::EpropArchivingNodeRecurrent< true >::erase_used_firing_rate_reg_history(), nest::KernelManager::event_delivery_manager, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::f_target_, nest::FlushEventMechanism::flush_event_is_due(), nest::SimulationManager::get_eprop_reset_neurons_on_update(), nest::SimulationManager::get_eprop_update_interval(), nest::EpropArchivingNodeRecurrent< true >::get_learning_signal_from_history(), get_shift(), nest::Time::get_steps(), nest::RingBuffer::get_value(), nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::I_e_, nest::eprop_iaf_adapt_bsshslm_2020::State_::i_in_, nest::kernel(), nest::eprop_iaf_adapt_bsshslm_2020::State_::learning_signal_, nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::logger_, P_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_adapt_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_i_in_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_v_m_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::P_z_in_, nest::eprop_iaf_adapt_bsshslm_2020::State_::r_, nest::eprop_iaf_adapt_bsshslm_2020::Variables_::RefractoryCounts_, nest::EpropArchivingNodeRecurrent< true >::reset_spike_count(), S_, nest::EventDeliveryManager::send(), nest::Event::set_flush_event_flag(), nest::FlushEventMechanism::set_last_event_time(), nest::KernelManager::simulation_manager, nest::IgnoreAndSpikeMechanism::spike_event_is_due(), nest::eprop_iaf_adapt_bsshslm_2020::Buffers_::spikes_, nest::eprop_iaf_adapt_bsshslm_2020::State_::surrogate_gradient_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::surrogate_gradient_height_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::surrogate_gradient_width_, V_, nest::eprop_iaf_adapt_bsshslm_2020::State_::v_m_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::V_min_, nest::eprop_iaf_adapt_bsshslm_2020::Parameters_::V_th_, nest::eprop_iaf_adapt_bsshslm_2020::State_::v_th_adapt_, nest::EpropArchivingNodeRecurrent< true >::write_firing_rate_reg_to_history(), nest::EpropArchivingNodeRecurrent< true >::write_surrogate_gradient_to_history(), nest::eprop_iaf_adapt_bsshslm_2020::State_::z_, and nest::eprop_iaf_adapt_bsshslm_2020::State_::z_in_.
|
friend |
Map for storing a static set of recordables.
|
friend |
Logger for universal data supporting the data logging request / reply mechanism. Populated with a recordables map.
|
private |
Structure of buffers.
Referenced by handle(), handle(), handle(), handles_test_event(), init_buffers_(), pre_run_hook(), and update().
|
private |
Structure of parameters.
Referenced by compute_gradient(), get_status(), get_v_m_(), get_v_th_adapt_(), pre_run_hook(), set_status(), and update().
|
staticprivate |
Map storing a static set of recordables.
Referenced by eprop_iaf_adapt_bsshslm_2020(), get_status(), and handles_test_event().
|
private |
Structure of state variables.
Referenced by get_adaptation_(), get_learning_signal_(), get_status(), get_surrogate_gradient_(), get_v_m_(), get_v_th_adapt_(), set_status(), and update().
|
private |
Structure of internal variables.
Referenced by compute_gradient(), pre_run_hook(), and update().