: $Id: nafPR.mod,v 1.6 2004/02/09 21:19:55 billl Exp $
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON { SUFFIX nafPR }
NEURON { USEION na WRITE ina }
ASSIGNED { ina }
PARAMETER {
erev = 60. (mV)
gmax = 0.030 (mho/cm2)
vrest = -60.0
exptemp = 37
maflag = 3
malphaA = -0.32
malphaB = -4.0
malphaV0 = 13.1
mbflag = 3
mbetaA = 0.28
mbetaB = 5.0
mbetaV0 = 40.1
mq10 = 3
mexp = -2
haflag = 1
halphaA = 0.128
halphaB = -18
halphaV0 = 17.
hbflag = 2
hbetaA = 4.
hbetaB = -5.
hbetaV0 = 40.
hq10 = 3
hexp = 1
celsius (degC)
dt (ms)
v (mV)
} : end PARAMETER
NEURON {
RANGE gmax, g, i
GLOBAL erev, Inf, Tau, vrest, qq10
} : end NEURON
CONSTANT {
FARADAY = 96489.0 : Faraday's constant
R= 8.31441 : Gas constant
} : end CONSTANT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(umho) = (micromho)
} : end UNITS
ASSIGNED {
i (mA/cm^2)
g (mho/cm^2)
Inf[2] : 0 = m and 1 = h
Tau[2] : 0 = m and 1 = h
qq10[2]
} : end ASSIGNED
STATE { h }
INITIAL {
mh(v)
h = Inf[1]
}
BREAKPOINT {
SOLVE states METHOD cnexp
mh(v)
g = gmax * Inf[0]*Inf[0] * h
i = g*(v-erev)
ina=i
} : end BREAKPOINT
: ASSIGNMENT PROCEDURES
: Must be given by a user routines in parameters.multi
: E.G.:
: PROCEDURE iassign () { i = g*(v-erev) ina=i }
: PROCEDURE iassign () { i = g*ghkca(v) ica=i }
:-------------------------------------------------------------------
DERIVATIVE states {
mh(v)
h' = (-h + Inf[1]) / Tau[1]
}
:-------------------------------------------------------------------
: NOTE : 0 = m and 1 = h
PROCEDURE mh (v) {
LOCAL a, b, j
qq10[0] = mq10^((celsius-exptemp)/10.)
qq10[1] = hq10^((celsius-exptemp)/10.)
: Calculater Inf and Tau values for h and m
FROM j = 0 TO 1 {
a = alpha (v, j)
b = beta (v, j)
Inf[j] = a / (a + b)
Tau[j] = 1. / (a + b) / qq10[j]
if (hexp==0) { Tau[1] = 1. Inf[1] = 1.}
}
} : end PROCEDURE mh (v)
:-------------------------------------------------------------------
FUNCTION alpha(v,j) {
LOCAL flag, A, B, V0
if (j==1 && hexp==0) {
alpha = 0
} else {
if (j == 1) {
A = halphaA B = halphaB V0 = halphaV0+vrest flag = haflag
} else {
A = malphaA B = malphaB V0 = malphaV0+vrest flag = maflag
}
if (flag == 1) { : EXPONENTIAL
alpha = A*exp((v-V0)/B)
} else if (flag == 2) { : SIGMOID
alpha = A/(exp((v-V0)/B)+1)
} else if (flag == 3) { : LINOID
if(v == V0) {
alpha = A*B
} else {
alpha = A*(v-V0)/(exp((v-V0)/B)-1) }
}
}
} : end FUNCTION alpha (v,j)
:-------------------------------------------------------------------
FUNCTION beta (v,j) {
LOCAL flag, A, B, V0
if (j==1 && hexp==0) {
beta = 1
} else {
if (j == 1) {
A = hbetaA B = hbetaB V0 = hbetaV0+vrest flag = hbflag
} else {
A = mbetaA B = mbetaB V0 = mbetaV0+vrest flag = mbflag
}
if (flag == 1) { : EXPONENTIAL
beta = A*exp((v-V0)/B)
} else if (flag == 2) { : SIGMOID
beta = A/(exp((v-V0)/B)+1)
} else if (flag == 3) { : LINOID
if(v == V0) {
beta = A*B
} else {
beta = A*(v-V0)/(exp((v-V0)/B)-1) }
}
}
} : end FUNCTION beta (v,j)