* Izhikevich artificial neuron model from 2 different publications: 1)
  Izhikevich et al, 2003; and 2) Izhikevich, 2007.

Files:

izhi2003a.mod // integrates STATE {u, vv}; firing patterns in 2003,
2004 papers; POINT_PROCESS Izhi2003a

izhi2003b.mod // integrates STATE {u}; v calculated in a Section;
firing patterns in 2003, 2004 papers; POINT_PROCESS Izhi2003b

izhi2007a.mod // no STATE -- uses Euler explicit integration update
rule, includes synapses; cell types in 2007 book+syns; POINT_PROCESS
Izhi2007a

izhi2007b.mod // no STATE -- uses Euler explicit integration update
rule; v calculated in a Section; firing patterns in 2007 book;
POINT_PROCESS Izhi2007b

izhi2003.m // Matlab code to replicate firing patterns in 2003 paper
izhi2007.m // Matlab code to replicate firing patterns in 2007 book

simple.py // much brief example to just create 1 of each of the types
+ 1 additional example using izhi2007Wrapper
izhiGUI.py // runs interactive demo of 6 Izhikevich cell models (3
parameter sets, 2 implementations of each)
izhi2007Figs.py // uses python graphicss to graph firing patterns of 7
cell types in 2007 book
izhi2007Wrapper.py // instantiates the 7 cell types in 2007 book


izhi2003.png // Illustration of firing patterns in 2003 paper
izhi2004.gif // Illustration of firing patterns in 2004 paper
izhi2007Comparison.pdf // Illustration of firing patterns in 2007 book
(and comparison to model)

izhi2004a.hoc // hoc file retained for archaeological interest

README // this file (can be read as an org-mode file in emacs)

* 2003-2004 Models:

EM Izhikevich "Simple Model of Spiking Neurons" IEEE Transactions On
Neural Networks, Vol. 14, No. 6, November 2003 pp 1569-1572

EM Izhikevich "Which model to use for cortical spiking neurons?"  IEEE
Transactions On Neural Networks, Vol. 15, No. 5, 2004 pp 1063-1070

This single parameterization was used in these 2 papers with different
cell-sets being represented, although with some overlap.  We have
separately replicated the cell-sets from each paper.

** solves the following equations:

 v' = e*v^2 + f*v + g - u + I;    RESET if (v>30) v=c
 u' = a*(b*v-u);                  RESET if (v>30) u=u+d
(note that vv is used in for voltage in izhi2003a.mod so doesn't
interfere with built-in v of cell -- the built-in v is used for
izhi2003b.mod)


** a,b,c,d,I are the major parameters; 
f,g are reset for 2 simulations (G-"Class 1" and L-"integrator")

3 of the simulations shown in izhi2004.gif are not properly replicated:
Q: depolarizing afterpotential does not repolarize properly
R: accomodation requires an alteration of the functional forms to replicate
   (alternate functional form given on line 52 of izh.mod)
T: too unstable for Neuron integrators to handle
   (changing izh.hoc line 203 to Isend1(50,75) will crash simulator)

* 2007 Models description: 
Equations and parameter values taken from: Izhikevich EM
(2007). "Dynamical systems in neuroscience" MIT Press
Equation for synaptic inputs built-in for izhi2007.mod were taken
 from: Izhikevich EM, Edelman GM (2008). "Large-scale model of
 mammalian thalamocortical systems" PNAS 105 3593-3598.
(Note that this 2008 model is a multicompartmental model that we do
not replicate here so we are using 2007 model with 2008 synapses.)

** solves the following equations:
v' = v + (k*(v-vr)*(v-vt) - u - I)/C;  
u' = u + (a*(b*(v-vr)-u); 

RESET if v > vpeak: v = c ; u = u + d
(note that additional resets are used for particular models -- ie the
simulation is displaced in the phase plane to produce interruption and
create next stage of dynamics; see below)

** The following parameters specific to each cell type: C, k, vr, vt,
   vpeak, a, b, c, d and celltype

Note that for Izhi2007b the izhikevich 'C' param (divided by 100) and
the NEURON Section properties (diam=10, L=10, cm=31.831) have been
adjusted in the NEURON/Python code so that connection/NetCon weights
are in microsiemens (uS), and therefore equivalent to those used for
other Section-based cells (eg. Hodgkin-Huxley type). In order to use
the same Izhikevich params for Izhi2007a (which is not affected by the
Section params), the 'C' param is multiplied by 100 internally in the
izhi2007a.mod file.

Cell types available are based on Izhikevich, 2007 book (chapter
8). Here we include a description of each cell type, the model
parameters required to implement it, and the conditions to replicate
the 2007 book figures:

    1. RS - Layer 5 regular spiking pyramidal cell (fig 8.12 from 2007
    	book) Parameters: C=1; k=0.7; vr=-60; vt=-40; vpeak=35;
    	a=0.03; b=-2; c=-50; d=100; celltype=1 Book fig: T = 520 ms;
    	IinRange = [60,70,85,100] pA

    2. IB - Layer 5 intrinsically bursting cell (fig 8.19 from 2007
    	book) Parameters: C=1.5; k=1.2; vr=-75; vt=-45; vpeak=50;
    	a=0.01; b=5; c=-56; d=130; celltype=2 Book fig: T = 600 ms;
    	IinRange = [290,370,500,550] pA

    3. CH - Cat primary visual cortex chattering cell (fig 8.23 from
    	2007 book) Parameters: C=0.50; k=1.5; vr=-60; vt=-40;
    	vpeak=25; a=0.03; b=1; c=-40; d=150; celltype=3 Book fig: T =
    	210 ms; IinRange = [200,300,400,600] pA

    4. LTS - Rat barrel cortex Low-threshold spiking interneuron (fig
    	8.25 from 2007 book) Parameters: C=1.00; k=1; vr=-56; vt=-42;
    	vpeak=40; a=0.03; b=8; c=-53; d=20; celltype=4 Book fig: T =
    	100 ms; IinRange = [100,125,200,300] pA

    5. FS - Rat visual cortex layer 5 fast-spiking interneuron (fig
    	8.27 from 2007 book) Parameters: C=0.20; k=1; vr=-55; vt=-40;
    	vpeak=25; a=0.2; b=-2; c=-45; d=-55; celltype=5; Book fig: T =
    	100 ms; IinRange = [73.2,100,200,400] pA

    6. TC - Cat dorsal LGN thalamocortical (TC) cell (fig 8.31 from
    	2007 book) C=2.0; k=1.6; vr=-60; vt=-50; vpeak=35; a=0.01;
    	b=15; c=-60; d=10; celltype=6 Book fig: T = 650 ms; IinRange =
    	[50,100,150] pA Book fig (burst mode): T0 = 120 ms; Iin0 =
    	-1200 pA; T = 650 ms; IinRange = [0,50,100] pA

    7. RTN - Rat reticular thalamic nucleus (RTN) cell (fig 8.32 from
		2007 book) Parameters: C=0.40; k=0.25; vr=-65; vt=-45;
		vpeak=0; a=0.015; b=10; c=-55; d=50; celltype=7 Book
		fig: T = 650 ms; IinRange = [50,70,110] pA Book fig
		(burst mode): T0 = 120 ms; Iin0 = -350 pA; T = 720 ms;
		IinRange = [30,50,90] pA


Note: The LTS, FS, TC and RTN cells require modifications to the
general equations -- additional resets on phase plane.
See the matlab (izhi2007.m) or the Python/Neuron (izhi2007.mod) for
details. For a full description see chapter 8 of Izhikevich, 2007.

* compiling with nrnivmodl
nrnivmodl izhi2003a izhi2003b izhi2007a izhi2007b

* GUI for exploring parameters
python -i izhiGUI.py 
Sets up menu to choose among 6 models using 2 different
parameterizations (2003/4 vs 2007) with 3 parameter sets illustrating
different cell dynamics (2003, 2004, 2007) and different
implementation types (voltage in a section vs both u,v calculated in
the mod file).

Each choice brings up a menu of all parameter settings as well as a
menu of standard choices based on cell types.

* simple simulation -- default parameter implementations in simple.py
python
from neuron import h,gui
import simple
h.run()
simple.show()

Sets up 5 models using default parameters in the .mod files

2 versions of 2003/2004 parameterization: freestanding (3a); in
section (3b)

3 versions of 2007/2008 parameterization: freestanding (7a); in
section (7b); in sec using wrapper class (7bw) can graph u, v for any
model
simple.show('v3a','v3b') # compare voltage output for the 2 versions
of the 2003/2004 parameterization; will NOT be identical
simple.show('v7a','v7b','v7bw') # compare voltage output for 3
versions of the 2007 parameterization

* matlab/octave versions
matlab izhi2003.m
octave --persist izhi2003.m

* old hoc version for 2004
nrnivmodl izhi2003a
nrngui izhi2004a.hoc

* implementation -- please ask any general questions on NEURON Forum
Salvador Dura-Bernal salvadordura@gmail.com
Cliff Kerr cliffk@neurosim.downstate.edu
Bill Lytton billl@neurosim.downstate.edu


* graphics of simulations -- names indicates which parameterization was used
izh2003.gif # figure taken from original paper 
izhi2003.png  # sim results
izhi2004.gif  # figure taken from original paper 
izhi2007Comparison.pdf # side by side comparison of figures from paper
with these sims

20151006 Revisision: A command "from neuron import h,gui" was added
above to the simple simulation demo.

20160303 Updated integration method of the izhi2007b cell model from
Salva Dura. Addition of izhi2007bS.mod and replacement of
izhi2007b.mod and revision of this readme's documentation of
izhi2007b.mod and addition of izhi2007bS.mod documentation.

20160802 Salva Dura updated the parameters of the 2007 version so when
connected using NetCons, the weight is in uS, same as for other
Section-based cells in NEURON; and fixed a small bug in the INITIAL
block in the mod files.

20221216 Python3 migration via 2to3