forked from ModelDBRepository/183300
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PG_def.hoc
223 lines (179 loc) · 4.15 KB
/
PG_def.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
// PG cell template
// modified to add a second dendrite
begintemplate PGcell
public soma, dend, gemmshaft, gemmbody, dend1, gemmshaft1, gemmbody1
public AMPAr, spiketimes, dendspike, spikecount
create soma, dend, gemmshaft, gemmbody, dend1, gemmshaft1, gemmbody1
objref AMPAr, spiketimes, dendspike, spikecount, dendcount
proc parameter() {
AMPAtau = 5.5
Erev = 0
shell_depth = 0.2
RM = 20e3 // ohm.cm2
EL = -65
ENA = 45
EK = -80
ECA = 100
gNa_Soma = 50e-3
gNa_Dend = 20e-3
Sh_Na = 5
gKdr_Soma = 20e-3
gKdr_Dend = 5e-3
gA_Soma = 10e-3
gA_Dend = 30e-3
Sha_A = 0
Shi_A = -20
k_tauH = 2.5
sh_tauH = 0
gH_Dend = 0.2e-3
gM_Soma = 1.0e-3
gM_Dend = 0.0e-3
gKCa_Soma = 0.0e-3
gKCa_Dend = 2.0e-3
gCapn_Soma = 0.0e-3
gCapn_Dend = 1.0e-3
gCaT_Soma = 0.0e-3
gCaT_Dend = 3.0e-3
Sha_T = -15
Shi_T = 0
K_tauH = 1.0
gcan_Dend = 0.0e-3
}
proc celldef() {
topol()
subsets()
segments()
geometry()
biophysics($1)
}
proc topol() {
connect dend(0), soma(1)
connect gemmshaft(0), dend(1)
connect gemmbody(0), gemmshaft(1)
connect dend1(0), soma(1)
connect gemmshaft1(0), dend1(1)
connect gemmbody1(0), gemmshaft1(1)
}
// create subsets
objref pg_all, pgdendgemm, spine
proc subsets() {
// gemmules (body & shaft)
spine = new SectionList()
forsec "gemm" spine.append()
// dendrites & gemmules (body & shaft)
pgdendgemm = new SectionList()
forsec "dend" pgdendgemm.append()
forsec "gemm" pgdendgemm.append()
// all pg sections
pg_all = new SectionList()
forsec pgdendgemm pg_all.append()
soma pg_all.append()
}
proc segments() {
forall {nseg=1}
// dend1.nseg = 1 // use to study effect of nseg later if desired
}
proc geometry() {
soma { L=8 diam=8 }
forsec "dend" { L=100 diam=1 }
forsec spine { L=1 diam=1 }
define_shape()
}
proc biophysics() {
parameter()
spiketimes = new Vector()
dendspike = new Vector()
spike_threshold = -10
forsec pg_all { // insert passive current everywhere
Ra = 80
cm = 1.2
insert pas
g_pas = 1/RM
e_pas = EL
}
soma {
insert nax
gbar_nax = gNa_Soma
sh_nax = Sh_Na
insert kdrmt
gbar_kdrmt = gKdr_Soma
q10_kdrmt = 3
insert kamt
gbar_kamt = gA_Soma
sha_kamt = Sha_A
shi_kamt = Shi_A
k_tauH_kamt = k_tauH
sh_tauH_kamt = sh_tauH
insert kM
gkbar_kM = gM_Soma
insert Icapn
gbar_Icapn = gCapn_Soma
insert Ikca
gkbar_Ikca = gKCa_Soma
insert Icat
gbar_Icat = gCaT_Soma
sha_Icat = Sha_T
shi_Icat = Shi_T
insert cad2
depth_cad2 = shell_depth
ena = ENA
ek = EK
eca = ECA
spikecount = new APCount(0.5)
spikecount.thresh = spike_threshold
spikecount.record(spiketimes)
}
forsec pgdendgemm {
insert nax
gbar_nax = gNa_Dend
sh_nax = Sh_Na
insert kdrmt
gbar_kdrmt = gKdr_Dend
q10_kdrmt = 3
insert kamt
gbar_kamt = gA_Dend
sha_kamt = Sha_A
shi_kamt = Shi_A
k_tauH_kamt = k_tauH
sh_tauH_kamt = sh_tauH
insert kM
gkbar_kM = gM_Dend
insert hpg
eh_hpg = 0
ghbar_hpg = gH_Dend
insert Ican
gbar_Ican = gcan_Dend
insert Ikca
gkbar_Ikca = gKCa_Dend
insert Icapn
gbar_Icapn = gCapn_Dend
insert Icat
gbar_Icat = gCaT_Dend
sha_Icat = Sha_T
shi_Icat = Shi_T
k_tauH_Icat = K_tauH
insert cad2
depth_cad2 = shell_depth
ena = ENA
ek = EK
eca = ECA
}
forsec spine {
insert Inic
enic_Inic = 3.2
gbar_Inic = $1
}
// this synapse ignored by Shaina and Tom's use of the model
gemmbody{
AMPAr = new ExpSyn(0.5)
AMPAr.tau = AMPAtau
AMPAr.e = Erev
dendcount = new APCount(0.5)
dendcount.thresh = spike_threshold
dendcount.record(dendspike)
}
}
proc init() {
celldef($1)
}
endtemplate PGcell