-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTC_HH.mod
149 lines (117 loc) · 2.64 KB
/
TC_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
140
141
142
143
TITLE Hippocampal HH channels
:
:
: Fast Na+ and K+ currents responsible for action potentials
: Iterative equations
:
: Equations modified by Traub, for Hippocampal Pyramidal cells, in:
: Traub & Miles, Neuronal Networks of the Hippocampus, Cambridge, 1991
:
: range variable vtraub adjust threshold
:
: Written by Alain Destexhe, Salk Institute, Aug 1992
:
: 2019: From ModelDB, accession no. 279
: Modified vtraub, vtraub2 by Elisabetta Iavarone @ Blue Brain Project
: See PARAMETER section for references
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX TC_HH
USEION na READ ena WRITE ina
USEION k READ ek WRITE ik
RANGE gna_max, gk_max, vtraub, vtraub2, i_rec
RANGE m_inf, h_inf, n_inf
RANGE tau_m, tau_h, tau_n
:RANGE m_exp, h_exp, n_exp
RANGE ina, ik
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(S) = (siemens)
}
PARAMETER {
gna_max = 1.0e-1 (S/cm2)
gk_max = 1.0e-1 (S/cm2)
celsius (degC)
dt (ms)
v (mV)
vtraub = -55.5 : Average of original value and Amarillo et al., J Neurophysiol 112:393-410, 2014
vtraub2 = -45.5 : Shift for K current
}
STATE {
m h n
}
ASSIGNED {
ina (mA/cm2)
ik (mA/cm2)
ena (mV)
ek (mV)
i_rec (mA/cm2)
m_inf
h_inf
n_inf
tau_m
tau_h
tau_n
:m_exp
:h_exp
:n_exp
tcorr
}
BREAKPOINT {
SOLVE states METHOD cnexp
ina = gna_max * m*m*m*h * (v - ena)
ik = gk_max * n*n*n*n * (v - ek)
i_rec = ina + ik
}
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
}
: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)
: VERBATIM
: return 0;
: ENDVERBATIM
:}
UNITSOFF
INITIAL {
:
: Q10 was assumed to be 3 for both currents
:
: original measurements at roomtemperature?
tcorr = 3.0 ^ ((celsius-36)/ 10 )
evaluate_fct(v)
m = m_inf
h = h_inf
n = n_inf
}
PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b,v2, v3, v4
v2 = v - vtraub : convert to traub convention
v3 = v - vtraub2 : EI: shift only K
if(v2 == 13 || v2 == 40 || v2 == 15 ){
v = v+0.0001
}
a = 0.32 * (13-v2) / ( exp((13-v2)/4) - 1)
b = 0.28 * (v2-40) / ( exp((v2-40)/5) - 1)
tau_m = 1 / (a + b) / tcorr
m_inf = a / (a + b)
a = 0.128 * exp((17-v2)/18)
b = 4 / ( 1 + exp((40-v2)/5) )
tau_h = 1 / (a + b) / tcorr
h_inf = a / (a + b)
a = 0.032 * (15-v3) / ( exp((15-v3)/5) - 1)
b = 0.5 * exp((10-v3)/40)
tau_n = 1 / (a + b) / tcorr
n_inf = a / (a + b)
:m_exp = 1 - exp(-dt/tau_m)
:h_exp = 1 - exp(-dt/tau_h)
:n_exp = 1 - exp(-dt/tau_n)
}
UNITSON