-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhha2.mod
170 lines (136 loc) · 4.19 KB
/
hha2.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
144
145
146
147
148
149
150
151
152
153
154
155
TITLE HH channel that includes both a sodium and a delayed rectifier channel
: and accounts for sodium conductance attenuation
: Bartlett Mel-modified Hodgkin - Huxley conductances (after Ojvind et al.)
: Terrence Brannon-added attenuation
: Yiota Poirazi-modified Kdr and Na threshold and time constants to make it more stable
: Yiota Poirazi-modified threshold for soma/axon spike initiation (threshold about -57 mV),
: USC Los Angeles 2000, [email protected]
: This file is used only in soma and axon sections
NEURON {
SUFFIX hha2
USEION na READ ena WRITE ina
USEION k READ ek WRITE ik
NONSPECIFIC_CURRENT il
RANGE gnabar, gkbar, gl, el
RANGE ar2, vhalfs
RANGE inf, fac, tau
RANGE taus
RANGE W
GLOBAL taumin
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER { :parameters that can be entered when function is called in cell-setup
a0r = 0.0003 (ms)
b0r = 0.0003 (ms)
zetar = 12
zetas = 12
gmr = 0.2
ar2 = 1.0 :initialized parameter for location-dependent
:Na-conductance attenuation, "s", (ar=1 -> zero attenuation)
taumin = 3 (ms) :min activation time for "s" attenuation system
vvs = 2 (mV) :slope for "s" attenuation system
vhalfr = -60 (mV) :half potential for "s" attenuation system
W = 0.016 (/mV) :this 1/61.5 mV
: gnabar = 0.2 (mho/cm2) :suggested conductance values
: gkbar = 0.12 (mho/cm2)
: gl = 0.0001 (mho/cm2)
gnabar = 0 (mho/cm2) :initialized conductances
gkbar = 0 (mho/cm2) :actual values set in cell-setup.hoc
gl = 0 (mho/cm2)
ena = 60 (mV) :Na reversal potential (also reset in
ek = -77 (mV) :K reversal potential cell-setup.hoc)
el = -70.0 (mV) :steady state
celsius = 34 (degC)
v (mV)
dt
}
STATE { :the unknown parameters to be solved in the DEs
m h n s
}
ASSIGNED { :parameters needed to solve DE
ina (mA/cm2)
ik (mA/cm2)
il (mA/cm2)
inf[4]
fac[4]
tau[4]
}
BREAKPOINT {
SOLVE states
ina = gnabar*m*m*h*s*(v - ena) :Sodium current
ik = gkbar*n*n*(v - ek) :Potassium current
il = gl*(v - el) :leak current
}
INITIAL { :initialize the following parameter using states()
states()
s=1
ina = gnabar*m*m*h*s*(v - ena)
ik = gkbar*n*n*(v - ek)
il = gl*(v - el)
}
PROCEDURE calcg() {
mhn(v*1(/mV))
m = m + fac[0]*(inf[0] - m) :Na activation variable
h = h + fac[1]*(inf[1] - h) :Na inactivation variable
n = n + fac[2]*(inf[2] - n) :K activation variable
s = s + fac[3]*(inf[3] - s) :Na attenuation variable
}
PROCEDURE states() { : exact when v held constant
calcg()
VERBATIM
return 0;
ENDVERBATIM
}
FUNCTION varss(v, i) { :steady state values
if (i==0) {
varss = 1 / (1 + exp((v + 44)/(-3))) :Na activation
}
else if (i==1) {
varss = 1 / (1 + exp((v + 49)/(3.5))) :Na inactivation
}
else if (i==2) {
varss = 1 / (1 + exp((v + 46.3)/(-3))) :K activation
} else {
:"s" activation system for spike attenuation - Migliore 96 model
varss = alpv(v,vhalfr)
}
}
FUNCTION alpv(v(mV),vh) { :used in "s" activation system infinity calculation
alpv = (1+ar2*exp((v-vh)/vvs))/(1+exp((v-vh)/vvs))
}
FUNCTION alpr(v(mV)) { :used in "s" activation system tau
alpr = exp(1.e-3*zetar*(v-vhalfr)*9.648e4/(8.315*(273.16+celsius)))
}
FUNCTION betr(v(mV)) { :used in "s" activation system tau
betr = exp(1.e-3*zetar*gmr*(v-vhalfr)*9.648e4/(8.315*(273.16+celsius)))
}
FUNCTION vartau(v, i) { :estimate tau values
LOCAL tmp
if (i==0) {
vartau = 0.05 :Na activation tau
}
else if (i==1) {
vartau = 1 :Na inactivation tau
}
else if (i==2) {
vartau = 3.5 :K activation
} else {
tmp = betr(v)/(a0r+b0r*alpr(v))
if (tmp<taumin) {tmp=taumin}
VERBATIM
ENDVERBATIM
vartau = tmp :s activation tau
}
}
PROCEDURE mhn(v) {LOCAL a, b :rest = -70
: TABLE infinity, tau, fac DEPEND dt, celsius FROM -100 TO 100 WITH 200
FROM i=0 TO 3 {
tau[i] = vartau(v,i)
inf[i] = varss(v,i)
fac[i] = (1 - exp(-dt/tau[i]))
}
}