-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmitral.hoc
137 lines (110 loc) · 2.84 KB
/
mitral.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
begintemplate Mitral
// ls - long secondary dendrites
public soma, priden, secden, tuftden, hillock, initialseg
public dendritic, somatic, second, somden, synodor, external_syn
public dampa
public position, x, y, z
create soma, priden, secden[2], tuftden, hillock, initialseg
forall {Ra = 150}
objref dendritic, somatic, somden, synodor, external_syn
objref dampa
proc init() {
dendritic = new SectionList()
forsec "priden" dendritic.append()
forsec "secden" dendritic.append()
forsec "tuftden" dendritic.append()
somatic = new SectionList()
soma somatic.append
hillock somatic.append
somden = new SectionList()
forsec somatic somden.append()
forsec dendritic somden.append()
topol()
segments()
geometry()
memb()
x = y = z = 0 // only change via position
}
proc topol() {local i
connect secden[0](0), soma(.5)
connect secden[1](0), soma(.5)
connect priden(0), soma(1)
connect tuftden(0), priden(1)
connect hillock(0), soma(0)
connect initialseg(0), hillock(1)
}
proc segments() {local i
soma.nseg= 1
priden.nseg = 5
forsec "tuftden" nseg = 10
forsec "secden" nseg = 50
initialseg.nseg = 3
hillock.nseg = 3
}
proc geometry() {local i
basic_shape()
soma { L = 25 diam = 20 }
priden { L = 300 diam = 3 }
forsec "tuftden" {rallbranch=20 L=300 diam(0:1)=.4:.4 }
forsec "secden" { L=1000 diam=2 }
initialseg{ L=30 diam=1.5}
hillock { L=5 diam(0:1) = soma.diam(0) : initialseg.diam(0) }
//define_shape()
}
proc basic_shape() {
soma {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(0, 1, 0, 1)}
priden {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(0, 1, 0, 1)}
tuftden {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(0, 1, 0, 1)}
secden[0] {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(1, 0, 0, 1)}
secden[1] {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(-1, 0, 0, 1)}
hillock {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(0, -1, 0, 1)}
initialseg {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(0, -1, 0, 1)}
}
proc memb() {
forall {insert pas }
forsec somden {
insert nax insert kamt insert kdrmt
ek = -90
ena = 50
gbar_nax = 0.04 sh_nax=10
gbar_kdrmt = 0.0001
gbar_kamt = 0.004
}
forall {Ra = 150}
totarea=0
forall {
for (x) {totarea=totarea+area(x)}
cm = 1.8
g_pas = 1/12000
e_pas = -65
}
initialseg {
insert nax insert kamt insert kdrmt
ek = -90
ena = 50
g_pas = 1/1000
gbar_nax = 0.8
sh_nax = 0
gbar_kamt = 0.08
gbar_kdrmt = 0.0001
}
tuftden {
synodor = new Exp2Syn(.2)
synodor.e=0
synodor.tau1 = 20
synodor.tau2 = 200
}
soma {
external_syn = new Exp2Syn(.5)
external_syn.e=0
external_syn.tau1 = 5
external_syn.tau2 = 50
}
}
proc position() { local i
soma for i = 0, n3d()-1 {
pt3dchange(i, $1-x+x3d(i), $2-y+y3d(i), $3-z+z3d(i), diam3d(i))
}
x = $1 y = $2 z = $3
}
endtemplate Mitral