TITLE K-D channel from RBD UNITS { (mA) = (milliamp) (mV) = (millivolt) (molar) = (1/liter) (mM) = (millimolar) (S) = (siemens) } NEURON { THREADSAFE : note - every variable accessible in NEURON will be having the suffix _KD SUFFIX KD_ca2 USEION ca READ cai USEION k READ ek WRITE ik RANGE gmax, g, taun, taul, kD_ca, l GLOBAL vhalfn, tnmax,tlmax, tnmin, tauc, cap } PARAMETER { gmax=0.01 (mho/cm2) vhalfn=-45 (mV) vn2=-60 (mV) zn=7.0 (mV) tnmax=100 (ms) tnmin=3.0 (ms) tns=-7.5 (mV) vhalfl=-66 (mV) zl=-2.0 (mV) tlmax=820 (ms) tlmin=20 (ms) tauc=30 (ms) vl2=-63 (mV) tls=17 (mV) kD_ca = 0.0001 (mM) cap = 0.6 lcp=6 } STATE { n lv lc } ASSIGNED { v (mV) ek (mV) cai (mM) ik (mA/cm2) l ninf linf lcinf taul (ms) taun (ms) g (S/cm2) } BREAKPOINT { SOLVE states METHOD cnexp l= (1-(1-lc)*(1-lv))*cap+(1-cap)*lv g = gmax*n*l ik = g*(v-ek) } INITIAL { rates(v) n=ninf lv = linf lci(cai) lc = lcinf l= (1-(1-lc)*(1-lv))*cap+(1-cap)*lv } FUNCTION alpn(v(mV)) { alpn = exp((vhalfn-v)/zn) } FUNCTION betn(v(mV)) { betn = exp((vn2-v)/tns) } FUNCTION alpl(v(mV)) { alpl = exp((vhalfl-v)/zl) } DERIVATIVE states { rates(v) n' = (ninf - n)/taun lv' = (linf - lv)/taul lci(cai) lc' = (lcinf - lc)/tauc } PROCEDURE rates(v (mV)) { :callable from hoc LOCAL a TABLE ninf, taun, linf, taul DEPEND vhalfn, tlmax, tnmax, tnmin FROM -100 TO 50 WITH 600 a = alpn(v) ninf = 1/(1 + a) :taun = tnmax/(1+betn(v))*ninf+tnmin taun = 4*(tnmax-tnmin)/(1+betn(v))*ninf+tnmin a = alpl(v) linf = (1/(1+ a)) :taul = 4*(tlmax-tlmin)/(1+exp((vhalfl-v)/tls))*ninf + tlmin taul = 2*tlmax/( exp((v-vl2)/tls) + exp((vl2-v)/tls) ) + tlmin } PROCEDURE lci(cai (mM)) { :callable from hoc TABLE lcinf DEPEND lcp, kD_ca FROM 0 TO 0.01 WITH 1000 lcinf = (1-(cai/(cai+kD_ca))^(lcp/2))^lcp }