-
Notifications
You must be signed in to change notification settings - Fork 0
/
naf.mod
120 lines (85 loc) · 1.5 KB
/
naf.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
: Fast Na+ channel
NEURON {
SUFFIX Naf
USEION na READ ena WRITE ina
RANGE gnafbar, ina, gna
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
dt (ms)
gnafbar= 0.086 (mho/cm2) <0,1e9>
ena = 55 (mV)
}
STATE {
m h
}
ASSIGNED {
ina (mA/cm2)
minf hinf
mtau (ms)
htau (ms)
gna (mho/cm2)
}
INITIAL {
rate(v)
m = minf
h = hinf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gnafbar*m*m*m*h
ina = gna*(v-55)
}
DERIVATIVE states {
rate(v)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
}
UNITSOFF
FUNCTION malf( v){ LOCAL va
va=v+28
if (fabs(va)<1e-04){
malf= -0.2816*(-9.3 + va*0.5)
}else{
malf = -0.2816*(v+28)/(-1+exp(-(v+28)/9.3))
}
}
FUNCTION mbet(v(mV))(/ms) { LOCAL vb
vb=v+1
if (fabs(vb)<1e-04){
mbet = 0.2464*(6 + vb*0.5)
}else{
mbet = 0.2464*(v+1)/(-1+exp((v+1)/6))
}
}
FUNCTION half(v(mV))(/ms) { LOCAL vc
vc=v+43.1
if (fabs(vc)<1e-04){
half=0.098*(20 + vc*0.5)
}else{
half=0.098/exp((v+43.1)/20)
}
}
FUNCTION hbet(v(mV))(/ms) { LOCAL vd
vd=v+13.1
if (fabs(vd)<1e-04){
hbet=1.4*(10 + vd*0.5)
}else{
hbet=1.4/(1+exp(-(v+13.1)/10))
}
}
PROCEDURE rate(v (mV)) {LOCAL q10, msum, hsum, ma, mb, ha, hb
ma=malf(v) mb=mbet(v) ha=half(v) hb=hbet(v)
msum = ma+mb
minf = ma/msum
mtau = 1/(msum)
hsum=ha+hb
hinf=ha/hsum
htau = 1 / (hsum)
}
UNITSON