COMMENT
na.mod
Sodium channel, Hodgkin-Huxley style kinetics.
qi is not well constrained by the data, since there are no points
between -80 and -55. So this was fixed at 5 while the thi1,thi2,Rg,Rd
were optimized using a simplex least square proc
voltage dependencies are shifted approximately +5mV from the best
fit to give higher threshold
use with kd.mod
Author: Upinder S. Bhalla, California Institute of Technology
J. of Neurophysiology, V69, N6, 1993
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX na
USEION na READ ena WRITE ina
RANGE m, h, gna, gbar, vshift
GLOBAL thm1, thm2, qm1, qm2, thi1, thi2, qi, qinf, thinf
GLOBAL minf, hinf, mtau, htau, ina
GLOBAL Am1, Am2, Rd, Rg
GLOBAL q10, temp, tadj, vmin, vmax
}
PARAMETER {
gbar = 258.272 (pS/um2) : 0.12 mho/cm2
vshift = 0 (mV) : voltage shift (affects all)
thm1 = -70.3833 (mV) : v 1/2 for act (-42)
thm2 = -21.8432 (mV) : v 1/2 for act (-15)
Am1 = 0.242621 (/ms) : open (v)
Am2 = 0.819229 (/ms) : close (v)
qm1 = 3.51809 (mV) : act slope
qm2 = 3.9834 (mV) : act slope
thi1 = -39.1689 (mV) : v 1/2 for inact
thi2 = -38.4483 (mV) : v 1/2 for inact
qi = 5.63879 (mV) : inact tau slope
thinf = -48.1801 (mV) : inact inf slope
qinf = 3.73406 (mV) : inact inf slope
Rg = 0.00422366 (/ms) : inact (v)
Rd = 0.0802232 (/ms) : inact recov (v)
temp = 23 (degC) : original temp
q10 = 2.3 : temperature sensitivity
v (mV)
dt (ms)
celsius (degC)
vmin = -120 (mV)
vmax = 100 (mV)
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(um) = (micron)
}
ASSIGNED {
ina (mA/cm2)
gna (pS/um2)
ena (mV)
minf hinf
mtau (ms) htau (ms)
tadj
}
STATE { m h }
INITIAL {
trates(v+vshift)
m = minf
h = hinf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gbar*m*m*m*h
ina = (1e-4) * gna * (v - ena)
}
DERIVATIVE states { :Computes state variables m, h, and n
trates(v+vshift) : at the current v and dt.
m' = (minf - m)/mtau
h' = (hinf - h)/htau
}
PROCEDURE trates(v (mV)) {
TABLE minf, mtau , hinf, htau
DEPEND dt, celsius, temp, Am1, Am2, Rd, Rg, thm1, thm2, thi1, thi2, qm1, qm2, qi, qinf, thinf
FROM vmin TO vmax WITH 199
UNITSOFF
rates(v): not consistently executed from here if usetable == 1
UNITSON
}
UNITSOFF
PROCEDURE rates(vm) {
LOCAL a, b
a = trap0(vm,thm1,Am1,qm1)
b = trap0(-vm,-thm2,Am2,qm2)
mtau = 1/(a+b)
minf = a*mtau
:"h" inactivation
a = trap0(vm,thi1,Rd,qi)
b = trap0(-vm,-thi2,Rg,qi)
htau = 1/(a+b)
hinf = 1/(1+exp((vm-thinf)/qinf))
}
FUNCTION trap0(v,th,a,q) {
if (fabs(v-th) > 1e-6) {
trap0 = a * (v - th) / (1 - exp(-(v - th)/q))
} else {
trap0 = a * q
}
}
UNITSON