Implements functionality related to structural synaptic plasticity. More...
#include <structural_plasticity_node.h>
Public Member Functions | |
| 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_stdp_connection (double, double) |
| Register a STDP connection. | |
| 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 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. | |
Protected Member Functions | |
| 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 Member Functions | |
| 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 std::map< std::string, double > | get_synaptic_elements () const |
| Get the number of all synaptic elements for the current Node at time t. | |
Private Attributes | |
| double | Ca_t_ |
| Time of the last update of the Calcium concentration in ms. | |
| double | Ca_minus_ |
| Value of the calcium concentration [Ca2+] at Ca_t_. | |
| double | tau_Ca_ |
| Time constant for exponential decay of the intracellular calcium concentration. | |
| double | beta_Ca_ |
| Increase in calcium concentration [Ca2+] for each spike of the neuron. | |
| std::map< std::string, SynapticElement > | synaptic_elements_map_ |
| Map of the synaptic elements. | |
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. | |
Implements functionality related to structural synaptic plasticity.
| nest::StructuralPlasticityNode::StructuralPlasticityNode | ( | ) |
| nest::StructuralPlasticityNode::StructuralPlasticityNode | ( | const StructuralPlasticityNode & | n | ) |
|
protected |
Clear spike history.
References Ca_minus_, and Ca_t_.
Referenced by set_status().
|
overridevirtual |
Change the number of connected synaptic elements by n.
Reimplemented from nest::Node.
References synaptic_elements_map_.
|
overridevirtual |
Delete a certain portion of the vacant synaptic elements which are not in use.
Reimplemented from nest::Node.
References synaptic_elements_map_.
|
inlineoverridevirtual |
|
overridevirtual |
Export properties of the node by setting entries in the status dictionary.
| d | Dictionary. |
Implements nest::Node.
Reimplemented in nest::UrbanczikArchivingNode< urbanczik_parameters >.
References nest::names::beta_Ca(), beta_Ca_, nest::names::Ca(), Ca_minus_, Dictionary::get(), nest::names::synaptic_elements(), synaptic_elements_map_, nest::names::tau_Ca(), and tau_Ca_.
Referenced by nest::ArchivingNode::get_status().
|
inlineprivatevirtual |
Get the number of all synaptic elements for the current Node at time t.
Return an empty map if not overridden
Reimplemented from nest::Node.
|
overridevirtual |
Get the number of all synaptic elements for the current Node.
Reimplemented from nest::Node.
References get_synaptic_elements(), and synaptic_elements_map_.
Referenced by get_synaptic_elements().
|
overridevirtual |
Get the number of synaptic element for the current Node.
The number of synaptic elements is a double value but the number of actual vacant and connected elements is an integer truncated from this value
Reimplemented from nest::Node.
References synaptic_elements_map_.
|
inlineprivatevirtual |
Get the number of synaptic element for the current Node at Ca_t which corresponds to the time of the last spike.
Return 0.0 if not overridden
Reimplemented from nest::Node.
|
overridevirtual |
Get the number of synaptic element of type n which are currently connected.
Reimplemented from nest::Node.
References synaptic_elements_map_.
|
overridevirtual |
Get the number of synaptic elements of type n which are available for new synapse creation.
Reimplemented from nest::Node.
References synaptic_elements_map_.
|
inline |
Retrieve the current value of tau_Ca which defines the exponential decay constant of the intracellular calcium concentration.
References tau_Ca_.
|
protected |
Record spike history.
References beta_Ca_, Ca_minus_, nest::Time::get_ms(), and update_synaptic_elements().
Referenced by nest::ArchivingNode::set_spiketime().
|
overridevirtual |
Change properties of the node according to the entries in the dictionary.
| d | Dictionary with named parameter settings. |
Implements nest::Node.
Reimplemented in nest::UrbanczikArchivingNode< urbanczik_parameters >.
References nest::names::beta_Ca(), beta_Ca_, nest::names::Ca(), Ca_minus_, nest::names::clear(), clear_history(), Dictionary::get(), Dictionary::known(), nest::SynapticElement::set(), nest::names::synaptic_elements(), synaptic_elements_map_, nest::names::synaptic_elements_param(), nest::names::tau_Ca(), and tau_Ca_.
Referenced by nest::ArchivingNode::set_status().
|
overridevirtual |
Change the number of synaptic elements in the node depending on the dynamics described by the corresponding growth curve.
Reimplemented from nest::Node.
References Ca_minus_, Ca_t_, synaptic_elements_map_, and tau_Ca_.
Referenced by set_spiketime().
|
private |
Increase in calcium concentration [Ca2+] for each spike of the neuron.
Referenced by get_status(), set_spiketime(), and set_status().
|
private |
Value of the calcium concentration [Ca2+] at Ca_t_.
Intracellular calcium concentration has a linear factor to mean electrical activity of 10^2, this means, for example, that a [Ca2+] of 0.2 is equivalent to a mean activity of 20 spks/s.
Referenced by clear_history(), get_Ca_minus(), get_status(), set_spiketime(), set_status(), and update_synaptic_elements().
|
private |
Time of the last update of the Calcium concentration in ms.
Referenced by clear_history(), and update_synaptic_elements().
|
private |
Map of the synaptic elements.
Referenced by connect_synaptic_element(), decay_synaptic_elements_vacant(), get_status(), get_synaptic_elements(), get_synaptic_elements(), get_synaptic_elements_connected(), get_synaptic_elements_vacant(), set_status(), and update_synaptic_elements().
|
private |
Time constant for exponential decay of the intracellular calcium concentration.
Referenced by get_status(), get_tau_Ca(), set_status(), and update_synaptic_elements().