-
Notifications
You must be signed in to change notification settings - Fork 2
/
OLM.hoc
155 lines (131 loc) · 3.02 KB
/
OLM.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
// Data from Saraga et al. (2003) paper
// OLM_Cell
begintemplate OLMCell
public is_art
public init, topol, basic_shape, subsets, geom, biophys, geom_nseg
public pre_list, connect2target
public soma, dend1, dend2, axon
public all
objref pre_list
proc init() {
topol()
subsets()
geom()
biophys()
geom_nseg()
pre_list = new List()
synapses()
}
create soma, dend1, dend2, axon
proc topol() { local i
connect dend1(0), soma(1)
connect dend2(0), soma(0)
connect axon(0), soma(1)
basic_shape()
}
proc basic_shape() {
soma {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(15, 0, 0, 1)}
dend1 {pt3dclear() pt3dadd(15, 0, 0, 1) pt3dadd(90, 0, 0, 1)}
dend2 {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(-74, 0, 0, 1)}
axon {pt3dclear() pt3dadd(15, 0, 0, 1) pt3dadd(15, 120, 0, 1)}
}
objref all
proc subsets() { local i
objref all
all = new SectionList()
soma all.append()
dend1 all.append()
dend2 all.append()
axon all.append()
}
proc geom() {
forsec all { }
soma { L = 20 diam = 10 }
dend1 { L = 250 diam = 3 }
dend2 { L = 250 diam = 3 }
axon { L = 150 diam = 1.5 }
}
external lambda_f
proc geom_nseg() {
forsec all { nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1 }
}
proc biophys() {
Rm = 20000
//Rm = 1/5e-05 // original
forsec all {
Ra = 150
cm = 1.3
}
soma {
insert IA
gkAbar_IA = 0.0165
insert Ih
gkhbar_Ih = 0.0005
// gkhbar_Ih = 0.001385
insert Ksoma
gksoma_Ksoma = 0.0319
insert Nasoma
gnasoma_Nasoma = 0.0107
gl_Nasoma = 1/Rm
el_Nasoma = -70
}
dend1 {
insert IA
gkAbar_IA = 0.004
//gkAbar_IA = 0.013
//insert Ih
//gkhbar_Ih = 0.001385
insert Kdend
gkdend_Kdend = 0.033//2*0.023
insert Nadend
gnadend_Nadend = 0.0127//2*0.0117
gl_Nadend = 1/Rm
el_Nadend = -70
}
dend2 {
insert IA
gkAbar_IA = 0.004
//gkAbar_IA = 0.013
//insert Ih
//gkhbar_Ih = 0.001385
insert Kdend
gkdend_Kdend = 0.033//2*0.023
insert Nadend
gnadend_Nadend = 0.0127//2*0.0117
gl_Nadend = 1/Rm
el_Nadend = -70
}
axon {
insert Kaxon
gkaxon_Kaxon = 0.05104
insert Naaxon
gnaaxon_Naaxon = 0.01712
gl_Naaxon = 1/Rm
el_Naaxon = -70
}
}
obfunc connect2target() { localobj nc //$o1 target point process, optional $o2 returned NetCon
soma nc = new NetCon(&v(1), $o1)
nc.threshold = -10
if (numarg() == 2) { $o2 = nc } // for backward compatibility
return nc
}
objref syn_
proc synapses() {
/* E0 */ dend2 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA PC
syn_.tau1 = 0.5
syn_.tau2 = 3
/* E1 */ dend1 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA PC
syn_.tau1 = 0.5
syn_.tau2 = 3
/* I2 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A Septum
syn_.tau1 = 1
syn_.tau2 = 8
syn_.e = -75
/* I3 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-B Septum
syn_.tau1 = 35
syn_.tau2 = 100
syn_.e = -75
}
func is_art() { return 0 }
endtemplate OLMCell