-
Notifications
You must be signed in to change notification settings - Fork 1
/
spike.mod
158 lines (130 loc) · 3.1 KB
/
spike.mod
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
TITLE HH style channels for spiking retinal ganglion cells
:
: Modified from Fohlmeister et al, 1990, Brain Res 510, 343-345
: by TJ Velte March 17, 1995
: must be used with calcium pump mechanism, i.e. capump.mod
:
:
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX spike
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
}
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)
}
STATE {
m h n p q c
}
INITIAL {
: The initial values were determined at a resting value of -66.3232 mV in a single-compartment
: m = 0.0155
: h = 0.9399
: n = 0.0768
: p = 0.0398
: q = 0.4526
: c = 0.0016
: at -60 mV
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
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)
}
PROCEDURE states() { : exact when v held constant
evaluate_fct(v)
m = m + m_exp * (m_inf - m)
h = h + h_exp * (h_inf - h)
n = n + n_exp * (n_inf - n)
p = p + p_exp * (p_inf - p)
q = q + q_exp * (q_inf - q)
c = c + c_exp * (c_inf - c)
VERBATIM
return 0;
ENDVERBATIM
}
UNITSOFF
PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b
:NA m
a = (-0.6 * (v+30)) / ((exp(-0.1*(v+30))) - 1)
b = 20 * (exp((-1*(v+55))/18))
tau_m = 1 / (a + b)
m_inf = a * tau_m
:NA h
a = 0.4 * (exp((-1*(v+50))/20))
b = 6 / ( 1 + exp(-0.1 *(v+20)))
tau_h = 1 / (a + b)
h_inf = a * tau_h
:K n (non-inactivating, delayed rectifier)
a = (-0.02 * (v+40)) / ((exp(-0.1*(v+40))) - 1)
b = 0.4 * (exp((-1*(v + 50))/80))
tau_n = 1 / (a + b)
n_inf = a * tau_n
:K (inactivating)
a = (-0.006 * (v+90)) / ((exp(-0.1*(v+90))) - 1)
b = 0.1 * (exp((-1*(v + 30))/10))
tau_p = 1 / (a + b)
p_inf = a * tau_p
a = 0.04 * (exp((-1*(v+70))/20))
b = 0.6 / ( 1 + exp(-0.1 *(v+40)))
tau_q = 1 / (a + b)
q_inf = a * tau_q
:CA channel
a = (-0.3 * (v+13)) / ((exp(-0.1*(v+13))) - 1)
b = 10 * (exp((-1*(v + 38))/18))
tau_c = 1 / (a + b)
c_inf = a * tau_c
: State vars to inifinity
m_exp = 1 - exp(-dt/tau_m)
h_exp = 1 - exp(-dt/tau_h)
n_exp = 1 - exp(-dt/tau_n)
p_exp = 1 - exp(-dt/tau_p)
q_exp = 1 - exp(-dt/tau_q)
c_exp = 1 - exp(-dt/tau_c)
}
UNITSON