Izhikevich Spiking Neuron Model
Contributors

Introduction

This project deals with the re-implementation of Izhikevich’s spiking neuron model (See here). There are versions of this model in this repository implemented in MATLAB, NEURON, NeuroML 2 and PyNN (NEURON, Brian and NEST backends) formats. Simulation results are in general equal or similar to those shown in the original publication (see Fig. 1 of Izhikevich 2004). However, a few model features are difficult to reproduce due to particularities regarding model description and/or backend implementations, as further described below.

Installation

To get a local clone of this project Install Git, go to the directory in which the project will be cloned and type:

git clone https://github.com/OpenSourceBrain/IzhikevichModel.git

In order to install PyNN see http://neuralensemble.org/docs/PyNN/installation.html. Preferably, use the latest v0.8 version from GitHub. At the moment, the model is supported by the NEURON, Brian and NEST backend simulators.

To perform simulations using NeuroML2 and LEMS you may install a pre-compiled package named jNeuroML as described here.

Versions of the project

The original model in MATLAB format has been converted to a number of other formats.

PyNN

Simulating Fig. 1 protocol in PyNN

First, go to the PyNN subdirectory in your working directory:

cd IzhikevichModel/PyNN/

Then, type the following command to run a simulation using Neuron:

python izhikevich2004.py neuron

… or to run a simulation using NEST:

python izhikevich2004.py nest

The figure below shows the result obtained when running the current version of izhikevich2004.py with NEST. Note that subplots L and R are not in accordance with the original published results (see Comparison to original model behavior).

NeuroML 2

First, go to the NeuroML2 subdirectory in your working directory:

cd IzhikevichModel/NeuroML2/

Then, type the following command to run a simulation using jNeuroML (make sure the jnml script is in your PATH):

jnml LEMS_WhichModel.xml

The XML for an Izhikevich model in NeuroML v2.0 is below:

<code class="xml">
<izhikevichCell id="TonicSpiking" v0 = "-70mV" thresh = "30mV" a ="0.02" b = "0.2" c = "-65.0" d = "6"/></code>

For full examples of single cells see TonicSpiking or PhasicBursting

Examples of simulation results using NeuroML and LEMS are depicted in the figure below.

Comparison to original model behavior

Model Label NeuroML 2 pyNN.neuron pyNN.nest
Tonic spiking    A (a)    (a)    (a)
Phasic spiking    B (a)    (a)    (a)
Tonic bursting    C (b)    (b)    (b)
Phasic bursting    D (a)    (a)    (a)
Mixed mode    E (a)    (a)    (a)
Spike freq. adapt.    F (a)    (a)    (a)
Class 1 excitable    G (a, e)    (d, e)    (e)
Class 2 excitable    H ©    (d)    (g)
Spike latency    I (b)    (b)    (b)
Subthresh. osc.    J (a)    (a)    (a)
Resonator    K (a)    (a)    (a)
Integrator    L (a, e)    (e)    (e)
Rebound spike    M (a)    (a)    (a)
Rebound burst    N (a)    (a)    (a)
Threshold variability    O (a)    (a)    (a)
Bistability    P (b)    (b)    (b)
Depolarizing after-potential    Q (b)    (b)    (b)
Accomodation    R (a, f)    (d)    (f)
Inhibition-induced spiking    S (b)    (b)    (b)
Inhibition-induced bursting    T (b)    (b)    (b)

(a) Same behaviour
(b) Similar behaviour when slightly modifying parameters. See the table below.
© Similar but not identical behaviour (different number of spikes in the stimulus time frame)
(d) Not yet implemented. Need ramp injected current. See https://github.com/NeuralEnsemble/PyNN/issues/257
(e) Requires an alternative model implementation since the model parameterization is different in the original Matlab code. In NeuroML new ComponentType generalizedIzhikevichCell was created.
(f) Requires an alternative model implementation since the model parameterization is different in the original Matlab code. In NeuroML new ComponentType accomodationIzhikevichCell was created.
(g) Could not reproduce model behavior

Parameter changes to adequate model behaviour

Model Label Parameter Original value New value
Spike latency I Amplitude of pulse current 7.04 6.71
Bistability P Initial time of 2nd pulse 216 208
Depolarizing after-potential Q b 0.2 0.18
Inhibition-induced spiking S Inhibition ending 250 220
Inhibition-induced bursting T d ~~2.0 ~~0.7

Alternative implementations

An alternative implementation of the Izhikevich model was created using Moose. The code can be found here. There is a GUI in which the user chooses the model parameterization an visualizes the simulation results (see the figure below).

Do you have another implementation of this model?

Please share it with the rest of the community! Contact Padraig Gleeson or Vitor Chaud.