-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathactive_declarations_example2.hoc
More file actions
137 lines (111 loc) · 2.96 KB
/
active_declarations_example2.hoc
File metadata and controls
137 lines (111 loc) · 2.96 KB
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
// Active parameters from patdemo.zip
// Similar to Mainen&Sejnowski 1996
// --------------------------------------------------------------
// Spines
// --------------------------------------------------------------
// Based on the "Folding factor" described in
// Jack et al (1989), Major et al (1994)
// note, this assumes active channels are present in spines
// at same density as dendrites
spine_dens = 1
// just using a simple spine density model due to lack of data on some
// neuron types.
spine_area = 0.83 // um^2 -- K Harris
proc add_spines() { local a
is_spiny = 1
if (strcmp($s1,"dend") == 0) {
print "adding spines"
forsec dendlist {
a = 0
for (x,0) {
a = a + area(x)
}
F = (L*spine_area*spine_dens + a)/a
L = L * F^(2/3)
for (x,0) {
diam(x) = diam(x) * F^(1/3)
}
//original algorithm;
//a = 0
//for (x) print x
//for(x) print diam(x)
//for(x) a=a+area(x)
//F = (L*spine_area*spine_dens + a)/a
//L = L * F^(2/3)
//for(x) diam(x) = diam(x) * F^(1/3)
//for(x) print diam(x)
}
}
define_shape()
}
cm_myelin = 0.04
g_pas_node = 0.02
celsius = 37
Ek = -85
Ena = 60
gna_dend = 20
gna_node = 30000
gna_soma = gna_dend
gkv_axon = 2000
gkv_soma = 200
gca = 0.0 //.3
gkm = .1
gkca = 3
gca_soma = gca
gkm_soma = gkm
gkca_soma = gkca
objref dendritic
dendritic = new SectionList()
//forsec somalist dendritic.append()
//forsec dendlist dendritic.append()
//forsec apicdendlist dendritic.append()
forall ifsec "soma" dendritic.append()
forall ifsec "dend" dendritic.append()
forall ifsec "apic" dendritic.append()
// Insert active channels
proc set_active() {
print "active ion-channels inserted."
// exceptions along the axon
forsec "myelin" cm = cm_myelin
forsec "node" g_pas = g_pas_node
// na+ channels
forall insert na
forsec dendritic gbar_na = gna_dend
forsec "myelin" gbar_na = gna_dend
hill.gbar_na = gna_node
iseg.gbar_na = gna_node
forsec "node" gbar_na = gna_node
// kv delayed rectifier channels
iseg { insert kv gbar_kv = gkv_axon }
hill { insert kv gbar_kv = gkv_axon }
soma { insert kv gbar_kv = gkv_soma }
// dendritic channels
forsec dendritic {
insert km gbar_km = gkm
insert kca gbar_kca = gkca
insert ca gbar_ca = gca
insert cad
}
// somatic channels
soma {
gbar_na = gna_soma
gbar_km = gkm_soma
gbar_kca = gkca_soma
gbar_ca = gca_soma
}
forall if(ismembrane("k_ion")) ek = Ek
forall if(ismembrane("na_ion")) {
ena = Ena
// seems to be necessary for 3d cells to shift Na kinetics -5 mV
vshift_na = -5
}
forall if(ismembrane("ca_ion")) {
eca = 140
ion_style("ca_ion",0,1,0,0,0)
vshift_ca = 0
}
}
// Insert spines
add_spines("dend")
// Insert active channels
set_active()