COMMENT Maciej T. Lazarewicz, mlazarew@seas.upenn.edu ENDCOMMENT NEURON { SUFFIX naf USEION na WRITE ina RANGE gnabar, ina } UNITS { (mA) = (milliamp) (mV) = (millivolt) (mS) = (millisiemens) } PARAMETER { gnabar = 30 (mS/cm2) ena = 55 (mV) } ASSIGNED { v (mV) ina (mA/cm2) minf (1) hinf (1) tauh (ms) } STATE { h } INITIAL { rates(v) h = hinf } BREAKPOINT { SOLVE states METHOD cnexp ina = (1e-3) * gnabar * minf^2 * h * (v-ena) } DERIVATIVE states { rates(v) h' = (hinf-h)/tauh } :ina PROCEDURE rates(v(mV)) { LOCAL a, b a = fun3(v, -46.9, -0.32, -4) b = fun3(v, -19.9, 0.28, 5) minf = a/(a+b) a = fun1(v, -43, 0.128, -18) b = fun2(v, -20, 4, -5) hinf = a/(a+b) tauh = 1.0/(a+b) } COMMENT Maciej T. Lazarewicz, mlazarew@seas.upenn.edu ENDCOMMENT :------------------------------------------------------------------- FUNCTION fun1(v(mV),V0(mV),A(/ms),B(mV))(/ms) { fun1 = A*exp((v-V0)/B) } FUNCTION fun2(v(mV),V0(mV),A(/ms),B(mV))(/ms) { fun2 = A/(exp((v-V0)/B)+1) } FUNCTION fun3(v(mV),V0(mV),A(/ms),B(mV))(/ms) { if(fabs((v-V0)/B)<1e-6) { :if(v==V0) { fun3 = A*B/1(mV) * (1- 0.5 * (v-V0)/B) } else { fun3 = A/1(mV)*(v-V0)/(exp((v-V0)/B)-1) } } FUNCTION min(x,y) { if (x<=y){ min = x }else{ min = y } }