Auryn simulator  v0.8.1-206-gb56e451
Plastic Spiking Neural Network Simulator
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
auryn::TripletScalingConnection Class Reference

#include <TripletScalingConnection.h>

Inheritance diagram for auryn::TripletScalingConnection:
Inheritance graph
[legend]
Collaboration diagram for auryn::TripletScalingConnection:
Collaboration graph
[legend]

Public Member Functions

 TripletScalingConnection (SpikingGroup *source, NeuronGroup *destination, TransmitterType transmitter=GLUT)
 
 TripletScalingConnection (SpikingGroup *source, NeuronGroup *destination, const char *filename, AurynFloat tau_hom=10, AurynFloat eta=1, AurynFloat kappa=3., AurynFloat beta=1.0, AurynFloat maxweight=1., TransmitterType transmitter=GLUT)
 
 TripletScalingConnection (SpikingGroup *source, NeuronGroup *destination, AurynWeight weight, AurynFloat sparseness=0.05, AurynFloat tau_hom=10, AurynFloat eta=1, AurynFloat kappa=3., AurynFloat beta=1.0, AurynFloat maxweight=1., TransmitterType transmitter=GLUT, string name="TripletScalingConnection")
 
virtual ~TripletScalingConnection ()
 
virtual void finalize ()
 Finalizes connection after random or manual initialization of the weights. More...
 
void free ()
 
void set_min_weight (AurynWeight min)
 Sets minimum weight (for plastic connections). More...
 
void set_max_weight (AurynWeight max)
 Sets maximum weight (for plastic connections). More...
 
void set_hom_trace (AurynFloat freq)
 
void set_beta (AurynFloat beta)
 
AurynWeight get_wmin ()
 
virtual void propagate ()
 Internally used propagate method. More...
 
virtual void evolve ()
 Evolve method to update internal connection state. Called by System run method. More...
 
- Public Member Functions inherited from auryn::DuplexConnection
 DuplexConnection (const char *filename)
 
 DuplexConnection (NeuronID rows, NeuronID cols)
 
 DuplexConnection (SpikingGroup *source, NeuronGroup *destination, TransmitterType transmitter=GLUT)
 
 DuplexConnection (SpikingGroup *source, NeuronGroup *destination, const char *filename, TransmitterType transmitter=GLUT)
 
 DuplexConnection (SpikingGroup *source, NeuronGroup *destination, AurynWeight weight, AurynFloat sparseness=0.05, TransmitterType transmitter=GLUT, std::string name="DuplexConnection")
 
virtual ~DuplexConnection ()
 
void prune ()
 Prune weight matrices. More...
 
- Public Member Functions inherited from auryn::SparseConnection
 SparseConnection ()
 Empty constructor which should not be used – TODO should be deprecated at some point. More...
 
 SparseConnection (const char *filename)
 Load from wmat file constructor which should not be used – TODO should be deprecated at some point. More...
 
 SparseConnection (NeuronID rows, NeuronID cols)
 Deprecated constructor for manual filling. More...
 
 SparseConnection (SpikingGroup *source, NeuronGroup *destination, const char *filename, TransmitterType transmitter=GLUT)
 Deprecated constructor for loading from file. More...
 
 SparseConnection (SpikingGroup *source, NeuronGroup *destination, TransmitterType transmitter=GLUT, string name="SparseConnection")
 Constructor for manual filling. More...
 
 SparseConnection (SpikingGroup *source, NeuronGroup *destination, AurynWeight weight, AurynDouble sparseness=0.05, TransmitterType transmitter=GLUT, string name="SparseConnection")
 Default constructor which sets up a random sparse matrix with fixed weight between the source and destination group. More...
 
 SparseConnection (SpikingGroup *source, NeuronGroup *destination, SparseConnection *con, string name="SparseConnection")
 This constructor tries to clone a connection by guessing all parameters except source and destination from another connection instance. More...
 
 SparseConnection (SpikingGroup *source, NeuronGroup *destination, AurynWeight weight, AurynDouble sparseness, NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col, TransmitterType transmitter=GLUT)
 Sparse block constructor. More...
 
virtual ~SparseConnection ()
 The default destructor. More...
 
void allocate_manually (AurynLong expected_size)
 Is used whenever memory has to be allocated manually. Automatically adjusts for number of ranks and for security margin. More...
 
AurynLong estimate_required_nonzero_entires (AurynLong nonzero, double sigma=5.)
 This function estimates the required size of the nonzero entry buffer. More...
 
void seed (NeuronID randomseed)
 This function seeds the pseudo random number generator for all random fill operatios. More...
 
virtual AurynWeight get (NeuronID i, NeuronID j)
 Returns weight value of a given element if it exists. More...
 
virtual AurynWeightget_ptr (NeuronID i, NeuronID j)
 Returns pointer to given weight element if it exists. Returns NULL if element does not exist. More...
 
virtual AurynWeight get_data (NeuronID i)
 Returns weight value of a given element referenced by index in the data array. More...
 
virtual void set_data (NeuronID i, AurynWeight value)
 Sets weight value of a given element referenced by its index in the data array. More...
 
virtual void set (NeuronID i, NeuronID j, AurynWeight value)
 Sets a single connection to value if it exists. More...
 
virtual void set (std::vector< neuron_pair > element_list, AurynWeight value)
 Sets a list of connection to value if they exists. More...
 
void random_data (AurynWeight mean, AurynWeight sigma)
 Synonym for random_data. More...
 
void random_data_normal (AurynWeight mean, AurynWeight sigma)
 Set weights of all existing connections randomly using a normal distrubtion. More...
 
void random_data_lognormal (AurynWeight m, AurynWeight s)
 Set weights of all existing connections randomly using a lognormal distribution. More...
 
void init_random_binary (AurynFloat prob=0.5, AurynWeight wlo=0.0, AurynWeight whi=1.0)
 Initialize with random binary at wlo and whi. More...
 
void random_col_data (AurynWeight mean, AurynWeight sigma)
 Sets weights in cols to the same value drewn from a Gaussian distribution. More...
 
void set_block (NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col, AurynWeight weight)
 Sets all weights of existing connections in a block spanned by the first 4 parameters to the value given. More...
 
void scale_block (NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col, AurynWeight alpha)
 Scale all weights of existing connections in a block spanned by the first 4 parameters to the value given. More...
 
virtual void set_all (AurynWeight weight)
 Sets all weights of existing connections to the given value. More...
 
virtual void scale_all (AurynFloat value)
 Scales all weights in the weight matrix with the given value. More...
 
virtual void clip (AurynWeight lo, AurynWeight hi)
 Clip weights. More...
 
void set_upper_triangular (AurynWeight weight)
 Sets weights in a upper triangular matrix. More...
 
virtual void sparse_set_data (AurynDouble sparseness, AurynWeight value)
 Sets a sparse random subset of connection elements wight the given value. More...
 
void connect_random (AurynWeight weight=1.0, AurynDouble sparseness=0.05, bool skip_diag=false)
 Connect src and dst SpikingGroup and NeuronGroup randomly with given sparseness. More...
 
void connect_block_random (AurynWeight weight, AurynDouble sparseness, NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col, bool skip_diag=false)
 Underlying sparse fill method. More...
 
bool push_back (NeuronID i, NeuronID j, AurynWeight weight)
 Pushes a single element to the ComplexMatrix. More...
 
AurynLong get_nonzero ()
 Returns number of nonzero elements in this SparseConnection. More...
 
void put_pattern (type_pattern *pattern, AurynWeight strength, bool overwrite)
 Puts cell assembly to existing sparse weights. More...
 
void put_pattern (type_pattern *pattern1, type_pattern *pattern2, AurynWeight strength, bool overwrite)
 Puts cell assembly or synfire pattern to existing sparse weights. More...
 
void load_patterns (string filename, AurynWeight strength, int nb_max_patterns=10000, bool overwrite=false, bool chainmode=false)
 Reads first n patterns from a .pat file and adds them as Hebbian assemblies onto an existing weight matrix. More...
 
void load_pre_post_patterns (std::string pre_file, std::string post_file, AurynWeight strength, int nb_max_patterns=10000, bool overwrite=false)
 Reads patterns from two files and connects them. More...
 
void sanity_check ()
 Quick an dirty function that checks if all units on the local rank are connected. More...
 
virtual AurynDouble sum ()
 Computes sum of all weight elements in the Connection. More...
 
virtual void stats (AurynDouble &mean, AurynDouble &std)
 Computes mean and variance of weights in default weight matrix. More...
 
virtual void stats (AurynDouble &mean, AurynDouble &std, NeuronID zid)
 Computes mean and variance of weights for matrix state zid. More...
 
bool write_to_file (ForwardMatrix *m, string filename)
 Writes rank specific weight matrix on the same rank to a file. More...
 
virtual bool write_to_file (string filename)
 Writes rank specific default weight matrix on the same rank to a file. More...
 
virtual bool load_from_complete_file (string filename)
 Loads weight matrix from a single file. More...
 
virtual bool load_from_file (string filename)
 Loads weight matrix from Matrix Market (wmat) file. More...
 
bool load_from_file (ForwardMatrix *m, string filename, AurynLong data_size=0)
 Loads weight matrix from Matrix Market (wmat) file to specified weight matrix. More...
 
AurynWeight get_min_weight ()
 Gets minimum weight (for plastic connections). More...
 
AurynWeight get_max_weight ()
 Gets maximum weight (for plastic connections). More...
 
std::vector< neuron_pairget_block (NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col)
 Returns a vector of ConnectionsID of a block specified by the arguments. More...
 
std::vector< neuron_pairget_post_partners (NeuronID i)
 Returns a vector of ConnectionsID of postsynaptic parterns of neuron i. More...
 
std::vector< neuron_pairget_pre_partners (NeuronID j)
 Returns a vector of ConnectionsID of presynaptic parterns of neuron i. More...
 
- Public Member Functions inherited from auryn::Connection
 Connection ()
 
 Connection (NeuronID rows, NeuronID cols)
 
 Connection (SpikingGroup *source, NeuronGroup *destination, TransmitterType transmitter=GLUT, std::string name="Connection")
 
virtual ~Connection ()
 
void set_size (NeuronID i, NeuronID j)
 
void set_name (std::string name)
 Set name of connection. More...
 
std::string get_name ()
 Returns name of connection. More...
 
std::string get_file_name ()
 Extracts the class name of the connection from the file name. More...
 
std::string get_log_name ()
 Returns a string which is the combination of file and connection name for logging. More...
 
AurynStateVectorget_target_vector ()
 Returns target state vector if one is defined. More...
 
NeuronID get_m_rows ()
 Get number of rows (presynaptic) in connection. More...
 
NeuronID get_n_cols ()
 Get number of columns (postsynaptic) in connection. More...
 
TransmitterType get_transmitter ()
 Returns transmitter type. More...
 
void set_target (AurynWeight *ptr)
 Sets target state of this connection directly via a pointer. More...
 
void set_target (AurynStateVector *ptr)
 Sets target state of this connection directly via a StateVector. More...
 
void set_receptor (AurynStateVector *ptr)
 Same as set_target. More...
 
void set_transmitter (AurynStateVector *ptr)
 Same as set_target. More...
 
void set_transmitter (TransmitterType transmitter)
 Sets target state of this connection for a given receptor as one of Auryn's default transmitter types. More...
 
void set_receptor (string state_name)
 Sets target state of this connection directly the name of a state vector. More...
 
void set_target (string state_name)
 Same as set_receptor. More...
 
void set_transmitter (string state_name)
 Same as set_receptor, but DEPRECATED. More...
 
void set_source (SpikingGroup *source)
 Sets source SpikingGroup of this connection. More...
 
SpikingGroupget_source ()
 Returns pointer to the presynaptic group. More...
 
void set_destination (NeuronGroup *source)
 Sets destination SpikingGroup of this connection. More...
 
NeuronGroupget_destination ()
 Returns pointer to the postsynaptic group. More...
 
void conditional_propagate ()
 DEPRECATED. (Such connections should not be registered in the first place) Calls propagate only if the postsynaptic NeuronGroup exists on the local rank. More...
 
Traceget_pre_trace (const AurynDouble tau)
 Returns a pointer to a presynaptic trace object. More...
 
Traceget_post_trace (const AurynDouble tau)
 Returns a pointer to a postsynaptic trace object. More...
 
Traceget_post_state_trace (const string state_name, const AurynDouble tau, const AurynDouble jump_size=0.0)
 Returns a pointer to a postsynaptic state trace object. More...
 
void transmit (const NeuronID id, const AurynWeight amount)
 Default way to transmit a spike to a postsynaptic partner. More...
 
void targeted_transmit (SpikingGroup *target_group, AurynStateVector *target_state, const NeuronID id, const AurynWeight amount)
 Transmits a spike to a given target group and state. More...
 
void safe_transmit (NeuronID id, AurynWeight amount)
 Same as transmit but first checks if the target neuron exists and avoids segfaults that way (but it's also slower). More...
 
SpikeContainerget_pre_spikes ()
 Supplies pointer to SpikeContainer of all presynaptic spikes. More...
 
SpikeContainerget_post_spikes ()
 Returns pointer to SpikeContainer for postsynaptic spikes on this node. More...
 
void add_number_of_spike_attributes (int x)
 Set up spike delay to accomodate x additional spike attributes. More...
 
AurynFloat get_spike_attribute (const NeuronID i, const int attribute_id=0)
 Returns spike attribute belonging to the spike at position i in the get_spikes() SpikeContainer. More...
 

Public Attributes

AurynFloat A3_plus
 
AurynFloat w_min
 
AurynFloat w_max
 
bool stdp_active
 
- Public Attributes inherited from auryn::DuplexConnection
ForwardMatrixfwd
 
BackwardMatrixbkw
 
- Public Attributes inherited from auryn::SparseConnection
bool patterns_ignore_gamma
 Switch that toggles for the load_patterns function whether or not to use the intensity (gamma) value. Default is false. More...
 
NeuronID patterns_every_pre
 The every_pre parameter allows to skip presynaptically over pattern IDs when loading patterns. Default is 1. This can be useful to when loading patterns into the exc->inh connections and there significantly less inhibitory cells than exc ones. More...
 
NeuronID patterns_every_post
 The every_post parameter allows to skip postsynaptically over pattern IDs when loading patterns. Default is 1. This can be useful to when loading patterns into the exc->inh connections and there significantly less inhibitory cells than exc ones. More...
 
bool wrap_patterns
 Switch that toggles the behavior when loading a pattern to wrap neuron IDs back onto existing cells via the modulo function. More...
 
ForwardMatrixw
 A pointer that points per default to the ComplexMatrix that stores the connectinos. More...
 
- Public Attributes inherited from auryn::Connection
SpikingGroupsrc
 Pointer to the source group of this connection. More...
 
NeuronGroupdst
 Pointer to the destination group of this connection. More...
 

Protected Member Functions

void propagate_forward ()
 
void propagate_backward ()
 
void evolve_scaling ()
 
void sort_spikes ()
 
AurynWeight dw_pre (NeuronID post)
 
AurynWeight dw_post (NeuronID pre, NeuronID post)
 
- Protected Member Functions inherited from auryn::DuplexConnection
void compute_reverse_matrix (int z=0)
 
- Protected Member Functions inherited from auryn::SparseConnection
void virtual_serialize (boost::archive::binary_oarchive &ar, const unsigned int version)
 
void virtual_serialize (boost::archive::binary_iarchive &ar, const unsigned int version)
 
void free ()
 
void allocate (AurynLong bufsize)
 
std::vector< type_patternload_pattern_file (string filename, int nb_max_patterns)
 Reads patterns from a .pat file and returns a vector with the patterns. More...
 
- Protected Member Functions inherited from auryn::Connection
void init (TransmitterType transmitter=GLUT)
 

Protected Attributes

AurynFloat tau_plus
 
AurynFloat tau_minus
 
AurynFloat tau_long
 
AurynFloat tau_homeostatic
 
AurynTime scal_timestep
 
AurynFloat scal_beta
 
AurynFloat scal_mul
 
NeuronIDfwd_ind
 
AurynWeightfwd_data
 
NeuronIDbkw_ind
 
AurynWeight ** bkw_data
 
AurynDouble hom_fudge
 
AurynDouble target_rate
 
Tracetr_pre
 
Tracetr_post
 
Tracetr_post2
 
Tracetr_post_hom
 
- Protected Attributes inherited from auryn::SparseConnection
AurynWeight wmin
 
AurynWeight wmax
 
bool skip_diagonal
 
- Protected Attributes inherited from auryn::Connection
TransmitterType trans
 
AurynStateVectortarget_state_vector
 
AurynFloattarget
 A more direct reference on the first element of the target_state_vector. More...
 
NeuronID number_of_spike_attributes
 Number of spike attributes to expect with each spike transmitted through this connection. More...
 
NeuronID spike_attribute_offset
 Stores spike attribute offset in attribute array. More...
 

Additional Inherited Members

- Static Protected Attributes inherited from auryn::SparseConnection
static boost::mt19937 sparse_connection_gen = boost::mt19937()
 

Constructor & Destructor Documentation

◆ TripletScalingConnection() [1/3]

TripletScalingConnection::TripletScalingConnection ( SpikingGroup source,
NeuronGroup destination,
TransmitterType  transmitter = GLUT 
)
76  : DuplexConnection(source, destination, transmitter)
77 {
78 }
DuplexConnection(const char *filename)
Definition: DuplexConnection.cpp:53

◆ TripletScalingConnection() [2/3]

TripletScalingConnection::TripletScalingConnection ( SpikingGroup source,
NeuronGroup destination,
const char *  filename,
AurynFloat  tau_hom = 10,
AurynFloat  eta = 1,
AurynFloat  kappa = 3.,
AurynFloat  beta = 1.0,
AurynFloat  maxweight = 1.,
TransmitterType  transmitter = GLUT 
)
88 : DuplexConnection(source,
89  destination,
90  filename,
91  transmitter)
92 {
93  init(tau_hom, eta, kappa, beta, maxweight);
94  init_shortcuts();
95 }
DuplexConnection(const char *filename)
Definition: DuplexConnection.cpp:53

◆ TripletScalingConnection() [3/3]

TripletScalingConnection::TripletScalingConnection ( SpikingGroup source,
NeuronGroup destination,
AurynWeight  weight,
AurynFloat  sparseness = 0.05,
AurynFloat  tau_hom = 10,
AurynFloat  eta = 1,
AurynFloat  kappa = 3.,
AurynFloat  beta = 1.0,
AurynFloat  maxweight = 1.,
TransmitterType  transmitter = GLUT,
string  name = "TripletScalingConnection" 
)
106 : DuplexConnection(source,
107  destination,
108  weight,
109  sparseness,
110  transmitter,
111  name)
112 {
113  init(tau_hom, eta, kappa, beta, maxweight);
114  init_shortcuts();
115 }
DuplexConnection(const char *filename)
Definition: DuplexConnection.cpp:53

◆ ~TripletScalingConnection()

TripletScalingConnection::~TripletScalingConnection ( )
virtual
118 {
119  if ( dst->get_post_size() > 0 )
120  free();
121 }
NeuronGroup * dst
Pointer to the destination group of this connection.
Definition: Connection.h:111
NeuronID get_post_size()
Returns the size on this rank.
Definition: SpikingGroup.cpp:314
void free()
Definition: TripletScalingConnection.cpp:72
Here is the call graph for this function:

Member Function Documentation

◆ dw_post()

AurynWeight TripletScalingConnection::dw_post ( NeuronID  pre,
NeuronID  post 
)
protected
145 {
146  // post translation is done in loop below
147  AurynDouble dw = A3_plus*tr_pre->get(pre)*tr_post2->get(post);
148  // cout << "post" << dw << endl;
149  return dw;
150 }
double AurynDouble
Higher precision floating point datatype.
Definition: auryn_definitions.h:158
T get(IndexType i)
Gets element i from vector.
Definition: AurynVector.h:207
Trace * tr_pre
Definition: TripletScalingConnection.h:63
AurynFloat A3_plus
Definition: TripletScalingConnection.h:77
Trace * tr_post2
Definition: TripletScalingConnection.h:65
Here is the call graph for this function:

◆ dw_pre()

AurynWeight TripletScalingConnection::dw_pre ( NeuronID  post)
protected
137 {
138  NeuronID translated_spike = dst->global2rank(post); // only to be used for post traces
139  AurynDouble dw = hom_fudge*(tr_post->get(translated_spike));
140  // cout << "pre" << dw << endl;
141  return dw;
142 }
NeuronID global2rank(NeuronID i)
Converts global NeuronID within the SpikingGroup to the local NeuronID on this rank.
Definition: SpikingGroup.h:446
double AurynDouble
Higher precision floating point datatype.
Definition: auryn_definitions.h:158
NeuronGroup * dst
Pointer to the destination group of this connection.
Definition: Connection.h:111
Trace * tr_post
Definition: TripletScalingConnection.h:64
T get(IndexType i)
Gets element i from vector.
Definition: AurynVector.h:207
AurynDouble hom_fudge
Definition: TripletScalingConnection.h:60
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
Here is the call graph for this function:

◆ evolve()

void TripletScalingConnection::evolve ( )
virtual

Evolve method to update internal connection state. Called by System run method.

Reimplemented from auryn::Connection.

194 {
195  evolve_scaling();
196 }
void evolve_scaling()
Definition: TripletScalingConnection.cpp:213
Here is the call graph for this function:

◆ evolve_scaling()

void TripletScalingConnection::evolve_scaling ( )
inlineprotected
214 {
215  // if ( !stdp_active ) return;
216  // NeuronID i = sys->get_clock()%scal_timestep;
217  // while ( i < dst->get_rank_size() ) {
218  // const AurynFloat regulator = 1.0-pow(tr_post_hom->normalized_get(i)/target_rate,3);
219  // NeuronID neuron = dst->rank2global(i);
220  // for (NeuronID * c = bkw->get_row_begin(neuron) ; c != bkw->get_row_end(neuron) ; ++c ) {
221  // *bkw_data[c-bkw_ind] += scal_mul*regulator*(*bkw_data[c-bkw_ind]);
222  // }
223  // i += scal_timestep;
224  // }
225  // NeuronID i = sys->get_clock()%scal_timestep;
226  // while ( i < dst->get_size() ) {
227  // for (NeuronID * j = fwd->get_row_begin(i) ;
228  // j != fwd->get_row_end(i) ;
229  // ++j ) {
230  // AurynWeight * cor = fwd->get_value_ptr(j);
231  // AurynFloat diff = target_rate-tr_post_hom->normalized_get(dst->global2rank(*j));
232  // *cor += (TRIPLETSCALINGCONNECTION_EULERUPGRADE_STEP)*diff*(*cor);
233  // }
234  // i += scal_timestep;
235  // }
236 
237  if ( !stdp_active ) {
238  return;
239  }
240 
241  const NeuronID offset = sys->get_clock()%scal_timestep;
242  for ( NeuronID pre = offset ; pre < src->get_pre_size() ; pre += scal_timestep ) {
243  for (NeuronID * post = fwd->get_row_begin(pre) ;
244  post != fwd->get_row_end(pre) ;
245  ++post ) {
246  AurynWeight * tmp = fwd->get_value_ptr(post);
247  const NeuronID translated = dst->global2rank(*post);
248  const AurynFloat regulator = 1.0-pow(tr_post_hom->normalized_get(translated)/target_rate,3);
249  *tmp += scal_mul*regulator*(*tmp);
250  }
251  }
252 }
NeuronID global2rank(NeuronID i)
Converts global NeuronID within the SpikingGroup to the local NeuronID on this rank.
Definition: SpikingGroup.h:446
NeuronID * get_row_end(NeuronID i)
Definition: ComplexMatrix.h:952
bool stdp_active
Definition: TripletScalingConnection.h:84
virtual AurynFloat normalized_get(NeuronID i)
Get trace value of trace dived by tau.
Definition: Trace.cpp:67
AurynDouble target_rate
Definition: TripletScalingConnection.h:61
AurynFloat AurynWeight
Unit of synaptic weights.
Definition: auryn_definitions.h:159
SpikingGroup * src
Pointer to the source group of this connection.
Definition: Connection.h:108
NeuronGroup * dst
Pointer to the destination group of this connection.
Definition: Connection.h:111
NeuronID * get_row_begin(NeuronID i)
Definition: ComplexMatrix.h:940
System * sys
Global pointer to instance of System which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:37
float AurynFloat
Low precision floating point datatype.
Definition: auryn_definitions.h:157
ForwardMatrix * fwd
Definition: DuplexConnection.h:63
AurynTime scal_timestep
Definition: TripletScalingConnection.h:50
T * get_value_ptr(const NeuronID i)
Returns pointer to the the data value to an item that is i-th in the colindex array.
Definition: ComplexMatrix.h:1110
AurynTime get_clock()
Gets the current clock value in AurynTime.
Definition: System.cpp:231
Trace * tr_post_hom
Definition: TripletScalingConnection.h:66
AurynFloat scal_mul
Definition: TripletScalingConnection.h:52
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
NeuronID get_pre_size()
Returns the size of the group.
Definition: SpikingGroup.cpp:309
Here is the call graph for this function:

◆ finalize()

void TripletScalingConnection::finalize ( )
virtual

Finalizes connection after random or manual initialization of the weights.

Essentially pads zeros or non-existing elements at the end of ComplexMatrix. Called interally or after manually filling matrices.

Reimplemented from auryn::DuplexConnection.

67  {
69  init_shortcuts();
70 }
virtual void finalize()
Finalizes connection after random or manual initialization of the weights.
Definition: DuplexConnection.cpp:43
Here is the call graph for this function:

◆ free()

void TripletScalingConnection::free ( )
73 {
74 }

◆ get_wmin()

AurynWeight TripletScalingConnection::get_wmin ( )
209 {
210  return w_min;
211 }
AurynFloat w_min
Definition: TripletScalingConnection.h:79

◆ propagate()

void TripletScalingConnection::propagate ( )
virtual

Internally used propagate method.

This method propagates spikes in the main simulation loop. Should usually not be called directly by the user.

Reimplemented from auryn::SparseConnection.

188 {
191 }
void propagate_forward()
Definition: TripletScalingConnection.cpp:153
void propagate_backward()
Definition: TripletScalingConnection.cpp:171
Here is the call graph for this function:

◆ propagate_backward()

void TripletScalingConnection::propagate_backward ( )
protected
172 {
173  SpikeContainer::const_iterator spikes_end = dst->get_spikes_immediate()->end();
174  // process spikes
175  for (SpikeContainer::const_iterator spike = dst->get_spikes_immediate()->begin() ; // spike = post_spike
176  spike != spikes_end ; ++spike ) {
177  NeuronID translated_spike = dst->global2rank(*spike); // only to be used for post traces
178  if ( stdp_active ) {
179  for (NeuronID * c = bkw->get_row_begin(*spike) ; c != bkw->get_row_end(*spike) ; ++c ) {
180  *bkw_data[c-bkw_ind] = *bkw_data[c-bkw_ind] + dw_post(*c,translated_spike);
182  }
183  }
184  }
185 }
NeuronID * bkw_ind
Definition: TripletScalingConnection.h:57
NeuronID global2rank(NeuronID i)
Converts global NeuronID within the SpikingGroup to the local NeuronID on this rank.
Definition: SpikingGroup.h:446
bool stdp_active
Definition: TripletScalingConnection.h:84
AurynFloat w_max
Definition: TripletScalingConnection.h:80
BackwardMatrix * bkw
Definition: DuplexConnection.h:64
NeuronID * get_row_end(NeuronID i)
Definition: SimpleMatrix.h:598
NeuronGroup * dst
Pointer to the destination group of this connection.
Definition: Connection.h:111
SpikeContainer * get_spikes_immediate()
Returns pointer to SpikeContainer of spikes generated during the last evolve() step.
Definition: SpikingGroup.cpp:250
AurynWeight ** bkw_data
Definition: TripletScalingConnection.h:58
AurynWeight dw_post(NeuronID pre, NeuronID post)
Definition: TripletScalingConnection.cpp:144
NeuronID * get_row_begin(NeuronID i)
Definition: SimpleMatrix.h:586
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
Here is the call graph for this function:

◆ propagate_forward()

void TripletScalingConnection::propagate_forward ( )
protected
154 {
155  for (SpikeContainer::const_iterator spike = src->get_spikes()->begin() ; // spike = pre_spike
156  spike != src->get_spikes()->end() ; ++spike ) {
157  for (NeuronID * c = w->get_row_begin(*spike) ; c != w->get_row_end(*spike) ; ++c ) { // c = post index
158  AurynWeight value = fwd_data[c-fwd_ind];
159  transmit( *c , value );
160  if ( stdp_active ) {
161  fwd_data[c-fwd_ind] -= dw_pre(*c);
162  if ( fwd_data[c-fwd_ind] < w_min )
163  fwd_data[c-fwd_ind] = w_min;
164  }
165  }
166  // update pre_trace
167  // tr_pre->inc(*spike);
168  }
169 }
NeuronID * fwd_ind
Definition: TripletScalingConnection.h:54
void transmit(const NeuronID id, const AurynWeight amount)
Default way to transmit a spike to a postsynaptic partner.
Definition: Connection.h:294
NeuronID * get_row_end(NeuronID i)
Definition: ComplexMatrix.h:952
ForwardMatrix * w
A pointer that points per default to the ComplexMatrix that stores the connectinos.
Definition: SparseConnection.h:147
bool stdp_active
Definition: TripletScalingConnection.h:84
SpikeContainer * get_spikes()
Returns pointer to a spike container that contains spikes which arrive in this timestep from all neur...
Definition: SpikingGroup.cpp:245
AurynFloat AurynWeight
Unit of synaptic weights.
Definition: auryn_definitions.h:159
SpikingGroup * src
Pointer to the source group of this connection.
Definition: Connection.h:108
NeuronID * get_row_begin(NeuronID i)
Definition: ComplexMatrix.h:940
AurynWeight dw_pre(NeuronID post)
Definition: TripletScalingConnection.cpp:136
AurynWeight * fwd_data
Definition: TripletScalingConnection.h:55
AurynFloat w_min
Definition: TripletScalingConnection.h:79
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
Here is the call graph for this function:

◆ set_beta()

void TripletScalingConnection::set_beta ( AurynFloat  beta)
255 {
256  scal_beta = beta;
257  // scal_beta *= A3_plus*tau_plus*tau_long;
258  logger->parameter("beta",beta);
259 
260  scal_timestep = 1000;
262 
263  logger->parameter("scaling_timestep",(int)scal_timestep);
264  logger->parameter("scal_mul",scal_mul);
265 }
void parameter(std::string name, T value)
Definition: Logger.h:90
Logger * logger
Global pointer to instance of Logger which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:36
AurynFloat scal_beta
Definition: TripletScalingConnection.h:51
double auryn_timestep
Simulation timestep in seconds.
Definition: auryn_definitions.cpp:31
AurynTime scal_timestep
Definition: TripletScalingConnection.h:50
AurynFloat scal_mul
Definition: TripletScalingConnection.h:52
Here is the call graph for this function:

◆ set_hom_trace()

void TripletScalingConnection::set_hom_trace ( AurynFloat  freq)
124 {
125  if ( dst->get_post_size() > 0 )
127 }
void set_all(const T v)
Set all elements to value v.
Definition: AurynVector.h:232
NeuronGroup * dst
Pointer to the destination group of this connection.
Definition: Connection.h:111
AurynFloat get_tau()
Get decay time constant.
Definition: Trace.cpp:46
Trace * tr_post_hom
Definition: TripletScalingConnection.h:66
NeuronID get_post_size()
Returns the size on this rank.
Definition: SpikingGroup.cpp:314
Here is the call graph for this function:

◆ set_max_weight()

void TripletScalingConnection::set_max_weight ( AurynWeight  maximum_weight)
virtual

Sets maximum weight (for plastic connections).

Reimplemented from auryn::SparseConnection.

204 {
205  w_max = max;
206 }
AurynFloat w_max
Definition: TripletScalingConnection.h:80

◆ set_min_weight()

void TripletScalingConnection::set_min_weight ( AurynWeight  minimum_weight)
virtual

Sets minimum weight (for plastic connections).

Reimplemented from auryn::SparseConnection.

199 {
200  w_min = min;
201 }
AurynFloat w_min
Definition: TripletScalingConnection.h:79

◆ sort_spikes()

void auryn::TripletScalingConnection::sort_spikes ( )
protected

Member Data Documentation

◆ A3_plus

AurynFloat auryn::TripletScalingConnection::A3_plus

◆ bkw_data

AurynWeight** auryn::TripletScalingConnection::bkw_data
protected

◆ bkw_ind

NeuronID* auryn::TripletScalingConnection::bkw_ind
protected

◆ fwd_data

AurynWeight* auryn::TripletScalingConnection::fwd_data
protected

◆ fwd_ind

NeuronID* auryn::TripletScalingConnection::fwd_ind
protected

◆ hom_fudge

AurynDouble auryn::TripletScalingConnection::hom_fudge
protected

◆ scal_beta

AurynFloat auryn::TripletScalingConnection::scal_beta
protected

◆ scal_mul

AurynFloat auryn::TripletScalingConnection::scal_mul
protected

◆ scal_timestep

AurynTime auryn::TripletScalingConnection::scal_timestep
protected

◆ stdp_active

bool auryn::TripletScalingConnection::stdp_active

◆ target_rate

AurynDouble auryn::TripletScalingConnection::target_rate
protected

◆ tau_homeostatic

AurynFloat auryn::TripletScalingConnection::tau_homeostatic
protected

◆ tau_long

AurynFloat auryn::TripletScalingConnection::tau_long
protected

◆ tau_minus

AurynFloat auryn::TripletScalingConnection::tau_minus
protected

◆ tau_plus

AurynFloat auryn::TripletScalingConnection::tau_plus
protected

◆ tr_post

Trace* auryn::TripletScalingConnection::tr_post
protected

◆ tr_post2

Trace* auryn::TripletScalingConnection::tr_post2
protected

◆ tr_post_hom

Trace* auryn::TripletScalingConnection::tr_post_hom
protected

◆ tr_pre

Trace* auryn::TripletScalingConnection::tr_pre
protected

◆ w_max

AurynFloat auryn::TripletScalingConnection::w_max

◆ w_min

AurynFloat auryn::TripletScalingConnection::w_min

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