23#ifndef VOGELS_SPREKELER_SYNAPSE_H
24#define VOGELS_SPREKELER_SYNAPSE_H
91template <
typename target
identifierT >
180 double new_w = std::abs( w ) + (
eta_ * kplus );
187 double new_w = std::abs( w ) - (
alpha_ *
eta_ );
188 return copysign( new_w > 0.0 ? new_w : 0.0,
Wmax_ );
202template <
typename target
identifierT >
212template <
typename target
identifierT >
217 double t_spike = e.get_stamp().get_ms();
222 Node* target = get_target( t );
223 double dendritic_delay = get_delay();
226 std::deque< histentry >::iterator start;
227 std::deque< histentry >::iterator finish;
228 target->get_history( t_lastspike_ - dendritic_delay, t_spike - dendritic_delay, &start, &finish );
234 while ( start != finish )
236 minus_dt = t_lastspike_ - ( start->t_ + dendritic_delay );
240 assert( minus_dt < -1.0 *
kernel().connection_manager.get_stdp_eps() );
241 weight_ = facilitate_( weight_, Kplus_ * std::exp( minus_dt / tau_ ) );
249 weight_ = facilitate_( weight_, target->get_K_value( t_spike - dendritic_delay ) );
250 weight_ = depress_( weight_ );
252 e.set_receiver( *target );
253 e.set_weight( weight_ );
256 e.set_delay_steps( get_delay_steps() );
257 e.set_rport( get_rport() );
261 Kplus_ = Kplus_ * std::exp( ( t_lastspike_ - t_spike ) / tau_ ) + 1.0;
263 t_lastspike_ = t_spike;
269template <
typename target
identifierT >
278 , t_lastspike_( 0.0 )
282template <
typename target
identifierT >
286 ConnectionBase::get_status( d );
296template <
typename target
identifierT >
300 ConnectionBase::set_status( d, cm );
310 if ( weight_ != 0 and ( std::signbit( weight_ ) != std::signbit( Wmax_ ) ) )
312 throw BadProperty(
"Weight and Wmax must have same sign." );
315 if ( not( Kplus_ >= 0 ) )
317 throw BadProperty(
"State Kplus must be positive." );
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Exception to be thrown if a status parameter is incomplete or inconsistent.
Definition exceptions.h:680
Class containing the common properties for all connections of a certain type.
Definition common_synapse_properties.h:50
Base class for dummy nodes used in connection testing.
Definition connection.h:67
Base class for representing connections.
Definition connection.h:110
void check_connection_(Node &dummy_target, Node &source, Node &target, const size_t receptor_type)
This function calls check_connection() on the sender to check if the receiver accepts the event type ...
Definition connection.h:319
long get_delay_steps() const
Return the delay of the connection in steps.
Definition connection.h:181
Node * get_target(const size_t tid) const
Definition connection.h:239
size_t get_rport() const
Definition connection.h:244
double get_delay() const
Return the delay of the connection in ms.
Definition connection.h:172
Definition connector_model.h:69
Encapsulate information sent between nodes.
Definition event.h:103
Base class for all NEST network objects.
Definition node.h:99
virtual void register_stdp_connection(double, double)
Register a STDP connection.
Definition node.cpp:211
Event for spike information.
Definition event.h:418
Definition vogels_sprekeler_synapse.h:148
size_t handles_test_event(SpikeEvent &, size_t) override
Check if the node can handle a particular event and receptor type.
Definition vogels_sprekeler_synapse.h:154
Definition vogels_sprekeler_synapse.h:93
void get_status(Dictionary &d) const
Get all properties of this connection and put them into a dictionary.
Definition vogels_sprekeler_synapse.h:284
vogels_sprekeler_synapse & operator=(const vogels_sprekeler_synapse &)=default
void set_weight(double w)
Definition vogels_sprekeler_synapse.h:171
static constexpr ConnectionModelProperties properties
Definition vogels_sprekeler_synapse.h:99
double depress_(double w)
Definition vogels_sprekeler_synapse.h:185
void set_status(const Dictionary &d, ConnectorModel &cm)
Set properties of this connection from the values given in dictionary.
Definition vogels_sprekeler_synapse.h:298
CommonSynapseProperties CommonPropertiesType
Definition vogels_sprekeler_synapse.h:96
vogels_sprekeler_synapse()
Default Constructor.
Definition vogels_sprekeler_synapse.h:270
double t_lastspike_
Definition vogels_sprekeler_synapse.h:199
void check_connection(Node &s, Node &t, size_t receptor_type, const CommonPropertiesType &)
Definition vogels_sprekeler_synapse.h:161
double get_delay() const
Return the delay of the connection in ms.
Definition connection.h:172
double Wmax_
Definition vogels_sprekeler_synapse.h:196
vogels_sprekeler_synapse(const vogels_sprekeler_synapse &)=default
Copy constructor.
double alpha_
Definition vogels_sprekeler_synapse.h:194
double weight_
Definition vogels_sprekeler_synapse.h:192
double eta_
Definition vogels_sprekeler_synapse.h:195
double tau_
Definition vogels_sprekeler_synapse.h:193
Connection< targetidentifierT > ConnectionBase
Definition vogels_sprekeler_synapse.h:97
double facilitate_(double w, double kplus)
Definition vogels_sprekeler_synapse.h:178
bool send(Event &e, size_t t, const CommonSynapseProperties &cp)
Send an event to the receiver of this connection.
Definition vogels_sprekeler_synapse.h:214
double Kplus_
Definition vogels_sprekeler_synapse.h:197
virtual size_t handles_test_event(SpikeEvent &, size_t receptor_type)
Check if the node can handle a particular event and receptor type.
Definition node.cpp:271
const std::string tau("tau")
const std::string eta("eta")
const std::string alpha("alpha")
const std::string Kplus("Kplus")
const std::string weight("weight")
const std::string size_of("sizeof")
const std::string Wmax("Wmax")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
void register_vogels_sprekeler_synapse(const std::string &name)
Definition vogels_sprekeler_synapse.cpp:32
KernelManager & kernel()
Definition kernel_manager.h:311
ConnectionModelProperties
Definition connector_model.h:49
constexpr size_t invalid_port
Value for invalid connection port number.
Definition nest_types.h:141