TITLE HH channel that includes both a sodium and a delayed rectifier channel : and accounts for sodium conductance attenuation : Bartlett Mel-modified Hodgkin - Huxley conductances (after Ojvind et al.) : Terrence Brannon-added attenuation : Yiota Poirazi-modified Kdr and Na threshold and time constants : to make it more stable, 2000, poirazi@LNC.usc.edu : Used in all BUT somatic and axon sections. The spike threshold is about -50 mV NEURON { SUFFIX hha_old USEION na READ ena WRITE ina USEION k READ ek WRITE ik NONSPECIFIC_CURRENT il RANGE gnabar, gkbar, gl, el RANGE ar2, vhalfs RANGE inf, fac, tau RANGE taus RANGE W GLOBAL taumin } UNITS { (mA) = (milliamp) (mV) = (millivolt) } INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} PARAMETER { : parameters that can be entered when function is called in cell-setup a0r = 0.0003 (ms) b0r = 0.0003 (ms) zetar = 12 zetas = 12 gmr = 0.2 ar2 = 1.0 :initialized parameter for location-dependent :Na-conductance attenuation, "s", (ar=1 -> zero attenuation) taumin = 3 (ms) :min activation time for "s" attenuation system vvs = 2 (mV) :slope for "s" attenuation system vhalfr = -60 (mV) :half potential for "s" attenuation system W = 0.016 (/mV) :this 1/61.5 mV : gnabar = 0.2 (mho/cm2) :suggested conductance values : gkbar = 0.12 (mho/cm2) : gl = 0.0001 (mho/cm2) gnabar = 0 (mho/cm2) :initialized conductances gkbar = 0 (mho/cm2) :actual values set in cell-setup.hoc gl = 0 (mho/cm2) ena = 60 (mV) :Na reversal potential (also reset in ek = -77 (mV) :K reversal potential cell-setup.hoc) el = -70.0 (mV) :steady state celsius = 34 (degC) v (mV) dt (ms) } STATE { : the unknown parameters to be solved in the DEs m h n s } ASSIGNED { : parameters needed to solve DE ina (mA/cm2) ik (mA/cm2) il (mA/cm2) inf[4] fac[4] tau[4] } BREAKPOINT { SOLVE states ina = gnabar*m*m*h*s*(v - ena) :Sodium current ik = gkbar*n*n*(v - ek) :Potassium current il = gl*(v - el) :leak current } INITIAL { : initialize the following parameter using states() states() s=1 ina = gnabar*m*m*h*s*(v - ena) ik = gkbar*n*n*(v - ek) il = gl*(v - el) } PROCEDURE calcg() { mhn(v*1(/mV)) m = m + fac[0]*(inf[0] - m) :Na activation variable h = h + fac[1]*(inf[1] - h) :Na inactivation variable n = n + fac[2]*(inf[2] - n) :K activation variable s = s + fac[3]*(inf[3] - s) :Na attenuation variable } PROCEDURE states() { : exact when v held constant calcg() VERBATIM return 0; ENDVERBATIM } FUNCTION varss(v, i) { :steady state values if (i==0) { varss = 1 / (1 + exp((v + 40)/(-3))) :Na activation } else if (i==1) { varss = 1 / (1 + exp((v + 45)/(3))) :Na inactivation } else if (i==2) { varss = 1 / (1 + exp((v + 42)/(-2))) :K activation } else { :"s" activation system for spike attenuation - Migliore 96 model varss = alpv(v,vhalfr) } } FUNCTION alpv(v(mV),vh) { :used in "s" activation system infinity calculation alpv = (1+ar2*exp((v-vh)/vvs))/(1+exp((v-vh)/vvs)) } FUNCTION alpr(v(mV)) { :used in "s" activation system tau alpr = exp(1.e-3*zetar*(v-vhalfr)*9.648e4/(8.315*(273.16+celsius))) } FUNCTION betr(v(mV)) { :used in "s" activation system tau betr = exp(1.e-3*zetar*gmr*(v-vhalfr)*9.648e4/(8.315*(273.16+celsius))) } FUNCTION vartau(v, i) { :estimate tau values LOCAL tmp if (i==0) { vartau = 0.05 :Na activation tau } else if (i==1) { vartau = 0.5 :Na inactivation tau } else if (i==2) { vartau = 2.2 :K activation tau } else { tmp = betr(v)/(a0r+b0r*alpr(v)) if (tmp