INDEPENDENT {t FROM 0 TO 1 WITH 1 (MS)} NEURON { SUFFIX tchannel USEION ca READ ica, cai, cao WRITE ica RANGE pbar RANGE tt_inf, u_inf RANGE tau_tt, tau_u RANGE tt_exp, u_exp RANGE itt, itmax RANGE pcabar,qt, vshift, GHKa, GHKb,GHKc, GHKo, it } UNITS { (molar)=(1/liter) (mM) = (millimolar) (mA) = (milliamp) (mV) = (millivolt) (nA) = (nanoamp) FARADAY = (faraday)(coulombs) R = (k-mole)(joule/degC) } PARAMETER { celsius (degC) pbar = .000017 (cm/s) <0,1e9> pcabar = .0002 (cm/s) <0,1e9> vshift (mV) v (mV) dt (ms) qt=1 cai = 1e-4 (mM) cao = 15 (mM) GHKo GHKa GHKb GHKc } STATE { tt u } INITIAL { tt = .0003 u = .9 } ASSIGNED { ica (nA/cm2) itt (nA/cm2) itmax (nA/cm2) it (nA/cm2) tt_inf u_inf tau_tt tau_u tt_exp u_exp } BREAKPOINT { SOLVE states itt = (tt*tt*tt*u*pbar*ghk(v,cai, cao)) itmax = (pbar*ghk(v,cai, cao))/10^6 ica = itt : GHKa = (4*(FARADAY^2)*(v*.001))*(1/(R*(celsius+273.18))) : GHKb = ((cai*(.001))-(cao*(.001)))*exp((-2*FARADAY*(v*.001))/(R*(celsius+273.18))) : GHKc = 1/(1-exp((-2*FARADAY*(v*.001))/(R*(celsius+273.18)))) : GHKo = GHKa*GHKb*GHKc : it=tt*tt*tt*u*pbar*GHKo : ica = it } FUNCTION ghk(v(mV), ci(mM), co(mM))(.001 coul/cm3){ LOCAL z, eci, eco z = 1e-3*2*FARADAY*v/(R*(celsius+273.18)) eco = co*efun(z) eci = ci*efun(-z) ghk = (.001)*2*FARADAY*(eci-eco) } FUNCTION efun(z) { if(fabs(z)<1e-4) { efun = 1-z/2 }else{ efun = z/(exp(z)-1) } } PROCEDURE states() { :exact when v held constant evaluate_fct(v) tt = tt + tt_exp*(tt_inf-tt) u = u + u_exp*(u_inf-u) VERBATIM return 0; ENDVERBATIM } UNITSOFF PROCEDURE evaluate_fct(v(mV)) {LOCAL a,b,y,d :LVA calcium channel : qt=1 qt=2.9^((celsius-18)/10) vshift = (15-cao)*(-.757575) : activation tt_inf =( 1.0/(1+exp(((-56.4+vshift)-(v))/13.2)))^3 if(v<-60+vshift) { tau_tt = (44.2 + .8014(v+vshift) +.0049(v+vshift)^2+((9.7*(10^-6))*( v+vshift)^3))*(1/qt) } else{ tau_tt = (.5187 + .01550(v+vshift) +.0013(v+vshift)^2+((-.4064*10^-6)*(v+vshift)^3))*(1/qt) } :inactivation - u u_inf = 1.0/(1+exp(((-68.2+vshift)-(v))/-7.63)) if(v<=-55+vshift) { tau_u =((33.08 +(346.6-33.08)/(1+exp((-82.2-(v+vshift))/-3.362))))*(1/qt) } else{ tau_u = (((.01149*exp(-.1348*(v-vshift)))+(31.42*exp(-.0007572*(v-vshift)))+(-13.38)))*(1/qt) } :states vars to infinity tt_exp = 1-exp(-dt/tau_tt) u_exp = 1-exp(-dt/tau_u) } UNITSON