-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnaz.mod
134 lines (103 loc) · 2.75 KB
/
naz.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
: $Id: naz.mod,v 1.8 2004/07/27 18:41:01 billl Exp $
COMMENT
26 Ago 2002 Modification of original channel to allow variable time step and to
correct an initialization error.
Done by Michael Hines([email protected]) and Ruggero
Scorcioni([email protected]) at EU Advance Course in Computational
Neuroscience. Obidos, Portugal
na.mod
Sodium channel, Hodgkin-Huxley style kinetics.
Kinetics were fit to data from Huguenard et al. (1988) and Hamill et
al. (1991)
qi is not well constrained by the data, since there are no points
between -80 and -55. So this was fixed at 5 while the thi1,thi2,Rg,Rd
were optimized using a simplex least square proc
voltage dependencies are shifted approximately from the best
fit to give higher threshold
Author: Zach Mainen, Salk Institute, 1994, [email protected]
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX naz
USEION na READ ena WRITE ina
RANGE m, h, gna, gmax, i
GLOBAL tha, thi1, thi2, qa, qi, qinf, thinf
GLOBAL minf, hinf, mtau, htau
GLOBAL Ra, Rb, Rd, Rg
GLOBAL q10, temp, tadj, vmin, vmax, vshift
}
PARAMETER {
gmax = 1000 (pS/um2) : 0.12 mho/cm2
vshift = -10 (mV) : voltage shift (affects all)
tha = -35 (mV) : v 1/2 for act (-42)
qa = 9 (mV) : act slope
Ra = 0.182 (/ms) : open (v)
Rb = 0.124 (/ms) : close (v)
thi1 = -50 (mV) : v 1/2 for inact
thi2 = -75 (mV) : v 1/2 for inact
qi = 5 (mV) : inact tau slope
thinf = -65 (mV) : inact inf slope
qinf = 6.2 (mV) : inact inf slope
Rg = 0.0091 (/ms) : inact (v)
Rd = 0.024 (/ms) : inact recov (v)
temp = 23 (degC) : original temp
q10 = 2.3 : temperature sensitivity
v (mV)
dt (ms)
celsius (degC)
vmin = -120 (mV)
vmax = 100 (mV)
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(um) = (micron)
}
ASSIGNED {
ina (mA/cm2)
i (mA/cm2)
gna (pS/um2)
ena (mV)
minf hinf
mtau (ms) htau (ms)
tadj
}
STATE { m h }
INITIAL {
tadj = q10^((celsius - temp)/10)
rates(v+vshift)
m = minf
h = hinf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gna = tadj*gmax*m*m*m*h
i = (1e-4) * gna * (v - ena)
ina = i
}
LOCAL mexp, hexp
DERIVATIVE states { :Computes state variables m, h, and n
rates(v+vshift) : at the current v and dt.
m' = (minf-m)/mtau
h' = (hinf-h)/htau
}
PROCEDURE rates(vm) {
LOCAL a, b
a = trap0(vm,tha,Ra,qa)
b = trap0(-vm,-tha,Rb,qa)
mtau = 1/tadj/(a+b)
minf = a/(a+b)
:"h" inactivation
a = trap0(vm,thi1,Rd,qi)
b = trap0(vm,thi2,-Rg,-qi)
htau = 1/tadj/(a+b)
hinf = 1/(1+exp((vm-thinf)/qinf))
}
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
}
}