3.5. Built-in synapse types¶

ANNarchy provides standard spiking synapse models, similar to the ones defined in PyNN (http://neuralensemble.org/docs/PyNN/reference/plasticitymodels.html).

3.5.1. Rate-coded¶

ANNarchy.models.Hebb = <class 'ANNarchy.models.Synapses.Hebb'>[source]

Rate-coded synapse with Hebbian plasticity.

Parameters (global):

• eta = 0.01 : learning rate.

Learning rule:

• w : weight:

dw/dt = eta * pre.r * post.r


Equivalent code:

Hebb = Synapse(
parameters = """
eta = 0.01 : projection
""",
equations = """
dw/dt = eta * pre.r * post.r : min=0.0
"""
)

ANNarchy.models.Oja = <class 'ANNarchy.models.Synapses.Oja'>[source]

Rate-coded synapse with regularized Hebbian plasticity (Oja).

Parameters (global):

• eta = 0.01 : learning rate.
• alpha = 1.0 : regularization constant.

Learning rule:

• w : weight:

dw/dt = eta * ( pre.r * post.r - alpha * post.r^2 * w )


Equivalent code:

Oja = Synapse(
parameters = """
eta = 0.01 : projection
alpha = 1.0 : projection
""",
equations = """
dw/dt = eta * ( pre.r * post.r - alpha * post.r^2 * w ) : min=0.0
"""
)

ANNarchy.models.IBCM = <class 'ANNarchy.models.Synapses.IBCM'>[source]

Rate-coded synapse with Intrator & Cooper (1992) plasticity.

Parameters (global):

• eta = 0.01 : learning rate.
• tau = 2000.0 : time constant of the post-synaptic threshold.

Learning rule:

• theta : post-synaptic threshold:

tau * dtheta/dt + theta = post.r^2

• w : weight:

dw/dt = eta * post.r * (post.r - theta) * pre.r


Equivalent code:

IBCM = Synapse(
parameters = """
eta = 0.01 : projection
tau = 2000.0 : projection
""",
equations = """
tau * dtheta/dt + theta = post.r^2 : postsynaptic, exponential
dw/dt = eta * post.r * (post.r - theta) * pre.r : min=0.0, explicit
"""
)


3.5.2. Short-term plasticity¶

ANNarchy.models.STP = <class 'ANNarchy.models.Synapses.STP'>[source]

Synapse exhibiting short-term facilitation and depression, implemented using the model of Tsodyks, Markram et al.:

Tsodyks, Uziel and Markram (2000) Synchrony Generation in Recurrent Networks with Frequency-Dependent Synapses. Journal of Neuroscience 20:RC50

Note that the time constant of the post-synaptic current is set in the neuron model, not here.

Parameters (global):

• tau_rec = 100.0 : depression time constant (ms).
• tau_facil = 0.01 : facilitation time constant (ms).
• U = 0.5 : use parameter.

Variables:

• x : recovery variable:

dx/dt = (1 - x)/tau_rec

• u : facilitation variable:

du/dt = (U - u)/tau_facil


Both variables are integrated event-driven.

Pre-spike events:

g_target += w * u * x
x *= (1 - u)
u += U * (1 - u)


Equivalent code:

STP = Synapse(
parameters = """
tau_rec = 100.0 : projection
tau_facil = 0.01 : projection
U = 0.5
""",
equations = """
dx/dt = (1 - x)/tau_rec : init = 1.0, event-driven
du/dt = (U - u)/tau_facil : init = 0.5, event-driven
""",
pre_spike="""
g_target += w * u * x
x *= (1 - u)
u += U * (1 - u)
"""
)


3.5.3. Spike-timing dependent plasticity¶

ANNarchy.models.STDP = <class 'ANNarchy.models.Synapses.STDP'>[source]

Spike-timing dependent plasticity.

This is the online version of the STDP rule.

Song, S., and Abbott, L.F. (2001). Cortical development and remapping through spike timing-dependent plasticity. Neuron 32, 339-350.

Parameters (global):

• tau_plus = 20.0 : time constant of the pre-synaptic trace (ms)
• tau_minus = 20.0 : time constant of the pre-synaptic trace (ms)
• A_plus = 0.01 : increase of the pre-synaptic trace after a spike.
• A_minus = 0.01 : decrease of the post-synaptic trace after a spike.
• w_min = 0.0 : minimal value of the weight w.
• w_max = 1.0 : maximal value of the weight w.

Variables:

• x : pre-synaptic trace:

tau_plus  * dx/dt = -x

• y: post-synaptic trace:

tau_minus * dy/dt = -y


Both variables are evaluated event-driven.

Pre-spike events:

g_target += w

x += A_plus * w_max

w = clip(w + y, w_min , w_max)


Post-spike events:

y -= A_minus * w_max

w = clip(w + x, w_min , w_max)


Equivalent code:

STDP = Synapse(
parameters = """
tau_plus = 20.0 : projection
tau_minus = 20.0 : projection
A_plus = 0.01 : projection
A_minus = 0.01 : projection
w_min = 0.0 : projection
w_max = 1.0 : projection
""",
equations = """
tau_plus  * dx/dt = -x : event-driven
tau_minus * dy/dt = -y : event-driven
""",
pre_spike="""
g_target += w
x += A_plus * w_max
w = clip(w + y, w_min , w_max)
""",
post_spike="""
y -= A_minus * w_max
w = clip(w + x, w_min , w_max)
"""
)