-
Notifications
You must be signed in to change notification settings - Fork 0
/
custom_hh.mod
139 lines (113 loc) · 2.07 KB
/
custom_hh.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
:SOMA
: vogdb & Marco Capogrosso & Emanuele Formento
:
:
: This model has been adapted and is described in detail in:
:
: McIntyre CC and Grill WM. Extracellular Stimulation of Central Neurons:
: Influence of Stimulus Waveform and Frequency on Neuronal Output
: Journal of Neurophysiology 88:1592-1604, 2002.
TITLE Motor Axon Soma
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX custom_hh
NONSPECIFIC_CURRENT ina
NONSPECIFIC_CURRENT ikrect
NONSPECIFIC_CURRENT il
RANGE gnabar, gl, ena, ek, el, gkrect
RANGE m_inf, h_inf, n_inf
RANGE tau_m, tau_h, tau_n
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
PARAMETER {
:SOMA PARAMETERS
gnabar = 0.05 (mho/cm2)
gl = 0.002 (mho/cm2)
gkrect = 0.3 (mho/cm2)
ena = 50.0 (mV)
ek = -80.0 (mV)
el = -70.0 (mV)
dt (ms)
v (mV)
amA = 0.4
amB = 66
amC = 5
bmA = 0.4
bmB = 32
bmC = 5
R=8.314472
F=96485.34
}
STATE {
m h n
}
ASSIGNED {
ina (mA/cm2)
il (mA/cm2)
ikrect (mA/cm2)
m_inf
h_inf
n_inf
tau_m
tau_h
tau_n
}
BREAKPOINT {
SOLVE states METHOD cnexp
ina = gnabar * m*m*m*h*(v - ena)
ikrect = gkrect *n*n*n*n*(v - ek)
il = gl * (v - el)
}
DERIVATIVE states {
: exact Hodgkin-Huxley equations
evaluate_fct(v)
m' = (m_inf - m) / tau_m
h' = (h_inf - h) / tau_h
n' = (n_inf - n) / tau_n
}
UNITSOFF
INITIAL {
evaluate_fct(v)
m = m_inf
h = h_inf
n = n_inf
}
PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b,v2
:FAST SODIUM
:m
a = alpham(v)
b = betam(v)
tau_m = 1 / (a + b)
m_inf = a / (a + b)
:h
tau_h = 30 / (Exp((v+60)/15) + Exp(-(v+60)/16))
h_inf = 1 / (1 + Exp((v+65)/7))
:DELAYED RECTIFIER POTASSIUM
tau_n = 5 / (Exp((v+50)/40) + Exp(-(v+50)/50))
n_inf = 1 / (1 + Exp(-(v+38)/15))
}
FUNCTION alpham(x) {
if (fabs((x+amB)/amC) < 1e-6) {
alpham = amA*amC
}else{
alpham = (amA*(x+amB)) / (1 - Exp(-(x+amB)/amC))
}
}
FUNCTION betam(x) {
if (fabs((x+bmB)/bmC) < 1e-6) {
betam = -bmA*bmC
}else{
betam = (bmA*(-(x+bmB))) / (1 - Exp((x+bmB)/bmC))
}
}
FUNCTION Exp(x) {
if (x < -100) {
Exp = 0
}else{
Exp = exp(x)
}
}
UNITSON