NEST main@caf0ae8
 
Loading...
Searching...
No Matches
nest::ClopathArchivingNode Class Reference

An archiving node which additionally archives parameters and buffers needed for the Clopath plasticity rule. More...

#include <clopath_archiving_node.h>

Inheritance diagram for nest::ClopathArchivingNode:
[legend]
Collaboration diagram for nest::ClopathArchivingNode:
[legend]

Public Member Functions

 ClopathArchivingNode ()
 
 ClopathArchivingNode (const ClopathArchivingNode &)
 
double get_LTD_value (double t) override
 Returns value in LTD history at time t.
 
void get_LTP_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish) override
 Sets pointer start (finish) to the first (last) entry in LTP_history whose time argument is between t1 and t2.
 
double get_theta_plus () const
 Returns threshold theta_plus_.
 
double get_theta_minus () const
 Returns threshold theta_minus_.
 
- Public Member Functions inherited from nest::ArchivingNode
 ArchivingNode ()
 
 ArchivingNode (const ArchivingNode &)
 
double get_K_value (double t) override
 Return the Kminus (synaptic trace) value at time t (given in ms).
 
void get_K_values (double t, double &Kminus, double &nearest_neighbor_Kminus, double &Kminus_triplet) override
 Write the different STDP K values at time t (in ms) to the provided locations.
 
double get_K_triplet_value (const std::deque< histentry >::iterator &iter)
 Return the triplet Kminus value for the associated iterator.
 
void get_history (double t1, double t2, std::deque< histentry >::iterator *start, std::deque< histentry >::iterator *finish) override
 Return the spike times (in steps) of spikes which occurred in the range [t1,t2].
 
void register_stdp_connection (double t_first_read, double delay) override
 Register a new incoming STDP connection.
 
- Public Member Functions inherited from nest::StructuralPlasticityNode
 StructuralPlasticityNode ()
 
 StructuralPlasticityNode (const StructuralPlasticityNode &)
 
double get_Ca_minus () const override
 return the current value of Ca_minus
 
double get_synaptic_elements (std::string n) const override
 Get the number of synaptic element for the current Node.
 
int get_synaptic_elements_vacant (std::string n) const override
 Get the number of synaptic elements of type n which are available for new synapse creation.
 
int get_synaptic_elements_connected (std::string n) const override
 Get the number of synaptic element of type n which are currently connected.
 
std::map< std::string, double > get_synaptic_elements () const override
 Get the number of all synaptic elements for the current Node.
 
void update_synaptic_elements (double t) override
 Change the number of synaptic elements in the node depending on the dynamics described by the corresponding growth curve.
 
void decay_synaptic_elements_vacant () override
 Delete a certain portion of the vacant synaptic elements which are not in use.
 
void connect_synaptic_element (std::string name, int n) override
 Change the number of connected synaptic elements by n.
 
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.
 
double get_tau_Ca () const
 Retrieve the current value of tau_Ca which defines the exponential decay constant of the intracellular calcium concentration.
 
- 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 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 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_eprop_connection ()
 Registers an eprop connection.
 
virtual void initialize_update_history ()
 Initializes the update history.
 
virtual long get_shift () const
 Retrieves the temporal shift of the signal.
 
virtual 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)
 Registers the current update in the update history and deregisters the previous update.
 
virtual void erase_used_eprop_history ()
 Erases used e-prop history for bsshslm_2020 models.
 
virtual void erase_used_eprop_history (const long t_spike, const long t_spike_previous)
 Erases used e-prop history based on inter-spike interval.
 
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 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.
 
- 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.
 

Protected Member Functions

void write_LTD_history (const double t_ltd_ms, double u_bar_minus, double u_bar_bar)
 Creates a new entry in the LTD history and deletes old entries that are not needed any more.
 
void write_LTP_history (const double t_ltp_ms, double u, double u_bar_plus)
 Creates a new entry in the LTP history and delets old entries that are not needed any more.
 
void write_clopath_history (Time const &t_sp, double u, double u_bar_plus, double u_bar_minus, double u_bar_bar)
 Writes and reads the delayed_u_bar_[plus/minus] buffers and calls write_LTD_history and write_LTP_history if the corresponding Heaviside functions yield 1.
 
void init_clopath_buffers ()
 Initialization of buffers.
 
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.
 
- Protected Member Functions inherited from nest::ArchivingNode
void set_spiketime (Time const &t_sp, double offset=0.0)
 Record spike history.
 
double get_spiketime_ms () const
 Return most recent spike time in ms.
 
void clear_history ()
 Clear spike history.
 
- Protected Member Functions inherited from nest::StructuralPlasticityNode
void set_spiketime (Time const &t_sp, double offset=0.0)
 Record spike history.
 
void clear_history ()
 Clear spike history.
 
- Protected Member Functions inherited from nest::Node
virtual void init_state_ ()
 Configure state variables depending on runtime information.
 
virtual void init_buffers_ ()
 Configure persistent internal data structures.
 
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.
 

Private Attributes

std::vector< histentry_extended > ltd_history_
 
std::deque< histentry_extended > ltp_history_
 
double A_LTD_
 
double A_LTP_
 
double u_ref_squared_
 
double theta_plus_
 
double theta_minus_
 
bool A_LTD_const_
 
double delay_u_bars_
 
size_t delay_u_bars_steps_
 
std::vector< double > delayed_u_bar_plus_
 
std::vector< double > delayed_u_bar_minus_
 
size_t delayed_u_bars_idx_
 
size_t ltd_hist_len_
 
size_t ltd_hist_current_
 

Additional Inherited Members

- Public Attributes inherited from nest::Node
DeprecationWarning deprecation_warning
 Member of DeprecationWarning class to be used by models if parameters are deprecated.
 
- Protected Attributes inherited from nest::ArchivingNode
size_t n_incoming_
 Number of incoming connections from STDP connectors.
 

Detailed Description

An archiving node which additionally archives parameters and buffers needed for the Clopath plasticity rule.

Constructor & Destructor Documentation

◆ ClopathArchivingNode() [1/2]

nest::ClopathArchivingNode::ClopathArchivingNode ( )

◆ ClopathArchivingNode() [2/2]

nest::ClopathArchivingNode::ClopathArchivingNode ( const ClopathArchivingNode &  n)

Member Function Documentation

◆ get_LTD_value()

double nest::ClopathArchivingNode::get_LTD_value ( double  t)
overridevirtual

Returns value in LTD history at time t.

Reimplemented from nest::Node.

References nest::kernel(), and ltd_history_.

Here is the call graph for this function:

◆ get_LTP_history()

void nest::ClopathArchivingNode::get_LTP_history ( double  t1,
double  t2,
std::deque< histentry_extended >::iterator *  start,
std::deque< histentry_extended >::iterator *  finish 
)
overridevirtual

Sets pointer start (finish) to the first (last) entry in LTP_history whose time argument is between t1 and t2.

Reimplemented from nest::Node.

References ltp_history_.

◆ get_status()

void nest::ClopathArchivingNode::get_status ( Dictionary &  ) const
overrideprotectedvirtual

Export properties of the node by setting entries in the status dictionary.

Parameters
dDictionary.

Reimplemented from nest::ArchivingNode.

References nest::names::A_LTD(), A_LTD_, nest::names::A_LTD_const(), A_LTD_const_, nest::names::A_LTP(), A_LTP_, nest::names::delay_u_bars(), delay_u_bars_, nest::ArchivingNode::get_status(), nest::names::theta_minus(), theta_minus_, nest::names::theta_plus(), theta_plus_, nest::names::u_ref_squared(), and u_ref_squared_.

Here is the call graph for this function:

◆ get_theta_minus()

double nest::ClopathArchivingNode::get_theta_minus ( ) const
inline

Returns threshold theta_minus_.

References theta_minus_.

◆ get_theta_plus()

double nest::ClopathArchivingNode::get_theta_plus ( ) const
inline

Returns threshold theta_plus_.

References theta_plus_.

◆ init_clopath_buffers()

void nest::ClopathArchivingNode::init_clopath_buffers ( )
protected

Initialization of buffers.

The implementation of the delay of the convolved membrane potentials as used here is not described in Clopath et al. 2010, but is present in the code on ModelDB (https://senselab.med.yale.edu/ModelDB/showmodel.cshtml?model=144566) which was presumably used to create the figures in the paper. Since we write into the buffer before we read from it, we have to add 1 to the size of the buffers.

References nest::KernelManager::connection_manager, nest::Time::delay_ms_to_steps(), delay_u_bars_, delay_u_bars_steps_, delayed_u_bar_minus_, delayed_u_bar_plus_, delayed_u_bars_idx_, nest::ConnectionManager::get_max_delay(), nest::kernel(), ltd_hist_current_, ltd_hist_len_, and ltd_history_.

Here is the call graph for this function:

◆ set_status()

void nest::ClopathArchivingNode::set_status ( const Dictionary &  )
overrideprotectedvirtual

Change properties of the node according to the entries in the dictionary.

Parameters
dDictionary with named parameter settings.

Reimplemented from nest::ArchivingNode.

References nest::names::A_LTD(), A_LTD_, nest::names::A_LTD_const(), A_LTD_const_, nest::names::A_LTP(), A_LTP_, nest::names::delay_u_bars(), delay_u_bars_, nest::ArchivingNode::set_status(), nest::names::theta_minus(), theta_minus_, nest::names::theta_plus(), theta_plus_, nest::names::u_ref_squared(), and u_ref_squared_.

Here is the call graph for this function:

◆ write_clopath_history()

void nest::ClopathArchivingNode::write_clopath_history ( Time const &  t_sp,
double  u,
double  u_bar_plus,
double  u_bar_minus,
double  u_bar_bar 
)
protected

Writes and reads the delayed_u_bar_[plus/minus] buffers and calls write_LTD_history and write_LTP_history if the corresponding Heaviside functions yield 1.

References delay_u_bars_steps_, delayed_u_bar_minus_, delayed_u_bar_plus_, delayed_u_bars_idx_, nest::Time::get_ms(), theta_minus_, theta_plus_, write_LTD_history(), and write_LTP_history().

Here is the call graph for this function:

◆ write_LTD_history()

void nest::ClopathArchivingNode::write_LTD_history ( const double  t_ltd_ms,
double  u_bar_minus,
double  u_bar_bar 
)
protected

Creates a new entry in the LTD history and deletes old entries that are not needed any more.

References A_LTD_, A_LTD_const_, ltd_hist_current_, ltd_hist_len_, ltd_history_, nest::ArchivingNode::n_incoming_, theta_minus_, and u_ref_squared_.

Referenced by write_clopath_history().

Here is the caller graph for this function:

◆ write_LTP_history()

void nest::ClopathArchivingNode::write_LTP_history ( const double  t_ltp_ms,
double  u,
double  u_bar_plus 
)
protected

Creates a new entry in the LTP history and delets old entries that are not needed any more.

References A_LTP_, nest::Time::get_ms(), nest::Time::get_resolution(), ltp_history_, nest::ArchivingNode::n_incoming_, theta_minus_, and theta_plus_.

Referenced by write_clopath_history().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ A_LTD_

double nest::ClopathArchivingNode::A_LTD_
private

◆ A_LTD_const_

bool nest::ClopathArchivingNode::A_LTD_const_
private

◆ A_LTP_

double nest::ClopathArchivingNode::A_LTP_
private

◆ delay_u_bars_

double nest::ClopathArchivingNode::delay_u_bars_
private

◆ delay_u_bars_steps_

size_t nest::ClopathArchivingNode::delay_u_bars_steps_
private

◆ delayed_u_bar_minus_

std::vector< double > nest::ClopathArchivingNode::delayed_u_bar_minus_
private

◆ delayed_u_bar_plus_

std::vector< double > nest::ClopathArchivingNode::delayed_u_bar_plus_
private

◆ delayed_u_bars_idx_

size_t nest::ClopathArchivingNode::delayed_u_bars_idx_
private

◆ ltd_hist_current_

size_t nest::ClopathArchivingNode::ltd_hist_current_
private

◆ ltd_hist_len_

size_t nest::ClopathArchivingNode::ltd_hist_len_
private

◆ ltd_history_

std::vector< histentry_extended > nest::ClopathArchivingNode::ltd_history_
private

◆ ltp_history_

std::deque< histentry_extended > nest::ClopathArchivingNode::ltp_history_
private

◆ theta_minus_

double nest::ClopathArchivingNode::theta_minus_
private

◆ theta_plus_

double nest::ClopathArchivingNode::theta_plus_
private

◆ u_ref_squared_

double nest::ClopathArchivingNode::u_ref_squared_
private

The documentation for this class was generated from the following files: