begintemplate MyelAxon
public init, create_sections, topol, subsets, geom, biophys
public ranvrnodes, internodes
public all
// Start initializing the class
proc init() {
create_sections($o1)
subsets($o1)
// nseg, defined in geom, depends on Ra and cm, defined in biophys
// Nevermind
geom($o1)
topol($o1)
biophys($o1)
}
// Create sections
create ranvrnodes[1], internodes[1]
proc create_sections() {
n_rn = $o1.get("RN_n")
n_in = $o1.get("IN_n")
create ranvrnodes[n_rn], internodes[n_in]
}
// Subset, topology, geometry and biophysics
objref all
proc subsets() { local i
objref all
all = new SectionList()
n_rn = $o1.get("RN_n")
n_in = $o1.get("IN_n")
n_mx = $o1.get("mx_n")
for i=0, n_mx-1 {
if (i < n_rn) {ranvrnodes[i] all.append()}
if (i < n_in) {internodes[i] all.append()}
}
}
objref l_rn, l_in
proc geom() {
n_rn = $o1.get("RN_n")
n_in = $o1.get("IN_n")
n_mx = $o1.get("mx_n")
l_rn = $o1.get("RN_L")
l_in = $o1.get("IN_L")
for i=0, n_mx-1 {
if (i < n_rn) {
ranvrnodes[i].L = l_rn.x[i]
ranvrnodes[i].diam = $o1.get("RN_diam")
ranvrnodes[i].nseg = 1
}
if (i < n_in) {
internodes[i].L = l_in.x[i]
// IMPORTANT: This has to be RN_diam, which is the internal diameter of the internode as well
internodes[i].diam = $o1.get("RN_diam")
internodes[i].nseg = 11
}
}
}
// objref nseg_rn, nseg_in, sctps
objref sctps
proc topol() { local i
n_rn = $o1.get("RN_n")
n_in = $o1.get("IN_n")
n_mx = $o1.get("mx_n")
nsecs = $o1.get("nsecs")
sctps = $o1.get("sectypes")
i_rn = 0
i_in = 0
for i=0, nsecs-1 {
if (sctps.x(i) == 0) {
if (i_rn < n_rn-1) {
ranvrnodes[i_rn] connect internodes[i_in](0), 1
}
if (i_rn == n_rn-1) {
if (i < nsecs-1) {
ranvrnodes[i_rn] connect internodes[i_in](0), 1
}
}
i_rn += 1
}
if (sctps.x(i) == 1) {
if (i_in < n_in-1) {
internodes[i_in] connect ranvrnodes[i_rn](0), 1
}
if (i_in == n_in-1) {
if (i < nsecs-1) {
internodes[i_in] connect ranvrnodes[i_rn](0), 1
}
}
i_in += 1
}
}
}
proc biophys() {
n_rn = $o1.get("RN_n")
n_in = $o1.get("IN_n")
n_mx = $o1.get("mx_n")
for i=0, n_mx-1 {
if (i < n_rn) {
ranvrnodes[i] {
Ra = $o1.get("Ra")
cm = $o1.get("RN_cm")
insert extracellular
xg = 0.
xraxial = 1e9
insert hh
}
}
if (i < n_in) {
internodes[i] {
Ra = $o1.get("Ra")
cm = $o1.get("IN_cm")
insert extracellular
xg = 0.
xraxial = 1e9
insert pas
e_pas = $o1.get("IN_e_pas")
g_pas = $o1.get("IN_g_pas")
}
}
}
}
endtemplate MyelAxon