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 : Yiota Poirazi-modified threshold for soma/axon spike initiation (threshold about -57 mV), : USC Los Angeles 2000, poirazi@LNC.usc.edu : This file is used only in soma and axon sections NEURON { SUFFIX hha2 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 } 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 + 42.5)/(-3))) : Na activation } else if (i==1) { varss = 1 / (1 + exp((v + 49)/(3.5))) : Na inactivation } else if (i==2) { varss = 1 / (1 + exp((v + 46.3)/(-3))) : 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 = 1 :Na inactivation tau } else if (i==2) { vartau = 3.5 :K activation } else { tmp = betr(v)/(a0r+b0r*alpr(v)) if (tmp