TITLE Ca channel Traub
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(S) = (siemens)
(mS) = (millisiemens)
}
NEURON {
THREADSAFE
: note - every variable accessible in NEURON will be having the suffix _gCa
SUFFIX gCa
USEION ca READ eca WRITE ica
RANGE gmax, g, i
GLOBAL rss
: GLOBAL s_inf, tau_s, r_inf, tau_r
}
PARAMETER {
gmax=0.004 (mho/cm2) : value at soma
rss=0 (1)
}
STATE {
s
r
}
ASSIGNED {
v (mV)
eca (mV)
ica (mA/cm2)
s_inf (1)
r_inf (1)
tau_s (ms)
tau_r (ms)
g (S/cm2)
i (mA/cm2)
}
BREAKPOINT {
SOLVE states METHOD cnexp
if (rss==1) {
g = gmax*s^2
} else {
g = gmax*s^2*r
}
i = g*(v-eca)
ica = i
}
INITIAL {
rates(v)
s = s_inf
r = r_inf
}
FUNCTION alpha_s(v(mV)) {
alpha_s = 1.6/(1 + exp( -0.072*(v-65) ) )
}
FUNCTION beta_s(v(mV)) {
beta_s = 0.02*(v - 51.1)/(exp( (v-51.1)/5 ) - 1)
}
FUNCTION alpha_r(v(mV)) {
if ( v<=0 ){
alpha_r = 0.005
} else {
alpha_r = exp(-v/20)/200
}
}
FUNCTION beta_r(v(mV)) {
if ( v<=0 ) {
beta_r = 0
} else {
beta_r = 0.005 - exp(-v/20)/200
}
}
DERIVATIVE states {
rates(v)
s' = (s_inf - s)/tau_s
r' = (r_inf - r)/tau_r
}
PROCEDURE rates(v (mV)) { :callable from hoc
LOCAL alpha, beta
TABLE s_inf, tau_s, r_inf, tau_r : DEPEND vhalfn, vhalfl, tlmax, tnmax
FROM -20 TO 130 WITH 750
alpha = alpha_s(v)
beta = beta_s(v)
tau_s = 1/(alpha + beta)
s_inf = alpha*tau_s
alpha = alpha_r(v)
beta = beta_r(v)
tau_r = 1/(alpha + beta)
r_inf = alpha*tau_r
}