You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
2.8 KiB
129 lines
2.8 KiB
: ATM GIF model |
|
|
|
: This implementation the adaptive theshold model (ATM) is for the equations in: |
|
: Fontaine, B., Benichourx, V., Joris, P.X., and Brette, R. Prediciting |
|
: spike timing in hhigy synchronous auditory neurons at different sound |
|
: levels. J. Neurophysiol. 110: 1672-1688, 2013. |
|
|
|
: Which in turn is based on: |
|
: Brette R, Gerstner W. Adaptive exponential integrate-and-fire model as an |
|
: effective description of neuronal activity. J Neurophysiol. 2005 |
|
: Nov;94(5):3637-42. Epub 2005 Jul 13. PubMed PMID: 16014787. |
|
: |
|
: Paul B. Manis |
|
: 2 December 2017, Chapel Hill, NC |
|
: |
|
: Incomplete version |
|
|
|
NEURON { |
|
: ARTIFICIAL_CELL ATM |
|
SUFFIX ATM |
|
RANGE gl, el, delt, vt, vr, alpha, beta, cm, is, a, tauw |
|
RANGE refract, Vm |
|
NONSPECIFIC_CURRENT i |
|
: m plays the role of voltage |
|
} |
|
|
|
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} |
|
|
|
PARAMETER { |
|
cm = 200 (pF) |
|
el = -70 (mV) : leak (RMP) |
|
gl = 10 (nS) : resting input R |
|
delt = 2 (mV) : spike threshold sharpness |
|
vr = -58 (mV): reset value after a spike |
|
a = 2 (1) |
|
b = 2 (1) |
|
beta = 0 (1) |
|
alpha = 0 |
|
is = 0 (pA) |
|
taut = 30 (ms) : threshold tau |
|
refract = 1 (ms) |
|
} |
|
|
|
ASSIGNED { |
|
i (mA/cm2) |
|
t0 (ms) : time of last spike |
|
refractory : flag indicating when in a refractory period |
|
} |
|
|
|
STATE { |
|
w |
|
Vm |
|
vt |
|
} |
|
|
|
INITIAL { |
|
Vm = el |
|
t0 = t |
|
a = 0 |
|
b = 0 |
|
|
|
refractory = 0 : 0-integrates input, 1-refractory |
|
} |
|
|
|
BREAKPOINT { |
|
SOLVE states METHOD cnexp |
|
|
|
if (refractory == 0 && Vm <= 0.) { |
|
states() |
|
} |
|
if (refractory == 1) { |
|
if ((t-t0) >= refract){ |
|
refractory = 0 |
|
Vm = vr |
|
states() |
|
} |
|
else { |
|
Vm = 0. |
|
} |
|
} |
|
if (refractory == 0 && Vm > 0.) { |
|
refractory = 1 |
|
t0 = t |
|
Vm = 0. |
|
w = w + b |
|
} |
|
} |
|
|
|
|
|
DERIVATIVE states { : update adaptation variable w |
|
LOCAL eterm, et |
|
vt' = (a*i - vt)/taut |
|
COMMENT |
|
eterm = (Vm-vt)/delt |
|
if (eterm > 700 ) { : prevent overflow of the exponential term |
|
: (it would be better to estimate the value... but for this |
|
: implementation, not necessary as this will be the term |
|
: that drives the model to spike - after that V is reset |
|
: so the time evolution no longer matters) |
|
et = 700. |
|
} |
|
else { |
|
et = exp(eterm) |
|
} |
|
ENDCOMMENT |
|
Vm' = gl*( -(Vm-el) + i)/cm |
|
} |
|
|
|
|
|
COMMENT |
|
NET_RECEIVE (w) { |
|
if (refractory == 0) { : inputs integrated only when excitable |
|
i = -gl*(v-el) + gl*delt*exp((Vm-vt)/delt) - w |
|
m = i/cm |
|
t0 = t |
|
states() |
|
if (m > 0) { |
|
refractory = 1 |
|
m = 0 |
|
net_send(refractory, refractory) |
|
net_event(t) |
|
} |
|
} else if (flag == 1) { : ready to integrate again |
|
t0 = t |
|
refractory = 0 |
|
m = vr |
|
} |
|
} |
|
ENDCOMMENT |