: HH potassium m_current
NEURON{
SUFFIX ipotassiumM
: NONSPECIFIC_CURRENT i
USEION k READ ek WRITE ik
RANGE g,i
}
UNITS{
(mS) = (millisiemens)
(mV) = (millivolt)
(uA) = (microamp)
}
PARAMETER{
g = 0.02 (mS/cm2)
l_init = 0.1
}
ASSIGNED{
v (mV)
ek (mV)
ik (uA/cm2)
i (uA/cm2)
}
STATE {l}
BREAKPOINT{
SOLVE states METHOD cnexp
ik = g*(v-ek)*l*0.001 : factor to convert to mA/cm2
: printf("time: %g, current: %g, voltage: %g, ek: %g \n", t, i, v, ek)
: printf("potassium: %g \t %g \t %g \n", t, ik, v)
}
INITIAL {
l=l_init
}
DERIVATIVE states{
l' = (linf(v)-l)/taul(v)
}
FUNCTION alpha(Vm (mV)) (/ms){
LOCAL x,fac1,fac2
x=Vm+30.0
fac1 = 0.001
fac2 = 9.0
UNITSOFF
if (fabs(x)<1e-6){
alpha=fac1*fac2
}
else{
alpha = fac1*x/(1-exp(-x/fac2))
}
UNITSON
}
FUNCTION beta(Vm (mV)) (/ms){
LOCAL x,fac1,fac2
x=Vm+30.0
fac1 = 0.001
fac2 = 9.0
UNITSOFF
if (fabs(x) < 1e-6){
beta=fac1*fac2
}
else{
beta = -fac1*x/(1-exp(x/fac2))
}
UNITSON
}
FUNCTION linf(Vm (mV)){
UNITSOFF
linf=alpha(Vm)/(alpha(Vm)+beta(Vm))
UNITSON
}
FUNCTION taul(Vm (mV)){
UNITSOFF
taul=0.34/(alpha(Vm)+beta(Vm))
UNITSON
}