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)
    """
)