TITLE Kdr channel with slow inactivation :Yiota Poirazi, 11/22/00 NEURON { SUFFIX kdr_inac USEION k READ ek WRITE ik RANGE gkbar RANGE inf, fac, tau } UNITS { (mA) = (milliamp) (mV) = (millivolt) } INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} PARAMETER { celsius = 34 (degC) dt (ms) gkbar=0 (mho/cm2) ek = -77 (mV) v (mV) } STATE { n l } ASSIGNED { ik (mA/cm2) inf[2] fac[2] tau[2] } BREAKPOINT { SOLVE states ik = gkbar*n*n*l*(v - ek) } INITIAL { states() l=1 ik = gkbar*n*n*l*(v - ek) } PROCEDURE calcg() { mhn(v*1(/mV)) n = n + fac[0]*(inf[0] - n) l = l + fac[1]*(inf[1] - l) } PROCEDURE states() { : exact when v held constant calcg() VERBATIM return 0; ENDVERBATIM } FUNCTION varss(v, i) { LOCAL max, min,vhalf,smooth if (i==0) { :varss = 1 / (1 + exp((v + 40)/(-2))) :K activation varss = 1 / (1 + exp((v + 40)/(-3))) :K activation } else { :varss = (1 + 1.6/(1+exp((v + 65)/12)))/2.52 :varss = (1 + 1.8/(1+exp((v + 65)/10)))/2.75 varss = (1 + 2.2/(1+exp((v + 53)/3)))/3.2 } } FUNCTION vartau(v, i) { if (i==0) { :vartau = 1.5 :K activation vartau = 3 :K activation } else { vartau = 100 :K inactivation VERBATIM /* printf("%g %g\n", _lv, _ltmp);*/ ENDVERBATIM } } PROCEDURE mhn(v) {LOCAL a, b :rest = -70 : TABLE inf, fac DEPEND dt, celsius FROM -100 TO 100 WITH 200 FROM i=0 TO 1 { tau[i] = vartau(v,i) inf[i] = varss(v,i) fac[i] = (1 - exp(-dt/tau[i])) } }