23#ifndef STDP_SYNAPSE_FACETSHW_HOM_H
24#define STDP_SYNAPSE_FACETSHW_HOM_H
156template <
typename target
identifierT >
157class stdp_facetshw_synapse_hom;
163template <
typename target
identifierT >
223template <
typename target
identifierT >
321 std::vector< long > configbit );
325 unsigned int weight_to_entry_(
double weight,
double weight_per_lut_entry );
326 double entry_to_weight_(
unsigned int discrete_weight,
double weight_per_lut_entry );
345template <
typename target
identifierT >
348template <
typename target
identifierT >
354 std::vector< long > configbit )
357 return ( a_thresh_tl + configbit[ 2 ] * a_causal + configbit[ 1 ] * a_acausal )
358 / ( 1 + configbit[ 2 ] + configbit[ 1 ] )
359 > ( a_thresh_th + configbit[ 0 ] * a_causal + configbit[ 3 ] * a_acausal )
360 / ( 1 + configbit[ 0 ] + configbit[ 3 ] );
363template <
typename target
identifierT >
368 return round( weight / weight_per_lut_entry );
371template <
typename target
identifierT >
374 double weight_per_lut_entry )
377 return discrete_weight * weight_per_lut_entry;
380template <
typename target
identifierT >
385 return table[ discrete_weight_ ];
394template <
typename target
identifierT >
402 double t_spike = e.get_stamp().get_ms();
414 if ( not init_flag_ )
420 std::cout <<
"init synapse " << synapse_id_ <<
" - first readout time: " << next_readout_time_ << std::endl;
425 if ( t_spike > next_readout_time_ )
431 bool eval_0 = eval_function_( a_causal_, a_acausal_, a_thresh_th_, a_thresh_tl_, cp.
configbit_0_ );
432 bool eval_1 = eval_function_( a_causal_, a_acausal_, a_thresh_th_, a_thresh_tl_, cp.
configbit_1_ );
435 if ( eval_0 ==
true and eval_1 ==
false )
437 discrete_weight_ = lookup_( discrete_weight_, cp.
lookuptable_0_ );
447 else if ( eval_0 ==
false and eval_1 ==
true )
449 discrete_weight_ = lookup_( discrete_weight_, cp.
lookuptable_1_ );
459 else if ( eval_0 ==
true and eval_1 ==
true )
461 discrete_weight_ = lookup_( discrete_weight_, cp.
lookuptable_2_ );
473 while ( t_spike > next_readout_time_ )
490 std::deque< histentry >::iterator start;
491 std::deque< histentry >::iterator finish;
492 get_target( t )->get_history( t_lastspike_ - dendritic_delay, t_spike - dendritic_delay, &start, &finish );
496 if ( start != finish )
498 double minus_dt_causal = t_lastspike_ - ( start->t_ + dendritic_delay );
502 assert( minus_dt_causal < -1.0 *
kernel().connection_manager.get_stdp_eps() );
504 a_causal_ += std::exp( minus_dt_causal / cp.
tau_plus_ );
507 double minus_dt_acausal;
510 minus_dt_acausal = ( finish->t_ + dendritic_delay ) - t_spike;
512 a_acausal_ += std::exp( minus_dt_acausal / cp.
tau_minus_ );
515 e.set_receiver( *get_target( t ) );
516 e.set_weight( weight_ );
517 e.set_delay_steps( get_delay_steps() );
518 e.set_rport( get_rport() );
521 t_lastspike_ = t_spike;
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
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
Class containing the common properties for all synapses of type stdp_facetshw_synapse_hom.
Definition stdp_facetshw_synapse_hom.h:165
void calc_readout_cycle_duration_()
Calculate the readout cycle duration.
Definition stdp_facetshw_synapse_hom_impl.h:120
long no_synapses_
Definition stdp_facetshw_synapse_hom.h:205
std::vector< long > configbit_0_
Definition stdp_facetshw_synapse_hom.h:213
std::vector< long > lookuptable_1_
Definition stdp_facetshw_synapse_hom.h:211
std::vector< long > lookuptable_2_
Definition stdp_facetshw_synapse_hom.h:212
double driver_readout_time_
Definition stdp_facetshw_synapse_hom.h:207
double tau_plus_
Definition stdp_facetshw_synapse_hom.h:199
double Wmax_
Definition stdp_facetshw_synapse_hom.h:201
double weight_per_lut_entry_
Definition stdp_facetshw_synapse_hom.h:202
std::vector< long > lookuptable_0_
Definition stdp_facetshw_synapse_hom.h:210
std::vector< long > configbit_1_
Definition stdp_facetshw_synapse_hom.h:214
double readout_cycle_duration_
Definition stdp_facetshw_synapse_hom.h:208
void check_event(SpikeEvent &)
Definition stdp_facetshw_synapse_hom.h:187
STDPFACETSHWHomCommonProperties()
Default constructor.
Definition stdp_facetshw_synapse_hom_impl.h:40
double tau_minus_
Definition stdp_facetshw_synapse_hom.h:200
std::vector< long > reset_pattern_
Definition stdp_facetshw_synapse_hom.h:215
void get_status(Dictionary &d) const
Get all properties and put them into a dictionary.
Definition stdp_facetshw_synapse_hom_impl.h:127
void set_status(const Dictionary &d, ConnectorModel &cm)
Set properties from the values given in dictionary.
Definition stdp_facetshw_synapse_hom_impl.h:151
long synapses_per_driver_
Definition stdp_facetshw_synapse_hom.h:206
Event for spike information.
Definition event.h:418
Definition nest_time.h:135
double get_ms() const
Definition nest_time.h:490
Definition stdp_facetshw_synapse_hom.h:274
size_t handles_test_event(SpikeEvent &, size_t) override
Check if the node can handle a particular event and receptor type.
Definition stdp_facetshw_synapse_hom.h:280
Class representing an STDP connection with homogeneous parameters, i.e.
Definition stdp_facetshw_synapse_hom.h:225
bool send(Event &e, size_t t, const STDPFACETSHWHomCommonProperties< targetidentifierT > &)
Send an event to the receiver of this connection.
Definition stdp_facetshw_synapse_hom.h:396
double t_lastspike_
Definition stdp_facetshw_synapse_hom.h:342
stdp_facetshw_synapse_hom()
Default Constructor.
Definition stdp_facetshw_synapse_hom_impl.h:274
unsigned int lookup_(unsigned int discrete_weight_, std::vector< long > table)
Definition stdp_facetshw_synapse_hom.h:382
void set_weight(double w)
Definition stdp_facetshw_synapse_hom.h:311
unsigned int weight_to_entry_(double weight, double weight_per_lut_entry)
Definition stdp_facetshw_synapse_hom.h:365
STDPFACETSHWHomCommonProperties< targetidentifierT > CommonPropertiesType
Definition stdp_facetshw_synapse_hom.h:228
double entry_to_weight_(unsigned int discrete_weight, double weight_per_lut_entry)
Definition stdp_facetshw_synapse_hom.h:373
void check_connection(Node &s, Node &t, size_t receptor_type, const CommonPropertiesType &)
Definition stdp_facetshw_synapse_hom.h:301
void get_status(Dictionary &d) const
Get all properties of this connection and put them into a dictionary.
Definition stdp_facetshw_synapse_hom_impl.h:290
bool eval_function_(double a_causal, double a_acausal, double a_thresh_th, double a_thresh_tl, std::vector< long > configbit)
Definition stdp_facetshw_synapse_hom.h:350
double next_readout_time_
Definition stdp_facetshw_synapse_hom.h:339
double weight_
Definition stdp_facetshw_synapse_hom.h:331
double a_causal_
Definition stdp_facetshw_synapse_hom.h:332
double get_delay() const
Return the delay of the connection in ms.
Definition connection.h:172
void set_status(const Dictionary &d, ConnectorModel &cm)
Set properties of this connection from the values given in dictionary.
Definition stdp_facetshw_synapse_hom_impl.h:314
long synapse_id_
Definition stdp_facetshw_synapse_hom.h:338
Connection< targetidentifierT > ConnectionBase
Definition stdp_facetshw_synapse_hom.h:229
double a_thresh_tl_
Definition stdp_facetshw_synapse_hom.h:335
bool init_flag_
Definition stdp_facetshw_synapse_hom.h:337
stdp_facetshw_synapse_hom & operator=(const stdp_facetshw_synapse_hom &)=default
double a_acausal_
Definition stdp_facetshw_synapse_hom.h:333
unsigned int discrete_weight_
Definition stdp_facetshw_synapse_hom.h:340
static constexpr ConnectionModelProperties properties
Definition stdp_facetshw_synapse_hom.h:231
stdp_facetshw_synapse_hom(const stdp_facetshw_synapse_hom &)=default
Copy constructor from a property object.
double a_thresh_th_
Definition stdp_facetshw_synapse_hom.h:334
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
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
KernelManager & kernel()
Definition kernel_manager.h:311
void register_stdp_facetshw_synapse_hom(const std::string &name)
Definition stdp_facetshw_synapse_hom.cpp:33
ConnectionModelProperties
Definition connector_model.h:49
constexpr size_t invalid_port
Value for invalid connection port number.
Definition nest_types.h:141
Definition nest_time.h:246