-
Notifications
You must be signed in to change notification settings - Fork 0
/
density_mechs.hoc
executable file
·230 lines (195 loc) · 8.54 KB
/
density_mechs.hoc
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
/* ---------------------------------------------
Define the Density Mechanisms
----------------------------------------------*/
// --------------------------------------------
// Install Passive Properties
// --------------------------------------------
proc install_passive() {
// Forall
forall {
insert pas
Ra = ra
cm = c_m
g_pas = 1/rm
e_pas = v_init
}
soma.cm=soma_cm
// Exceptions along the myelinated axon
forsec "myelin" cm = cm_myelin
forsec "node" g_pas = g_pas_node
}
// --------------------------------------------
// Install Active Channels
// --------------------------------------------
proc install_channels() {
/* Add all kinds of channels to all sections*/
forall {
insert na gbar_na=0
insert na12 gbar_na12=0
insert na16 gbar_na16=0
insert kv gbar_kv=0
insert km gbar_km=0
insert kca gbar_kca=0
insert ca gbar_ca=0
}
// Added by Hu
vshift_na12 = -35 - vhalf_na12 -10 // negative shift of input voltage, high threshold -30mV
vshift_na16 = -35 - vhalf_na16 -10 // positive shift of input voltage, low threshold -43mV
vshift_na = -35 - vhalf_na -10 // the same as Na12
/* Channel Constants */
forall if(ismembrane("k_ion")) ek = Ek
forall if(ismembrane("na_ion")) ena = Ena
forall if(ismembrane("ca_ion")) {
eca = Eca
ion_style("ca_ion",0,1,0,0,0)
vshift_ca = 0
}
/* Somatodendritic */
forsec somatodendritic {
gbar_na = gna12_dend // 80
gbar_kv = gkv_dend // 20
gbar_km = gkm // 0.3
gbar_kca = gkca // 0.3
gbar_ca = gca // 0.3
insert cad // Internal calcium concentration mechanism only at somatodendritic region.
}
soma {
gbar_na=gna12_soma // 80
gbar_kv = gkv_soma // 20
gbar_km = gkm_soma // 0.3
gbar_kca = gkca_soma // 0.3
gbar_ca = gca_soma // 0.3
}
/* hill -> ais[0] -> ... -> ais[9] */
// Nav 1.2 ( gna12_ais_max=3200, refer to "Nav% iseg.xls")
hill.gbar_na12= gna12_ais_max * 1 * 0.8
ais[0]. gbar_na12= gna12_ais_max * 0.96 * 1
ais[1]. gbar_na12= gna12_ais_max * 0.9 * 1
ais[2]. gbar_na12= gna12_ais_max * 0.75 * 1
ais[3]. gbar_na12= gna12_ais_max * 0.55 * 0.95
ais[4]. gbar_na12= gna12_ais_max * 0.366985879 * 0.880142857
ais[5]. gbar_na12= gna12_ais_max * 0.2 * 0.75
ais[6]. gbar_na12= gna12_ais_max * 0.100330761 * 0.647857143
ais[7]. gbar_na12= gna12_ais_max * 0.011532125 * 0.520285714
ais[8]. gbar_na12= gna12_ais_max * 0 * 0.428571429
ais[9]. gbar_na12= gna12_ais_max * 0 * 0.342857143
// Nav 1.6 ( gna16_ais_max=3200, refer to "Nav% iseg.xls" )
hill.gbar_na16 = gna16_ais_max * 0 * 0.8
ais[0]. gbar_na16 = gna16_ais_max * 0.04 * 1
ais[1]. gbar_na16 = gna16_ais_max * 0.1 * 1
ais[2]. gbar_na16 = gna16_ais_max * 0.25 * 1
ais[3]. gbar_na16 = gna16_ais_max * 0.45 * 0.95
ais[4]. gbar_na16 = gna16_ais_max * 0.633014121 * 0.880142857
ais[5]. gbar_na16 = gna16_ais_max * 0.8 * 0.75
ais[6]. gbar_na16 = gna16_ais_max * 0.899669239 * 0.647857143
ais[7]. gbar_na16 = gna16_ais_max * 0.988467875 * 0.520285714
ais[8]. gbar_na16 = gna16_ais_max * 1 * 0.428571429
ais[9]. gbar_na16 = gna16_ais_max * 1 * 0.342857143
// Kv delayed rectifier channels ( gkv_axon=1000 )
hill.gbar_kv = gkv_axon * 0.1
ais[0]. gbar_kv = gkv_axon * 0.2
ais[1]. gbar_kv = gkv_axon * 0.3
ais[2]. gbar_kv = gkv_axon * 0.4
ais[3]. gbar_kv = gkv_axon * 0.5
ais[4]. gbar_kv = gkv_axon * 0.6
ais[5]. gbar_kv = gkv_axon * 0.7
ais[6]. gbar_kv = gkv_axon * 0.8
ais[7]. gbar_kv = gkv_axon * 0.9
ais[8]. gbar_kv = gkv_axon * 1
ais[9]. gbar_kv = gkv_axon * 1
/* Nakeaxon */
nakeaxon {
gbar_na16 = gna16_nakeaxon // 300, artificial (ought to be 1600)
gbar_na12 = 0
gbar_kv = 1500
}
/* ( Myelin[0] Node[0] ) -> ... -> ( Myelin[n_myelin] Node[n_myelin] ) */
forsec "myelin" gbar_na = gna12_myelin // 20
forsec "node" gbar_na16 = gna16_ais_max/2 // 1600
}
proc install_channels_stoch() {
/* Add all kinds of channels to all sections*/
forall {
insert na_stoch gbar_na_stoch=0
insert na12_stoch gbar_na12_stoch=0
insert na16_stoch gbar_na16_stoch=0
insert kv gbar_kv=0
insert km gbar_km=0
insert kca gbar_kca=0
insert ca gbar_ca=0
}
// Added by Hu
vshift_na12_stoch = -35 - vhalf_na12_stoch -10 // negative shift of input voltage, high threshold -30mV
vshift_na16_stoch = -35 - vhalf_na16_stoch -10 // positive shift of input voltage, low threshold -43mV
vshift_na_stoch = -35 - vhalf_na_stoch -10 // the same as Na12
/* Channel Constants */
forall if(ismembrane("k_ion")) ek = Ek
forall if(ismembrane("na_ion")) ena = Ena
forall if(ismembrane("ca_ion")) {
eca = Eca
ion_style("ca_ion",0,1,0,0,0)
vshift_ca = 0
}
/* Somatodendritic */
forsec somatodendritic {
gbar_na_stoch = gna12_dend // 80
gbar_kv = gkv_dend // 20
gbar_km = gkm // 0.3
gbar_kca = gkca // 0.3
gbar_ca = gca // 0.3
insert cad // Internal calcium concentration mechanism only at somatodendritic region.
}
soma {
gbar_na_stoch=gna12_soma // 80
gbar_kv = gkv_soma // 20
gbar_km = gkm_soma // 0.3
gbar_kca = gkca_soma // 0.3
gbar_ca = gca_soma // 0.3
}
/* hill -> ais[0] -> ... -> ais[9] */
// Nav 1.2 ( gna12_ais_max=3200, refer to "Nav% iseg.xls")
hill.gbar_na12_stoch= gna12_ais_max * 1 * 0.8
ais[0]. gbar_na12_stoch= gna12_ais_max * 0.96 * 1
ais[1]. gbar_na12_stoch= gna12_ais_max * 0.9 * 1
ais[2]. gbar_na12_stoch= gna12_ais_max * 0.75 * 1
ais[3]. gbar_na12_stoch= gna12_ais_max * 0.55 * 0.95
ais[4]. gbar_na12_stoch= gna12_ais_max * 0.366985879 * 0.880142857
ais[5]. gbar_na12_stoch= gna12_ais_max * 0.2 * 0.75
ais[6]. gbar_na12_stoch= gna12_ais_max * 0.100330761 * 0.647857143
ais[7]. gbar_na12_stoch= gna12_ais_max * 0.011532125 * 0.520285714
ais[8]. gbar_na12_stoch= gna12_ais_max * 0 * 0.428571429
ais[9]. gbar_na12_stoch= gna12_ais_max * 0 * 0.342857143
// Nav 1.6 ( gna16_ais_max=3200, refer to "Nav% iseg.xls" )
hill.gbar_na16_stoch = gna16_ais_max * 0 * 0.8
ais[0]. gbar_na16_stoch = gna16_ais_max * 0.04 * 1
ais[1]. gbar_na16_stoch = gna16_ais_max * 0.1 * 1
ais[2]. gbar_na16_stoch = gna16_ais_max * 0.25 * 1
ais[3]. gbar_na16_stoch = gna16_ais_max * 0.45 * 0.95
ais[4]. gbar_na16_stoch = gna16_ais_max * 0.633014121 * 0.880142857
ais[5]. gbar_na16_stoch = gna16_ais_max * 0.8 * 0.75
ais[6]. gbar_na16_stoch = gna16_ais_max * 0.899669239 * 0.647857143
ais[7]. gbar_na16_stoch = gna16_ais_max * 0.988467875 * 0.520285714
ais[8]. gbar_na16_stoch = gna16_ais_max * 1 * 0.428571429
ais[9]. gbar_na16_stoch = gna16_ais_max * 1 * 0.342857143
// Kv delayed rectifier channels ( gkv_axon=1000 )
hill.gbar_kv = gkv_axon * 0.1
ais[0]. gbar_kv = gkv_axon * 0.2
ais[1]. gbar_kv = gkv_axon * 0.3
ais[2]. gbar_kv = gkv_axon * 0.4
ais[3]. gbar_kv = gkv_axon * 0.5
ais[4]. gbar_kv = gkv_axon * 0.6
ais[5]. gbar_kv = gkv_axon * 0.7
ais[6]. gbar_kv = gkv_axon * 0.8
ais[7]. gbar_kv = gkv_axon * 0.9
ais[8]. gbar_kv = gkv_axon * 1
ais[9]. gbar_kv = gkv_axon * 1
/* Nakeaxon */
nakeaxon {
gbar_na16_stoch = gna16_nakeaxon // 300, artificial (ought to be 1600)
gbar_na12_stoch = 0
gbar_kv = 1500
}
/* ( Myelin[0] Node[0] ) -> ... -> ( Myelin[n_myelin] Node[n_myelin] ) */
forsec "myelin" gbar_na_stoch = gna12_myelin // 20
forsec "node" gbar_na16_stoch = gna16_ais_max/2 // 1600
}