-
Notifications
You must be signed in to change notification settings - Fork 2
/
MRGnode.mod
120 lines (100 loc) · 2.41 KB
/
MRGnode.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
TITLE Motor Axon Node channels, cleaned up
: 3/20
: Theo Lemaire
:
: Fast Na+, Persistant Na+, Slow K+, and Leakage currents
: responsible for nodal action potential
: Iterative equations H-H notation rest = -80 mV
:
: This model is described in detail in:
:
: McIntyre CC, Richardson AG, and Grill WM. Modeling the excitability of
: mammalian nerve fibers: influence of afterpotentials on the recovery
: cycle. Journal of Neurophysiology 87:995-1006, 2002.
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX MRGnode
NONSPECIFIC_CURRENT inaf
NONSPECIFIC_CURRENT inap
NONSPECIFIC_CURRENT iks
NONSPECIFIC_CURRENT il
RANGE gnafbar, gnapbar, gksbar, gl, ena, ek, el
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
PARAMETER {
celsius (degC)
v (mV)
q10_mp
q10_h
q10_s
gnafbar = 3.0 (mho/cm2)
gnapbar = 0.01 (mho/cm2)
gksbar = 0.08 (mho/cm2)
gl = 0.007 (mho/cm2)
ena = 50.0 (mV)
ek = -90.0 (mV)
el = -90.0 (mV)
mhshift = 3. (mV)
vtraub = -80. (mV)
}
STATE {
m h p s
}
ASSIGNED {
inaf (mA/cm2)
inap (mA/cm2)
iks (mA/cm2)
il (mA/cm2)
}
BREAKPOINT {
SOLVE states METHOD cnexp
inaf = gnafbar * m * m * m * h * (v - ena)
inap = gnapbar * p * p * p * (v - ena)
iks = gksbar * s * (v - ek)
il = gl * (v - el)
}
DERIVATIVE states {
m' = alpham(v) * (1 - m) - betam(v) * m
h' = alphah(v) * (1 - h) - betah(v) * h
p' = alphap(v) * (1 - p) - betap(v) * p
s' = alphas(v) * (1 - s) - betas(v) * s
}
INITIAL {
q10_mp = 2.2^((celsius - 20) / 10)
q10_h = 2.9^((celsius - 20) / 10)
q10_s = 3.0^((celsius - 36)/ 10)
m = alpham(v) / (alpham(v) + betam(v))
h = alphah(v) / (alphah(v) + betah(v))
p = alphap(v) / (alphap(v) + betap(v))
s = alphas(v) / (alphas(v) + betas(v))
}
FUNCTION vtrap(x, y) {
vtrap = x / (exp(x / y) - 1)
}
FUNCTION alpham (v(mV)) {
alpham = q10_mp * 1.86 * vtrap(-(v + mhshift + 18.4), 10.3)
}
FUNCTION betam (v(mV)) {
betam = q10_mp * 0.086 * vtrap(v + mhshift + 22.7, 9.16)
}
FUNCTION alphah (v(mV)) {
alphah = q10_h * 0.062 * vtrap(v + mhshift + 111.0, 11.0)
}
FUNCTION betah (v(mV)) {
betah = q10_h * 2.3 / (1 + exp(-(v + mhshift + 28.8) / 13.4))
}
FUNCTION alphap (v(mV)) {
alphap = q10_mp * 0.01 * vtrap(-(v + 27.), 10.2)
}
FUNCTION betap (v(mV)) {
betap = q10_mp * 0.00025 * vtrap(v + 34., 10.)
}
FUNCTION alphas (v(mV)) {
alphas = q10_s * 0.3 / (1 + exp(-(v - vtraub - 27.) / 5.))
}
FUNCTION betas (v(mV)) {
betas = q10_s * 0.03 / (1 + exp(-(v - vtraub + 10.) / 1.))
}