GeNN
4.9.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 <weightUpdateModels.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 VarVec | 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 std::string | getPreDynamicsCode () const |
Gets code to be run after presynaptic neuron update. More... | |
virtual std::string | getPostDynamicsCode () const |
Gets code to be run after postsynaptic neuron update. More... | |
virtual VarVec | getPreVars () const |
virtual VarVec | getPostVars () const |
virtual bool | isPreSpikeEventTimeRequired () const |
Whether presynaptic spike-like-event times are needed or not. More... | |
virtual bool | isPrevPreSpikeTimeRequired () const |
Whether PREVIOUS presynaptic spike times are needed or not. More... | |
virtual bool | isPrevPostSpikeTimeRequired () const |
Whether PREVIOUS postsynaptic spike times are needed or not. More... | |
virtual bool | isPrevPreSpikeEventTimeRequired () const |
Whether PREVIOUS presynaptic spike-like-event times are needed or not. More... | |
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... | |
boost::uuids::detail::sha1::digest_type | getHashDigest () const |
Update hash from model. More... | |
void | validate () const |
Validate names of parameters etc. More... | |
Public Member Functions inherited from Models::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 () |
virtual EGPVec | getExtraGlobalParams () const |
size_t | getExtraGlobalParamIndex (const std::string ¶mName) const |
Find the index of a named extra global parameter. More... | |
Additional Inherited Members | |
Public Types inherited from Models::Base | |
typedef std::vector< Var > | VarVec |
typedef std::vector< VarRef > | VarRefVec |
typedef std::vector< EGPRef > | EGPRefVec |
Public Types inherited from Snippet::Base | |
typedef std::vector< std::string > | StringVec |
typedef std::vector< EGP > | EGPVec |
typedef std::vector< ParamVal > | ParamValVec |
typedef std::vector< DerivedParam > | DerivedParamVec |
Protected Member Functions inherited from Models::Base | |
void | updateHash (boost::uuids::detail::sha1 &hash) const |
void | validate () const |
Validate names of parameters etc. More... | |
Protected Member Functions inherited from Snippet::Base | |
void | updateHash (boost::uuids::detail::sha1 &hash) const |
void | validate () const |
Validate names of parameters etc. More... | |
Static Protected Member Functions inherited from Snippet::Base | |
template<typename T > | |
static size_t | getNamedVecIndex (const std::string &name, const std::vector< T > &vec) |
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 Models::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.