-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNafIs.mod
109 lines (76 loc) · 1.48 KB
/
NafIs.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
: Fast Sodium Channels - Initial Segment
NEURON {
SUFFIX NafIs
NONSPECIFIC_CURRENT ina
RANGE gnabar, ena, gna
RANGE m_inf, h_inf
RANGE th , shiftT
RANGE amA, bmA, theta_h
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
PARAMETER {
gnabar = 1.3392 (mho/cm2)
ena = 50.0 (mV)
amA = 10
bmA = 30
th = 30 (ms)
theta_h = 55
kappa_h = 7
celsius = 20 (degC)
shiftT = 0 (degC)
vtraub2 = -10 (mV)
vtraub22 = -70 (mV)
}
STATE {
m h
}
ASSIGNED {
dt (ms)
v (mV)
ina (mA/cm2)
gna (mho/cm2)
m_inf
h_inf
tau_m (ms)
tau_h (ms)
tadj3
}
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gnabar * m*m*m*h
ina = gnabar * m*m*m*h * (v - ena)
}
DERIVATIVE states { : exact Hodgkin-Huxley equations
evaluate_fct(v)
m' = (m_inf - m) / tau_m
h' = (h_inf - h) / tau_h
}
UNITSOFF
INITIAL {
: Q10 adjustment
tadj3 = 3.0 ^ ((celsius-36-shiftT)/ 10 )
evaluate_fct(v)
m = m_inf
h = h_inf
}
PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b,v2,v22
v2 = v - vtraub2
v22 = v - vtraub22
a = 0.4*vtrap(amA-v22,5)
b = 0.4*vtrap(v22-bmA,5)
tau_m = (1*tadj3) / (a + b)
m_inf = a / (a + b)
tau_h = (th * tadj3) / (exp((v2+50)/15)+exp(-(v2+50)/16))
h_inf = 1 / (1+exp((v2+theta_h)/kappa_h))
}
FUNCTION vtrap(x,y) {
if (fabs(x/y) < 1e-6) {
vtrap = y*(1 - x/y/2)
}else{
vtrap = x/(exp(x/y)-1)
}
}
UNITSON