TITLE hh.mod squid sodium, potassium, and leak channels
COMMENT
This is the original Hodgkin-Huxley treatment for the set of sodium,
potassium, and leakage channels found in the squid giant axon membrane.
The rate function parameters have been changed to correspond to
Dodge & Cooley (1973) "Action Potential of the Motorneuron"
IBM J. Res. Develop. May 219--229
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(S) = (siemens)
}
? interface
NEURON {
SUFFIX dc
USEION na READ ena WRITE ina
USEION k READ ek WRITE ik
NONSPECIFIC_CURRENT il
RANGE gnabar, gkbar, gl, el, gna, gk, shift
GLOBAL minf, hinf, ninf, mtau, htau, ntau, vrest
}
PARAMETER {
: for node
gnabar = .6 (S/cm2) <0,1e9>
gkbar = .1 (S/cm2) <0,1e9>
gl = .003 (S/cm2) <0,1e9>
el = -54.3 (mV)
vrest = 0 (mV)
shift = 0
}
STATE {
m h n
}
ASSIGNED {
v (mV)
ena (mV)
ek (mV)
gna (S/cm2)
gk (S/cm2)
ina (mA/cm2)
ik (mA/cm2)
il (mA/cm2)
minf hinf ninf
mtau (ms) htau (ms) ntau (ms)
}
? currents
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gnabar*m*m*m*h
ina = gna*(v - ena)
gk = gkbar*n*n*n*n
ik = gk*(v - ek)
il = gl*(v - el)
}
INITIAL {
rates(v - vrest - shift)
m = minf
h = hinf
n = ninf
}
? states
DERIVATIVE states {
rates(v - vrest - shift)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
n' = (ninf-n)/ntau
}
? rates
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL alpha, beta, sum
UNITSOFF
:"m" sodium activation system
alpha = .4 * vtrap(25 - v, 5)
: beta = .4 * vtrap(v - 55, 5)
: typo in paper; personal communication from F. Dodge.
beta = .4 * vtrap(v - 45, 5)
sum = alpha + beta
mtau = 1/sum
minf = alpha/sum
:"h" sodium inactivation system
alpha = .28 * exp((10 - v)/20)
beta = 4 / (exp((40 - v)/10) + 1)
sum = alpha + beta
htau = 1/sum
hinf = alpha/sum
:"n" potassium activation system
: alpha = .2*vtrap(20 - v,10)
: typo in paper; personal communication from F. Dodge.
alpha = .02*vtrap(20 - v,10)
beta = .25*exp((10 - v)/80)
sum = alpha + beta
ntau = 1/sum
ninf = alpha/sum
}
FUNCTION vtrap(x,y) { :Traps for 0 in denominator of rate eqns.
if (fabs(x/y) < 1e-6) {
vtrap = y*(1 - x/y/2)
}else{
vtrap = x/(exp(x/y) - 1)
}
}
UNITSON