Hi Júlia,
Thanks for writing in. Of course, we try to ensure the correctness of NEST Simulator by validation and unit testing, but it is a complex piece of software with a long history, and it is not impossible that a bug may exist in the triplet STDP synapse. I am not the original author of that model, but I've been working with other synaptic plasticity models and would be happy to investigate.
You probably know already that the (dendritic) communication delay introduces a few quirks in the code. In particular, the postsynaptic spike arrives at the synapse delayed by this amount, whereas the postsynaptic trace values are obtained without the delay (that is, at the actual time that the somatic action potential is fired).
I had a look at your script, and couldn't immediately find anything out of the ordinary. You reproduced the NEST buffering methodology quite accurately (postsynaptic spikes are buffered, and only handled after a presynaptic spike arrives), but during this stage of finding the reason for the discrepancy, it might help to just treat all the spikes (pre and post) chronologically.
Perhaps you already found this, but there are some unit tests in place in pynest/nest/tests/test_stdp_triplet_synapse.py, that do some behavioural validation of the synapse. I don't think these cover the general case (as in your script), but might help honing in on a bug.
I'll try to get back to you over the next few weeks (modulo the holidays...) with more details. If there are any updates from your side in the mean time, please do share!
Best regards,
Charl Linssen
On Thu, Dec 10, 2020, at 19:16, Julia Gallinaro wrote:
Dear NEST community,
I am working with the triplets STDP connection on NEST simulations, and I am interested in how the weight dynamics change when the spike trains are altered in some specific ways.
In order to do that, I run a network simulation using NEST and the triplets STDP rule and save the full spike trains of two neurons which are synaptically connected (one pre and one post). I then recreate the weight changes on a code outside the NEST loop, so that I can manipulate the spike trains and observe what happens to the synaptic weights.
Trying to validate this approach, though, I find that my code (outside NEST loop) generates different weight values than the NEST simulation when using the same spike trains generated during the simulation. I guess I have some error in my implementation of the triplets rule. I thought it could be something with the implementation of the delays, or the moment when the weights are measured in the simulation, but I have had no success trying to fix it yet.
I know this is not exactly a NEST issue, but I thought I would give it a try and ask here at the list. In case someone has already worked with the triplets rule and could point me out to what is/could be wrong in my implementation, I would very much appreciate it :)
Thanks!
best,
Júlia
_______________________________________________
Attachments: