GeNN
3.3.0
GPU enhanced Neuronal Networks (GeNN)
|
This is a simple STDP rule including a time delay for the finite transmission speed of the synapse. More...
#include <newWeightUpdateModels.h>
Public Member Functions | |
DECLARE_WEIGHT_UPDATE_MODEL (PiecewiseSTDP, 10, 2, 0, 0) | |
virtual StringVec | getParamNames () const override |
Gets names of of (independent) model parameters. More... | |
virtual StringPairVec | getVars () const override |
Gets names and types (as strings) of model variables. More... | |
virtual std::string | getSimCode () const override |
Gets simulation code run when 'true' spikes are received. More... | |
virtual std::string | getLearnPostCode () const override |
Gets code to include in the learnSynapsesPost kernel/function. More... | |
virtual DerivedParamVec | getDerivedParams () const override |
virtual bool | isPreSpikeTimeRequired () const override |
Whether presynaptic spike times are needed or not. More... | |
virtual bool | isPostSpikeTimeRequired () const override |
Whether postsynaptic spike times are needed or not. More... | |
Public Member Functions inherited from WeightUpdateModels::Base | |
virtual std::string | getEventCode () const |
Gets code run when events (all the instances where event threshold condition is met) are received. More... | |
virtual std::string | getSynapseDynamicsCode () const |
Gets code for synapse dynamics which are independent of spike detection. More... | |
virtual std::string | getEventThresholdConditionCode () const |
Gets codes to test for events. More... | |
virtual std::string | getSimSupportCode () const |
Gets support code to be made available within the synapse kernel/function. More... | |
virtual std::string | getLearnPostSupportCode () const |
Gets support code to be made available within learnSynapsesPost kernel/function. More... | |
virtual std::string | getSynapseDynamicsSuppportCode () const |
Gets support code to be made available within the synapse dynamics kernel/function. More... | |
virtual std::string | getPreSpikeCode () const |
virtual std::string | getPostSpikeCode () const |
virtual StringPairVec | getPreVars () const |
virtual StringPairVec | getPostVars () const |
virtual StringPairVec | getExtraGlobalParams () const |
size_t | getPreVarIndex (const std::string &varName) const |
Find the index of a named presynaptic variable. More... | |
size_t | getPostVarIndex (const std::string &varName) const |
Find the index of a named postsynaptic variable. More... | |
Public Member Functions inherited from NewModels::Base | |
size_t | getVarIndex (const std::string &varName) const |
Find the index of a named variable. More... | |
Public Member Functions inherited from Snippet::Base | |
virtual | ~Base () |
Additional Inherited Members | |
Public Types inherited from Snippet::Base | |
typedef std::function< double(const std::vector< double > &, double)> | DerivedParamFunc |
typedef std::vector< std::string > | StringVec |
typedef std::vector< std::pair< std::string, std::string > > | StringPairVec |
typedef std::vector< std::pair< std::string, std::pair< std::string, double > > > | NameTypeValVec |
typedef std::vector< std::pair< std::string, DerivedParamFunc > > | DerivedParamVec |
Static Protected Member Functions inherited from NewModels::Base | |
static size_t | getVarIndex (const std::string &varName, const StringPairVec &vars) |
This is a simple STDP rule including a time delay for the finite transmission speed of the synapse.
The STDP window is defined as a piecewise function:
The STDP curve is applied to the raw synaptic conductance gRaw
, which is then filtered through the sugmoidal filter displayed above to obtain the value of g
.
gRaw
(and hence in g
).gRaw
that is subject to the STDP rule. The resulting synaptic conductance is a sigmoid filter of gRaw
. This implies that g
is initialised but not gRaw
, the synapse will revert to the value that corresponds to gRaw
.An example how to use this synapse correctly is given in map_classol.cc
(MBody1 userproject):
g
fully to 0
, as this leads to gRaw
= -infinity and this is not support. I.e., 'g' needs to be some nominal value > 0 (but can be extremely small so that it acts like it's 0).The model has 2 variables:
g:
conductance of scalar
typegRaw:
raw conductance of scalar
typeParameters are (compare to the figure above):
tLrn:
Time scale of learning changestChng:
Width of learning windowtDecay:
Time scale of synaptic strength decaytPunish10:
Time window of suppression in response to 1/0tPunish01:
Time window of suppression in response to 0/1gMax:
Maximal conductance achievablegMid:
Midpoint of sigmoid g filter curvegSlope:
Slope of sigmoid g filter curvetauShift:
Shift of learning curvegSyn0:
Value of syn conductance g decays to WeightUpdateModels::PiecewiseSTDP::DECLARE_WEIGHT_UPDATE_MODEL | ( | PiecewiseSTDP | , |
10 | , | ||
2 | , | ||
0 | , | ||
0 | |||
) |
|
inlineoverridevirtual |
Gets names of derived model parameters and the function objects to call to Calculate their value from a vector of model parameter values
Reimplemented from Snippet::Base.
|
inlineoverridevirtual |
Gets code to include in the learnSynapsesPost kernel/function.
For examples when modelling STDP, this is where the effect of postsynaptic spikes which occur after presynaptic spikes are applied.
Reimplemented from WeightUpdateModels::Base.
|
inlineoverridevirtual |
Gets names of of (independent) model parameters.
Reimplemented from Snippet::Base.
|
inlineoverridevirtual |
Gets simulation code run when 'true' spikes are received.
Reimplemented from WeightUpdateModels::Base.
|
inlineoverridevirtual |
Gets names and types (as strings) of model variables.
Reimplemented from NewModels::Base.
|
inlineoverridevirtual |
Whether postsynaptic spike times are needed or not.
Reimplemented from WeightUpdateModels::Base.
|
inlineoverridevirtual |
Whether presynaptic spike times are needed or not.
Reimplemented from WeightUpdateModels::Base.