stdp
stdp  Synapse model for spiketiming dependent plasticity
Description
stdp_synapse is a synapse with spike time dependent plasticity (as defined in 1). Here the weight dependence exponent can be set separately for potentiation and depression. Examples:
Multiplicative STDP 
mu_plus = mu_minus = 1 

Additive STDP 
mu_plus = mu_minus = 0 

Guetig STDP 
mu_plus, mu_minus in [0, 1] 

Van Rossum STDP 
mu_plus = 0 mu_minus = 1 
References
 1(1,2)
Guetig et al. (2003) Learning Input Correlations through Nonlinear Temporally Asymmetric Hebbian Plasticity. Journal of Neuroscience
 2
Rubin, J., Lee, D. and Sompolinsky, H. (2001). Equilibrium properties of temporally asymmetric Hebbian plasticity, PRL 86,364367
 3
Song, S., Miller, K. D. and Abbott, L. F. (2000). Competitive Hebbian learning through spiketimingdependent synaptic plasticity,Nature Neuroscience 3:9,919–926
 4
van Rossum, M. C. W., Bi, GQ and Turrigiano, G. G. (2000). Stable Hebbian learning from spike timingdependent plasticity, Journal of Neuroscience, 20:23,8812–8821
Parameters
Name 
Physical unit 
Default value 
Description 

the_delay 
ms 
1ms 
!!! cannot have a variable called “delay” 
lambda 
real 
0.01 

tau_tr_pre 
ms 
20ms 

tau_tr_post 
ms 
20ms 

alpha 
real 
1 

mu_plus 
real 
1 

mu_minus 
real 
1 

Wmax 
real 
100.0 

Wmin 
real 
0.0 
State variables
Name 
Physical unit 
Default value 
Description 

w 
real 
1.0 
Source code
synapse stdp:
state:
w real = 1.0
#pre_trace real = 0.
#post_trace real = 0.
end
parameters:
the_delay ms = 1ms # !!! cannot have a variable called "delay"
lambda real = 0.01
tau_tr_pre ms = 20ms
tau_tr_post ms = 20ms
alpha real = 1
mu_plus real = 1
mu_minus real = 1
Wmax real = 100.0
Wmin real = 0.0
end
equations:
kernel pre_trace_kernel = exp(t / tau_tr_pre)
inline pre_trace real = convolve(pre_trace_kernel,pre_spikes)
# alltoall trace of postsynaptic neuron
kernel post_trace_kernel = exp(t / tau_tr_post)
inline post_trace real = convolve(post_trace_kernel,post_spikes)
end
input:
pre_spikes nS <spike
post_spikes nS <spike
end
output: spike
onReceive(post_spikes):
# potentiate synapse
w_ real = Wmax * (w / Wmax + (lambda * (1.0  (w / Wmax)) ** mu_plus * pre_trace))
w = min(Wmax,w_)
end
onReceive(pre_spikes):
# depress synapse
w_ real = Wmax * (w / Wmax  (alpha * lambda * (w / Wmax) ** mu_minus * post_trace))
w = max(Wmin,w_)
# deliver spike to postsynaptic partner
deliver_spike(w,the_delay)
end
end