TITLE CaL channel : Calcium Channel with Goldman- Hodgkin-Katz permeability NEURON { SUFFIX caL USEION ca READ cai, cao WRITE ica RANGE pbar, p, i GLOBAL inf_n, tau_n, inf_h, tau_h, inf_c, tau_c } UNITS { (molar) = (1/liter) (mV) = (millivolt) (mA) = (milliamp) (mM) = (millimolar) :FARADAY = 96520 (coul) :R = 8.3134 (joule/degC) FARADAY = (faraday) (coulomb) R = (k-mole) (joule/degC) } PARAMETER { : inf_n parameters pbar = 0.241e-3 (cm/s) : Maximum Permeability gates_n = 2 vhalf_n = -30.1 (mV) slope_n = -4.77 (mV) needAdj = 1 vhalfA_n = 0 (mV) : adjusted for ngate power; Set in ngate_adjust() slopeA_n = 0 (mV) v5_adj = 0 (mV) : for return values in ngate_adjust slp_adj = 0 (mV) : tau_n parameters tauA_n = 1.5 (ms) tauDv_n = 0 (mV) : Delta to vhalf_n tauG_n = 0.5 : Left-right bias. range is (0,1) tauF_n = 0 : Up-Down bias. range is ~ -3.5(cup-shape), -3(flat), 0(from k), 1(sharper) tau0_n = 0 (ms) : minimum tau : inf_h parameters vhalf_h = -59.5 (mV) slope_h = 10 (mV) : vhat_h = -59.5 (mV) : shat_h = 10 (mV) tauA_h = 200 (ms) tauG_h = 0.5 : Left-right bias. range (0,1) tau0_h = 0 (ms) tauF_h = 0 tauDv_h = 0 hill_c = 2 K_c = .001 (mM) tauA_c = 10 (ms) tau0_c = 10 (ms) } ASSIGNED { celsius (degC) : 32 v (mV) i (mA/cm2) ica (mA/cm2) cai (mM) cao (mM) p (cm/s) inf_n tau_n (ms) inf_h tau_h (ms) inf_c tau_c (ms) } STATE { n : activation h : inactivation c : calcium dependent inactivation } BREAKPOINT { SOLVE states METHOD cnexp p = 0 p = pbar * n^2 * h * c i = p * ghk(v, cai, cao) ica = i } INITIAL { rates(v, cai) n = inf_n h = inf_h c = inf_c } DERIVATIVE states { rates(v, cai) n' = ( inf_n - n) / tau_n h' = ( inf_h - h) / tau_h c' = ( inf_c - c) / tau_c } PROCEDURE rates (v (mV), cai ( mM)) { if( needAdj > 0 ){ needAdj = 0 ngate_adjust( gates_n, vhalf_n, slope_n ) vhalfA_n = v5_adj slopeA_n = slp_adj } inf_n = Boltzmann( v, vhalfA_n, slopeA_n ) tau_n = BorgMod_tau( v, vhalfA_n, slopeA_n, tau0_n, tauA_n, tauG_n, tauF_n, tauDv_n ) inf_h = 1 / (1 + exp((v - vhalf_h)/slope_h)) tau_h = tau0_h + tauA_h*4*sqrt(tauG_h * (1 - tauG_h))/(exp(-(v - vhalf_h)/slope_h*(1 - tauG_h)) + exp((v - vhalf_h)/slope_h*tauG_h)) inf_c = 1/(1 + (cai/K_c)^hill_c) tau_c = tau0_c + tauA_c/(1 + (cai/K_c)^hill_c) } FUNCTION Boltzmann( v (mV), v5 (mV), s (mV) ){ Boltzmann = 1 / (1 + exp( (v - v5) / s )) } FUNCTION BorgMod_tau( v (mV), v5 (mV), s (mV), tau0 (ms), tauA (ms), tauG, tauF, tauDv (mV) ) (ms) { LOCAL kc, kr, Dv, wr, kf : kr = 1000 : wr = 1000 Dv = (v - ( v5 + tauDv )) : kc = kr * 10^tauF / s *1(mV) kf = 10^tauF BorgMod_tau = tau0 + tauA * 4 * sqrt( tauG * (1-tauG)) / ( exp( - Dv *(1-tauG)*kf/s ) + exp( Dv *tauG*kf/s )) } FUNCTION ghk(v(mV), ci(mM), co(mM)) (.001 coul/cm3) { LOCAL z, eci, eco z = (1e-3)*2*FARADAY*v/(R*(celsius+273.15)) eco = co*efun(z) eci = ci*efun(-z) :high cao charge moves inward :negative potential charge moves inward ghk = (.001)*2*FARADAY*(eci - eco) } FUNCTION efun(z) { if (fabs(z) < 1e-4) { efun = 1 - z/2 }else{ efun = z/(exp(z) - 1) } } : Boltzmann's inverse FUNCTION Boltz_m1( x, v5 (mV), s (mV) ) (mV) { Boltz_m1 = s * log( 1/x - 1 ) + v5 } : Find parameters for a Boltzmann eq that when taken to the ngate power matches one with a single power : return result in v5_adj and slp_adj : We solve for exact match on two points PROCEDURE ngate_adjust( ng, vh (mV), slp (mV) ) { LOCAL x1, x2, v1, v2 x1 = 0.3 x2 = 0.7 v1 = Boltz_m1( x1, vh, slp ) v2 = Boltz_m1( x2, vh, slp ) slp_adj = (v2 - v1)/( log( (1/x2)^(1/ng) - 1 ) - log( (1/x1)^(1/ng) - 1 ) ) v5_adj = v1 - slp_adj * log( 1 / x1^(1/ng) - 1 ) }