Open clinssen opened 3 years ago
@clinssen Thank you for this nice exposition! Would you consider to turn it in to a notebook under doc/userdoc/model_details
?
Issue automatically marked stale!
Could someone involved please send an update on the status of this issue?
The triplet synapse model [1] begins by formulating a few trace values in the form:
We deem this formulation to be equivalent to a sum of delta functions, as formulated in [2]:
where the delta function (a definition was omitted from [2]) is presumably the usual Dirac delta, defined as:
The weight update rules for depression and facilitation are then formulated, respectively, in the form:
a, b, c and d are constants. The superscript minus symbol on the time parameter t indicates that the value just prior to an update due to an arriving spike is intended. Sometimes this is written as
x(t - epsilon)
, but an adequate definition of epsilon may then be lacking ("epsilon is a small positive constant" [1]).The edge case occurs when a pre- and postsynaptic (backpropagating) action potential arrive simultaneously at the synapse. In this case, it is also significant whether the first terms in each weight update equation (tr1_post(t) and tr2_pre(t)) refer to the value just prior, or just after arrival of the spike, in other words, do we mean the values at t⁻ or at t⁺?
Note that the delta functions appear as an integrand in the calculation of x(t). The antiderivative of the Dirac delta is the Heaviside step function, often defined as:
The value of step(0) is, however, more a matter of convention than of rigorous mathematics, so other choices are conceivable.
The current status is that NEST interprets the above formulation as meaning t⁻, so it conflicts with the given definitions, which correspond to an interpretation as t⁺.
So the question is, do we take the definitions above as what we actually want, and conclude that there is a bug in the model? Or do we say that the current implementation of the triplet rule simply defines the step function for its traces as
This is a rare edge case and will probably not qualitatively change any existing simulations. Of course, we should add this as a unit test. It can be based on the attached code, which reproduces the issue. Set
before_increment
to True on lines 213 and 225 to switch the interpretation from t⁺ to t⁻.As first reported on the NEST-users mailing list by Júlia Gallinaro, Dec 2020.
[1] Jean-Pascal Pfister and Wulfram Gerstner, "Triplets of Spikes in a Model of Spike Timing-Dependent Plasticity". The Journal of Neuroscience 26(38), September 20, 2006 https://www.jneurosci.org/content/jneuro/26/38/9673.full.pdf
[2] Abigail Morrison, Markus Diesmann and Wulfram Gerstner, Phenomenological models of synaptic plasticity based on spike timing. Biol. Cybern. 98 (2008)