ANNarchy 5.0.0
  • ANNarchy
  • Installation
  • Tutorial
  • Manual
  • Notebooks
  • Reference

  • ANNarchy
  • Core components
    • Network
    • Population
    • Projection
    • Monitor
    • PopulationView
    • Dendrite
  • Neuron and Synapse models
    • Neuron
    • Synapse
    • Parameter
    • Variable
    • Creating
    • Pruning
    • Constant
  • Neuron models
    • LeakyIntegrator
    • Izhikevich
    • IF_curr_exp
    • IF_cond_exp
    • IF_curr_alpha
    • IF_cond_alpha
    • HH_cond_exp
    • EIF_cond_alpha_isfa_ista
    • EIF_cond_exp_isfa_ista
  • Synapse models
    • Hebb
    • Oja
    • IBCM
    • STP
    • STDP
  • Inputs
    • InputArray
    • TimedArray
    • PoissonPopulation
    • TimedPoissonPopulation
    • SpikeSourceArray
    • HomogeneousCorrelatedSpikeTrains
    • CurrentInjection
    • DecodingProjection
    • ImagePopulation
    • VideoPopulation
  • Random Distributions
    • Uniform
    • DiscreteUniform
    • Normal
    • LogNormal
    • Exponential
    • Gamma
    • Binomial
  • Functions
    • add_function
    • functions
  • Callbacks
    • every
  • Utilities
    • report
    • timeit
    • sparse_random_matrix
    • sparse_delays_from_weights
    • magic_network
  • Convolution
    • Convolution
    • Pooling
    • Transpose
    • Copy
  • BOLD monitoring
    • BoldMonitor
    • BoldModel
    • balloon_RN
    • balloon_RL
    • balloon_CN
    • balloon_CL
    • balloon_maith2021
    • balloon_two_inputs
  • Tensorboard logging
    • Logger
  • ANN-to-SNN conversion
    • ANNtoSNNConverter
  • DEPRECATED Top-level API
    • setup
    • compile
    • clear
    • reset
    • set_seed
    • get_population
    • get_projection
    • populations
    • projections
    • monitors
    • simulate
    • simulate_until
    • step
    • enable_learning
    • disable_learning
    • get_time
    • set_time
    • get_current_step
    • set_current_step
    • dt
    • save
    • load
    • save_parameters
    • load_parameters
    • callbacks_enabled
    • disable_callbacks
    • enable_callbacks
    • clear_all_callbacks

On this page

  • Izhikevich
    • Parameters

Izhikevich

Izhikevich(
    self,
    a=0.02,
    b=0.2,
    c=-65.0,
    d=8.0,
    v_thresh=30.0,
    i_offset=0.0,
    noise=0.0,
    tau_refrac=0.0,
    conductance='g_exc - g_inh',
)

Izhikevich quadratic spiking neuron.

Izhikevich, E.M. (2003). Simple Model of Spiking Neurons, IEEE Transaction on Neural Networks, 14:6. http://dx.doi.org/10.1109/TNN.2003.820440

The neural equations are:

\frac{dv}{dt} = 0.04 * v^2 + 5.0 * v + 140.0 - u + I

\frac{du}{dt} = a * (b * v - u)

By default, the conductance is “g_exc - g_inh”, but this can be changed by setting the conductance argument:

neuron = ann.Izhikevich(conductance='g_ampa * (1 + g_nmda) - g_gaba')

The synapses are instantaneous, i.e the corresponding conductance is increased from the synaptic efficiency w at the time step when a spike is received.

The ODEs are solved using the explicit Euler method.

Equivalent code:

Izhikevich = ann.Neuron(
    parameters = dict(
        noise = ann.Parameter(0.0),
        a = ann.Parameter(0.02),
        b = ann.Parameter(0.2),
        c = ann.Parameter(-65.0),
        d = ann.Parameter(8.0),
        v_thresh = ann.Parameter(30.0),
        i_offset = ann.Parameter(0.0),
    ), 
    equations = [
        'I = g_exc - g_inh + noise * Normal(0.0, 1.0) + i_offset',
        ann.Variable('dv/dt = 0.04 * v^2 + 5.0 * v + 140.0 - u + I', init = -65.0),
        ann.Variable('du/dt = a * (b*v - u)', init= -13.0),
    ],
    spike = "v > v_thresh",
    reset = "v = c; u += d",
    refractory = 0.0
)

The default parameters are for a regular spiking (RS) neuron. They are defined as local parameters, so their value can be set at the neuron-level. Here is the neuron definition using global parameters:

Izhikevich = ann.Neuron(
    parameters = dict(
        noise = 0.0,
        a = 0.02,
        b = 0.2,
        c = -65.0,
        d = 8.0,
        v_thresh = 30.0,
        i_offset = 0.0,
    ), 
    equations = [
        'I = g_exc - g_inh + noise * Normal(0.0, 1.0) + i_offset',
        ann.Variable('dv/dt = 0.04 * v^2 + 5.0 * v + 140.0 - u + I', init = -65.0),
        ann.Variable('du/dt = a * (b*v - u)', init= -13.0),
    ],
    spike = "v > v_thresh",
    reset = "v = c; u += d",
    refractory = 0.0
)

Parameters

Name Type Description Default
a float Speed of the recovery variable 0.02
b float Scaling of the recovery variable 0.2
c float Reset potential. -65.0
d float Increment of the recovery variable after a spike. 8.0
v_thresh float Spike threshold (mV). 30.0
i_offset float external current (nA). 0.0
noise float Amplitude of the normal additive noise. 0.0
tau_refrac float Duration of refractory period (ms). 0.0
conductance str Conductances used as inputs. 'g_exc - g_inh'
LeakyIntegrator
IF_curr_exp
 

Copyright Julien Vitay, Helge Ülo Dinkelbach, Fred Hamker