Edit History

Wiki » History » Version 45

Padraig Gleeson, 04 Sep 2015 10:53

1 1 Padraig Gleeson
Introduction
2 7 Padraig Gleeson
------------
3 1 Padraig Gleeson
4 45 Padraig Gleeson
This project deals with the re-implementation of Izhikevich’s spiking neuron model (See [here](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1257420)). 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](http://www.izhikevich.org/publications/whichmod.htm)). However, a few model features are difficult to reproduce due to particularities regarding model description and/or backend implementations, as further described below.
5 1 Padraig Gleeson
6 8 Padraig Gleeson
### Installation
7 7 Padraig Gleeson
8 42 Andrew Davison
To get a local clone of this project [Install Git](http://www.opensourcebrain.org/projects/gitintro/wiki/Wiki), go to the directory in which the project will be cloned and type:
9 1 Padraig Gleeson
10 38 Padraig Gleeson
    git clone https://github.com/OpenSourceBrain/IzhikevichModel.git
11 22 Vitor Chaud
12 42 Andrew Davison
In order to install PyNN see http://neuralensemble.org/docs/PyNN/installation.html. Preferably, use the latest v0.8 version from [GitHub](https://github.com/NeuralEnsemble/PyNN). At the moment, the model is supported by the NEURON, Brian and NEST backend simulators.
13 30 Vitor Chaud
14 38 Padraig Gleeson
To perform simulations using [NeuroML2](https://github.com/NeuroML/jNeuroML) and [LEMS](https://github.com/LEMS/jLEMS) you may install a pre-compiled package named jNeuroML as described [here](https://github.com/NeuroML/jNeuroML).
15 31 Vitor Chaud
16 8 Padraig Gleeson
### Versions of the project
17 7 Padraig Gleeson
18 7 Padraig Gleeson
The original model in [MATLAB format](http://izhikevich.org/publications/figure1.m) has been converted to a number of other formats.
19 7 Padraig Gleeson
20 20 Vitor Chaud
#### PyNN
21 1 Padraig Gleeson
22 30 Vitor Chaud
##### Simulating Fig. 1 protocol in PyNN
23 1 Padraig Gleeson
24 28 Vitor Chaud
First, go to the PyNN subdirectory in your working directory:
25 28 Vitor Chaud
26 38 Padraig Gleeson
    cd IzhikevichModel/PyNN/
27 20 Vitor Chaud
28 29 Vitor Chaud
Then, type the following command to run a simulation using Neuron:
29 1 Padraig Gleeson
30 38 Padraig Gleeson
    python izhikevich2004.py neuron
31 28 Vitor Chaud
32 29 Vitor Chaud
… or to run a simulation using NEST:
33 28 Vitor Chaud
34 38 Padraig Gleeson
    python izhikevich2004.py nest
35 7 Padraig Gleeson
36 44 Andrew Davison
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).
37 35 Vitor Chaud
38 35 Vitor Chaud
![](fig1_pyNN_nest.png)
39 35 Vitor Chaud
40 7 Padraig Gleeson
#### NeuroML 2
41 1 Padraig Gleeson
42 31 Vitor Chaud
First, go to the NeuroML2 subdirectory in your working directory:
43 1 Padraig Gleeson
44 38 Padraig Gleeson
    cd IzhikevichModel/NeuroML2/
45 31 Vitor Chaud
46 38 Padraig Gleeson
Then, type the following command to run a simulation using jNeuroML (make sure the jnml script is in your PATH):
47 31 Vitor Chaud
48 38 Padraig Gleeson
    jnml LEMS_WhichModel.xml
49 31 Vitor Chaud
50 1 Padraig Gleeson
The XML for an Izhikevich model in NeuroML v2.0 is below:
51 1 Padraig Gleeson
52 1 Padraig Gleeson
    <code class="xml">
53 38 Padraig Gleeson
    <izhikevichCell id="TonicSpiking" v0 = "-70mV" thresh = "30mV" a ="0.02" b = "0.2" c = "-65.0" d = "6"/></code>
54 1 Padraig Gleeson
55 1 Padraig Gleeson
For full examples of single cells see [TonicSpiking](/projects/izhikevichmodel/repository/entry/neuroConstruct/cellMechanisms/TonicSpiking/TonicSpiking.nml) or [PhasicBursting](/projects/izhikevichmodel/repository/entry/neuroConstruct/cellMechanisms/PhasicBursting/PhasicBursting.nml)
56 8 Padraig Gleeson
57 37 Vitor Chaud
Examples of simulation results using NeuroML and LEMS are depicted in the figure below.
58 37 Vitor Chaud
59 37 Vitor Chaud
![](result_izhikevich_neuroML.png)
60 37 Vitor Chaud
61 32 Vitor Chaud
Comparison to original model behavior
62 32 Vitor Chaud
-------------------------------------
63 8 Padraig Gleeson
64 41 Adrian Quintana
|**Model**|**Label** | **NeuroML 2** | **pyNN.neuron** | **pyNN.nest** |
65 41 Adrian Quintana
|:---|:---|:---|:---|:---|
66 26 Vitor Chaud
|Tonic spiking | &nbsp;&nbsp;&nbsp;A |(a) | &nbsp;&nbsp;&nbsp;(a) | &nbsp;&nbsp;&nbsp;(a) |
67 26 Vitor Chaud
|Phasic spiking| &nbsp;&nbsp;&nbsp;B |(a) | &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
68 26 Vitor Chaud
|Tonic bursting| &nbsp;&nbsp;&nbsp;C |(b) | &nbsp;&nbsp;&nbsp;(b) |&nbsp;&nbsp;&nbsp;(b) |
69 26 Vitor Chaud
|Phasic bursting| &nbsp;&nbsp;&nbsp;D |(a) | &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
70 26 Vitor Chaud
|Mixed mode| &nbsp;&nbsp;&nbsp;E |(a) | &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
71 26 Vitor Chaud
|Spike freq. adapt.| &nbsp;&nbsp;&nbsp;F |(a) | &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
72 26 Vitor Chaud
|Class 1 excitable| &nbsp;&nbsp;&nbsp;G |(a, e)| &nbsp;&nbsp;&nbsp;(d, e) | &nbsp;&nbsp;&nbsp;(e) |
73 26 Vitor Chaud
|Class 2 excitable| &nbsp;&nbsp;&nbsp;H |©| &nbsp;&nbsp;&nbsp;(d) | &nbsp;&nbsp;&nbsp;(g) |
74 26 Vitor Chaud
|Spike latency | &nbsp;&nbsp;&nbsp;I |(b)| &nbsp;&nbsp;&nbsp;(b) |&nbsp;&nbsp;&nbsp;(b) |
75 26 Vitor Chaud
|Subthresh. osc.| &nbsp;&nbsp;&nbsp;J |(a)| &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
76 26 Vitor Chaud
|Resonator| &nbsp;&nbsp;&nbsp;K |(a)| &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
77 26 Vitor Chaud
|Integrator| &nbsp;&nbsp;&nbsp;L |(a, e)| &nbsp;&nbsp;&nbsp;(e) |&nbsp;&nbsp;&nbsp;(e) |
78 26 Vitor Chaud
|Rebound spike| &nbsp;&nbsp;&nbsp;M |(a)| &nbsp;&nbsp;&nbsp;(a) | &nbsp;&nbsp;&nbsp;(a) |
79 26 Vitor Chaud
|Rebound burst| &nbsp;&nbsp;&nbsp;N |(a)| &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
80 26 Vitor Chaud
|Threshold variability| &nbsp;&nbsp;&nbsp;O |(a)| &nbsp;&nbsp;&nbsp;(a) |&nbsp;&nbsp;&nbsp;(a) |
81 26 Vitor Chaud
|Bistability| &nbsp;&nbsp;&nbsp;P |(b)| &nbsp;&nbsp;&nbsp;(b) | &nbsp;&nbsp;&nbsp;(b) |
82 26 Vitor Chaud
|Depolarizing after-potential| &nbsp;&nbsp;&nbsp;Q |(b)| &nbsp;&nbsp;&nbsp;(b) |&nbsp;&nbsp;&nbsp;(b) |
83 26 Vitor Chaud
|Accomodation| &nbsp;&nbsp;&nbsp;R |(a, f)| &nbsp;&nbsp;&nbsp;(d)|&nbsp;&nbsp;&nbsp;(f)|
84 26 Vitor Chaud
|Inhibition-induced spiking| &nbsp;&nbsp;&nbsp;S |(b)| &nbsp;&nbsp;&nbsp;(b)|&nbsp;&nbsp;&nbsp;(b)|
85 1 Padraig Gleeson
|Inhibition-induced bursting| &nbsp;&nbsp;&nbsp;T |(b) | &nbsp;&nbsp;&nbsp;(b)|&nbsp;&nbsp;&nbsp;(b)|
86 26 Vitor Chaud
87 41 Adrian Quintana
88 38 Padraig Gleeson
(a) Same behaviour
89 38 Padraig Gleeson
(b) Similar behaviour when slightly modifying parameters. See the table below.
90 38 Padraig Gleeson
© Similar but not identical behaviour (different number of spikes in the stimulus time frame)
91 19 Vitor Chaud
(d) Not yet implemented. Need ramp injected current. See https://github.com/NeuralEnsemble/PyNN/issues/257
92 18 Vitor Chaud
(e) Requires an alternative model implementation since the model parameterization is different in the original Matlab code. In NeuroML new ComponentType [generalizedIzhikevichCell](https://github.com/OpenSourceBrain/IzhikevichModel/blob/master/NeuroML2/GeneralizedIzhikevichCell.xml) was created.
93 1 Padraig Gleeson
(f) Requires an alternative model implementation since the model parameterization is different in the original Matlab code. In NeuroML new ComponentType [accomodationIzhikevichCell](https://github.com/OpenSourceBrain/IzhikevichModel/blob/master/NeuroML2/GeneralizedIzhikevichCell.xml) was created.
94 1 Padraig Gleeson
(g) Could not reproduce model behavior
95 1 Padraig Gleeson
96 38 Padraig Gleeson
### Parameter changes to adequate model behaviour
97 24 Vitor Chaud
98 41 Adrian Quintana
|**Model**| **Label** | **Parameter**|**Original value**|**New value**|
99 41 Adrian Quintana
|:---|:---|:---|:---|:---|
100 1 Padraig Gleeson
|Spike latency | I | Amplitude of pulse current | 7.04 | 6.71 |
101 1 Padraig Gleeson
|Bistability | P | Initial time of 2nd pulse | 216 | 208 |
102 24 Vitor Chaud
|Depolarizing after-potential | Q | b | 0.2 | 0.18 |
103 24 Vitor Chaud
|Inhibition-induced spiking | S | Inhibition ending | 250 | 220 |
104 24 Vitor Chaud
|Inhibition-induced bursting | T | d | ~~2.0 |~~0.7 |
105 24 Vitor Chaud
106 24 Vitor Chaud
Alternative implementations
107 1 Padraig Gleeson
---------------------------
108 1 Padraig Gleeson
109 32 Vitor Chaud
An alternative implementation of the Izhikevich model was created using [Moose](http://moose.sourceforge.net/). The code can be found [here](http://sourceforge.net/p/moose/code/4733/tree/moose/branches/buildQ/Demos/izhikevich/). There is a GUI in which the user chooses the model parameterization an visualizes the simulation results (see the figure below).
110 32 Vitor Chaud
111 32 Vitor Chaud
![](moose_gui.png)
112 38 Padraig Gleeson
113 38 Padraig Gleeson
### Do you have another implementation of this model?
114 38 Padraig Gleeson
115 38 Padraig Gleeson
Please share it with the rest of the community! Contact [Padraig Gleeson](/users/4) or [Vitor Chaud](/users/160).