Edit History

Wiki » History » Version 38

Padraig Gleeson, 30 Apr 2014 14:57

1 1 Padraig Gleeson
Introduction
2 7 Padraig Gleeson
------------
3 1 Padraig Gleeson
4 38 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)). Currently, this model is supported by NeuroML 2 and PyNN (Neuron and NEST backends). 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 22 Vitor Chaud
To get 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 30 Vitor Chaud
In order to install PyNN see http://neuralensemble.org/trac/PyNN/wiki/Installation. Preferably, use the latest v0.8 version from [GitHub](https://github.com/NeuralEnsemble/PyNN). At the moment, the model is supported by Neuron 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 36 Vitor Chaud
The figure below shows the result obtained when running the current version of izhikevich2004.py with NEST. Note that subplots G, H, 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 8 Padraig Gleeson
table{border:1px solid black}.
65 26 Vitor Chaud
{background:\#ddd}. |**Model**|**Label** | **NeuroML 2** |**pyNN.neuron**| **pyNN.nest**|
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 26 Vitor Chaud
|Inhibition-induced bursting| &nbsp;&nbsp;&nbsp;T |(b) | &nbsp;&nbsp;&nbsp;(b)|&nbsp;&nbsp;&nbsp;(b)|
86 16 Vitor Chaud
87 38 Padraig Gleeson
(a) Same behaviour
88 38 Padraig Gleeson
(b) Similar behaviour when slightly modifying parameters. See the table below.
89 38 Padraig Gleeson
© Similar but not identical behaviour (different number of spikes in the stimulus time frame)
90 19 Vitor Chaud
(d) Not yet implemented. Need ramp injected current. See https://github.com/NeuralEnsemble/PyNN/issues/257
91 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.
92 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.
93 1 Padraig Gleeson
(g) Could not reproduce model behavior
94 27 Vitor Chaud
95 38 Padraig Gleeson
### Parameter changes to adequate model behaviour
96 24 Vitor Chaud
97 1 Padraig Gleeson
table{border:1px solid black}.
98 1 Padraig Gleeson
{background:\#ddd}. |**Model**| **Label** | **Parameter**|**Original value**|**New value**|
99 1 Padraig Gleeson
|Spike latency | I | Amplitude of pulse current | 7.04 | 6.71 |
100 1 Padraig Gleeson
|Bistability | P | Initial time of 2nd pulse | 216 | 208 |
101 24 Vitor Chaud
|Depolarizing after-potential | Q | b | 0.2 | 0.18 |
102 24 Vitor Chaud
|Inhibition-induced spiking | S | Inhibition ending | 250 | 220 |
103 24 Vitor Chaud
|Inhibition-induced bursting | T | d | ~~2.0 |~~0.7 |
104 24 Vitor Chaud
105 24 Vitor Chaud
Alternative implementations
106 1 Padraig Gleeson
---------------------------
107 1 Padraig Gleeson
108 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).
109 32 Vitor Chaud
110 32 Vitor Chaud
![](moose_gui.png)
111 38 Padraig Gleeson
112 38 Padraig Gleeson
### Do you have another implementation of this model?
113 38 Padraig Gleeson
114 38 Padraig Gleeson
Please share it with the rest of the community! Contact [Padraig Gleeson](/users/4) or [Vitor Chaud](/users/160).