COMMENT nahh.mod Sodium channel, Hodgkin-Huxley style kinetics. ENDCOMMENT INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { SUFFIX nahh USEION na READ ena WRITE ina RANGE m, h, gna, gbar RANGE minf, hinf, mtau, htau GLOBAL q10, temp, tadj, vmin, vmax } PARAMETER { gbar = 1200 (pS/um2) : 0.12 mho/cm2 ena = 50 (mV) : v 1/2 for inact temp = 6.3 (degC) : original temp q10 = 3 : temprature 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) minf hinf mtau (ms) htau (ms) tadj } STATE { m h } INITIAL { trates(v) m = minf h = hinf } BREAKPOINT { SOLVE states gna = gbar*m*m*m*h ina = (1e-4) * gna * (v - ena) } LOCAL mexp, hexp PROCEDURE states() { :Computes state variables m, h trates(v) : at the current v and dt. m = m + mexp*(minf-m) h = h + hexp*(hinf-h) VERBATIM return 0; ENDVERBATIM } PROCEDURE trates(v) { LOCAL tinc TABLE minf, mexp, hinf, hexp DEPEND dt, celsius, temp FROM vmin TO vmax WITH 199 rates(v): not consistently executed from here if usetable == 1 tadj = q10^((celsius - temp)/10) tinc = -dt * tadj mexp = 1 - exp(tinc/mtau) hexp = 1 - exp(tinc/htau) } PROCEDURE rates(vm) { LOCAL a, b a = .1 * vtrap(-(vm+40),10) b = 4 * exp(-(vm+65)/18) mtau = 1/(a+b) minf = a*mtau :"h" inactivation a = .07 * exp(-(vm+65)/20) b = 1 / (exp(-(vm+35)/10) + 1) htau = 1/(a+b) hinf = a*htau } 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) } }