Modelling STDP in the NEURON simulator


At the time of writing (or at least, last time I looked), the NEURON simulator does not have a built-in mechanism for spike-timing-dependent plasticity (STDP). There are many possible ways of implementing such a mechanism, using the NMODL language. This page describes one such possibility.

If you have your web browser set up to run NEURON programs automatically, you can auto launch the demo. Otherwise, download and unzip, compile stdwa_songabbott.mod in the usual way (e.g. nrnivmodl on Linux), run demo_stdwa.hoc and click on "Init & Run".

The demo consists of a presynaptic NetStim object which generates spikes, a postsynaptic IntFire1 neuron, and a fake postsynaptic NetStim. Normally, you would use spikes generated in the postsynaptic neuron to calculate STDP, but for demonstration purposes we use spikes generated by the 'fake' postsynaptic spike generator.

On running the demo, you should see something like this:

Screenshot of STDwa demo, top graph

The top panel shows the internal variables P and M of the weight-adjuster process wa, which control the amount of potentiation and depression. For demonstration purposes, wa.p and wa.m show the values that wa.P and wa.M would have in between spikes, although these are not normally calculated during simulations.

Screenshot of STDwa demo, middle graph

The middle panel shows the weight of the pre2post NetCon object, and the internal variable wsyn of the weight-adjuster process, which is a pointer to pre2post.weight (this is why you can only see the green line: it exactly overlays the orange one).

Screenshot of STDwa demo, bottom graph

The bottom panel shows the weight change.

To be continued. Check back in a few days, I plan to explain in more detail what is happening and how to use the mechanism in your own code.