diff --git a/README b/README deleted file mode 100644 index 020b3ec..0000000 --- a/README +++ /dev/null @@ -1,219 +0,0 @@ -* 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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..486ea20 --- /dev/null +++ b/README.md @@ -0,0 +1,198 @@ +# 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 graphics 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:** + +\[ +\begin{aligned} +v' &= e*v^2 + f*v + g - u + I; && \text{RESET if } (v>30) \quad v=c \\ +u' &= a*(b*v-u); && \text{RESET if } (v>30) \quad u=u+d +\end{aligned} +\] + +(Note that `vv` is used for voltage in izhi2003a.mod so doesn't interfere with built-in `v` of cell -- the built-in `v` is used for izhi2003b.mod) + +**Parameters:** +- a, b, c, d, I are the major parameters +- f, g are reset for 2 simulations (G-"Class 1" and L-"integrator") + +Three of the simulations shown in izhi2004.gif are not properly replicated: +- Q: depolarizing afterpotential does not repolarize properly +- R: accommodation 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:** + +\[ +\begin{aligned} +v' &= v + \frac{k (v-v_r)(v-v_t) - u - I}{C} \\ +u' &= u + a (b (v - v_r) - u) +\end{aligned} +\] + +RESET if \( v > v_{\text{peak}} : v = c ; u = u + d \) +(Note that additional resets are used for particular models -- i.e. 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` parameter (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 (e.g. Hodgkin-Huxley type). +In order to use the same Izhikevich params for Izhi2007a (which is not affected by the Section params), the `C` parameter is multiplied by 100 internally in the izhi2007a.mod file. + +### Cell types available 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: + +| # | Cell Type | Description | Parameters | Book Fig | T (ms) | IinRange (pA) | +|---|-----------|-------------|------------|----------|---------|---------------| +| 1 | RS | Layer 5 regular spiking pyramidal cell (fig 8.12) | C=1; k=0.7; vr=-60; vt=-40; vpeak=35; a=0.03; b=-2; c=-50; d=100; celltype=1 | fig 8.12 | 520 | [60,70,85,100] | +| 2 | IB | Layer 5 intrinsically bursting cell (fig 8.19) | C=1.5; k=1.2; vr=-75; vt=-45; vpeak=50; a=0.01; b=5; c=-56; d=130; celltype=2 | fig 8.19 | 600 | [290,370,500,550] | +| 3 | CH | Cat primary visual cortex chattering cell (fig 8.23) | C=0.5; k=1.5; vr=-60; vt=-40; vpeak=25; a=0.03; b=1; c=-40; d=150; celltype=3 | fig 8.23 | 210 | [200,300,400,600] | +| 4 | LTS | Rat barrel cortex Low-threshold spiking interneuron (fig 8.25) | C=1.0; k=1; vr=-56; vt=-42; vpeak=40; a=0.03; b=8; c=-53; d=20; celltype=4 | fig 8.25 | 100 | [100,125,200,300] | +| 5 | FS | Rat visual cortex layer 5 fast-spiking interneuron (fig 8.27) | C=0.20; k=1; vr=-55; vt=-40; vpeak=25; a=0.2; b=-2; c=-45; d=-55; celltype=5 | fig 8.27 | 100 | [73.2,100,200,400] | +| 6 | TC | Cat dorsal LGN thalamocortical (TC) cell (fig 8.31) | C=2.0; k=1.6; vr=-60; vt=-50; vpeak=35; a=0.01; b=15; c=-60; d=10; celltype=6 | fig 8.31 | 650 | [50,100,150] | +| | | Bursting mode: | T0=120 ms; Iin0=-1200 pA; | | 650 | [0,50,100] | +| 7 | RTN | Rat reticular thalamic nucleus (RTN) cell (fig 8.32) | C=0.40; k=0.25; vr=-65; vt=-45; vpeak=0; a=0.015; b=10; c=-55; d=50; celltype=7 | fig 8.32 | 650 | [50,70,110] | +| | | Bursting mode: | T0=120 ms; Iin0=-350 pA; | | 720 | [30,50,90] | + +**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 + +```bash +nrnivmodl izhi2003a izhi2003b izhi2007a izhi2007b +``` + +## GUI for exploring parameters + +```bash +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 +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 + +```python +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 + +```bash +matlab izhi2003.m +octave --persist izhi2003.m +``` + +## Old hoc version for 2004 + +```bash +nrnivmodl izhi2003a +nrngui izhi2004a.hoc +``` + +## Implementation -- please ask any general questions on NEURON Forum + +- Salvador Dura-Bernal +- Cliff Kerr +- Bill Lytton + +## Graphics of simulations -- name 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 + +--- +## Changelog +20151006 – Revision: A command "from neuron import h,gui" was added 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 + +20250527 – Standardized to Markdown.