TITLE HH style channels for spiking retinal ganglion cells
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX spikeOptm
USEION na READ ena WRITE ina
USEION k READ ek WRITE ik
USEION ca READ cai, eca, cao WRITE ica
RANGE gnabar, gkbar, gabar, gcabar, gkcbar
RANGE m_inf, h_inf, n_inf, p_inf, q_inf, c_inf
RANGE tau_m, tau_h, tau_n, tau_p, tau_q, tau_c
RANGE m_exp, h_exp, n_exp, p_exp, q_exp, c_exp
RANGE idrk, iak, icak
RANGE nam1, nam2, nam3, nam4, nam5, nam6, nam7
RANGE nah1, nah2, nah3, nah4, nah5, nah6
RANGE kn1, kn2, kn3, kn4, kn5, kn6, kn7
RANGE kp1, kp2, kp3, kp4, kp5, kp6, kp7
RANGE kq1, kq2, kq3, kq4, kq5, kq6
RANGE ca1, ca2, ca3, ca4, ca5, ca6, ca7
}
UNITS {
(molar) = (1/liter)
(mM) = (millimolar)
(mA) = (milliamp)
(mV) = (millivolt)
}
PARAMETER {
gnabar = 0.04 (mho/cm2)
gkbar = 0.012 (mho/cm2)
gabar = 0.036 (mho/cm2)
gcabar = 0.002 (mho/cm2)
gkcbar = 0.00005 (mho/cm2)
ena = 35 (mV)
ek = -75 (mV)
eca (mV)
cao = 1.8 (mM)
cai = 0.0001 (mM)
dt (ms)
v (mV)
nam1 = -0.6
nam2 = 30
nam3 = -0.1
nam4 = 30
nam5 = 20
nam6 = 55
nam7 = 18
nah1 = 0.4
nah2 = 50
nah3 = 20
nah4 = 6
nah5 = -0.1
nah6 = 20
kn1 = -0.02
kn2 = 40
kn3 = -0.1
kn4 = 40
kn5 = 0.4
kn6 = 50
kn7 = 80
kp1 = -0.006
kp2 = 90
kp3 = -0.1
kp4 = 90
kp5 = 0.1
kp6 = 30
kp7 = 10
kq1 = 0.04
kq2 = 70
kq3 = 20
kq4 = 0.6
kq5 = -0.1
kq6 = 40
ca1 = -0.3
ca2 = 13
ca3 = -0.1
ca4 = 13
ca5 = 10
ca6 = 38
ca7 = 18
}
STATE {
m h n p q c
}
INITIAL {
m = 0.0345
h = 0.8594
n = 0.1213
p = 0.0862
q = 0.2534
c = 0.0038
}
ASSIGNED {
ina (mA/cm2)
ik (mA/cm2)
idrk (mA/cm2)
iak (mA/cm2)
icak (mA/cm2)
ica (mA/cm2)
m_inf h_inf n_inf p_inf q_inf c_inf
tau_m tau_h tau_n tau_p tau_q tau_c
m_exp h_exp n_exp p_exp q_exp c_exp
}
BREAKPOINT {
SOLVE states METHOD cnexp
ina = gnabar * m*m*m*h * (v - ena)
idrk = gkbar * n*n*n*n * (v - ek)
iak = gabar * p*p*p*q * (v - ek)
icak = gkcbar * ((cai / 0.001)/ (1 + (cai / 0.001))) * (v - ek)
ik = idrk + iak + icak
ica = gcabar * c*c*c * (v - eca)
}
DERIVATIVE states { evaluate_fct(v)
m' = (m_inf-m)/tau_m
h' = (h_inf-h)/tau_h
n' = (n_inf-n)/tau_n
p' = (p_inf-p)/tau_p
q' = (q_inf-q)/tau_q
c' = (c_inf-c)/tau_c
}
UNITSOFF
PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b
a = (nam1 * (v+nam2)) / ((exp(nam3*(v+nam4))) - 1)
b = nam5 * (exp((-1*(v+nam6))/nam7))
tau_m = 1 / (a + b)
m_inf = a * tau_m
a = nah1 * (exp((-1*(v+nah2))/nah3))
b = nah4 / ( 1 + exp(nah5 *(v+nah6)))
tau_h = 1 / (a + b)
h_inf = a * tau_h
a = (kn1 * (v+kn2)) / ((exp(kn3*(v+kn4))) - 1)
b = kn5 * (exp((-1*(v + kn6))/kn7))
tau_n = 1 / (a + b)
n_inf = a * tau_n
a = (kp1 * (v+kp2)) / ((exp(kp3*(v+kp4))) - 1)
b = kp5 * (exp((-1*(v + kp6))/kp7))
tau_p = 1 / (a + b)
p_inf = a * tau_p
a = kq1 * (exp((-1*(v+kq2))/kq3))
b = kq4 / (1 + exp(kq5 *(v+kq6)))
tau_q = 1 / (a + b)
q_inf = a * tau_q
a = (ca1 * (v+ca2)) / ((exp(ca3*(v+ca4))) - 1)
b = ca5 * (exp((-1*(v + ca6))/ca7))
tau_c = 1 / (a + b)
c_inf = a * tau_c
}
UNITSON