-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathna16.mod
More file actions
executable file
·140 lines (118 loc) · 2.68 KB
/
Copy pathna16.mod
File metadata and controls
executable file
·140 lines (118 loc) · 2.68 KB
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
TITLE na3
: Na current
: modified from Jeff Magee. M.Migliore may97
: added sh to account for higher threshold M.Migliore, Apr.2002
NEURON {
SUFFIX na16
USEION na READ ena WRITE ina
RANGE gbar, ar2, thegna
GLOBAL vhalfs,sh,tha,qa,Ra,Rb,thi1,thi2,qd,qg,mmin,hmin,q10,Rg,qq,Rd,tq,thinf,qinf,vhalfs,a0s,zetas,gms,smax,vvh,vvs
}
PARAMETER {
sh = 8 (mV)
gbar = 0.1 (mho/cm2)
tha = -35 (mV) : v 1/2 for act
qa = 7.2 (mV) : act slope (4.5)
Ra = 0.4 (/ms) : open (v)
Rb = 0.124 (/ms) : close (v)
thi1 = -45 (mV) : v 1/2 for inact
thi2 = -45 (mV) : v 1/2 for inact
qd = 0.5 (mV) : inact tau slope
qg = 1.5 (mV)
mmin=0.02
hmin=0.01
q10=2
Rg = 0.01 (/ms) : inact recov (v)
Rd = .03 (/ms) : inact (v)
qq = 10 (mV)
tq = -55 (mV)
thinf = -55 (mV) : inact inf slope
qinf = 7 (mV) : inact inf slope
vhalfs=-60 (mV) : slow inact.
a0s=0.0003 (ms) : a0s=b0s
zetas=12 (1)
gms=0.2 (1)
smax=10 (ms)
vvh=-58 (mV)
vvs=2 (mV)
ar2=1 (1) : 1=no inact., 0=max inact.
ena (mV)
Ena = 55 (mV) : must be explicitly def. in hoc
celsius
v (mV)
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(um) = (micron)
}
ASSIGNED {
ina (mA/cm2)
thegna (mho/cm2)
minf
hinf
mtau (ms)
htau (ms)
sinf (ms)
taus (ms)
}
STATE { m h s}
BREAKPOINT {
SOLVE states METHOD cnexp
thegna = gbar*m*m*m*h*s
ina = thegna * (v - Ena)
}
INITIAL {
trates(v,ar2,sh)
m=minf
h=hinf
s=sinf
}
FUNCTION alpv(v) {
alpv = 1/(1+exp((v-vvh-sh)/vvs))
}
FUNCTION alps(v) {
alps = exp(1.e-3*zetas*(v-vhalfs-sh)*9.648e4/(8.315*(273.16+celsius)))
}
FUNCTION bets(v) {
bets = exp(1.e-3*zetas*gms*(v-vhalfs-sh)*9.648e4/(8.315*(273.16+celsius)))
}
LOCAL mexp, hexp, sexp
DERIVATIVE states {
trates(v,ar2,sh)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
s' = (sinf - s)/taus
}
PROCEDURE trates(vm,a2,sh2) {
LOCAL a, b, c, qt
qt=q10^((celsius-24)/10)
a = trap0(vm,tha+sh2,Ra,qa)
b = trap0(-vm,-tha-sh2,Rb,qa)
mtau = 1/(a+b)/qt
if (mtau<mmin) {
mtau=mmin
}
minf = a/(a+b)
a = trap0(vm,thi1,Rd,qd) : +sh2 raus
b = trap0(-vm,-thi2,Rg,qg) : - sh2 raus
htau = 1/(a+b)/qt
if (htau<hmin) {
htau=hmin
}
hinf = 1/(1+exp((vm-thinf)/qinf)): -sh2 raus
c=alpv(vm)
sinf = c+a2*(1-c)
taus = bets(vm)/(a0s*(1+alps(vm)))
if (taus<smax) {
taus=smax
}
}
FUNCTION trap0(v,th,a,q) {
if (fabs(v-th) > 1e-6) {
trap0 = a * (v - th) / (1 - exp(-(v - th)/q))
} else {
trap0 = a * q
}
}