begintemplate MyelAxonMammal
public init, create_sections, topol, subsets, geom, biophys
public NODE, STIN
public all
// Start initializing the class
proc init() {
create_sections($o1)
subsets($o1)
topol($o1)
biophys($o1)
}
// Create sections
create NODE[1], STIN[1]
proc create_sections() {
n_rn = $o1.get("section_counter").get("node")
n_stin = $o1.get("section_counter").get("STIN")
create NODE[n_rn], STIN[n_stin]
}
// Subset, topology, geometry and biophysics
objref all
proc subsets() { local i
objref all
all = new SectionList()
n_rn = $o1.get("section_counter").get("node")
n_stin = $o1.get("section_counter").get("STIN")
n_mx = $o1.get("mx_n")
for i=0, n_mx-1 {
// Add NODE
if (i < n_rn) {NODE[i] all.append()}
// Add STIN
if (i < n_stin) {STIN[i] all.append()}
}
}
objref sctps, sec
proc topol() { local i, i_rn, i_stin
objref sec
n_rn = $o1.get("section_counter").get("node")
n_stin = $o1.get("section_counter").get("STIN")
n_mx = $o1.get("mx_n")
nsecs = $o1.get("nsecs")
sctps = $o1.get("sectypes")
i_rn = 0
i_stin = 0
for i=0, nsecs-1 {
// Connect NODE to STIN
sec = sctps.o(i)
if (strcmp(sec.sectype, "node") == 0) {
if (i_rn < n_rn-1) {
NODE[i_rn] connect STIN[i_stin](0), 1
}
// If we are in the last of these sections and it's not the very last section
if (i_rn == n_rn-1) {
if (i < nsecs-1) {
NODE[i_rn] connect STIN[i_stin](0), 1
}
}
i_rn += 1
}
// Connect STIN to NODE
sec = sctps.o(i)
if (strcmp(sec.sectype, "STIN") == 0) {
if (i_stin < n_stin-1) {
STIN[i_stin] connect NODE[i_rn](0), 1
}
// If we are in the last of these sections and it's not the very last section
if (i_stin == n_stin-1) {
if (i < nsecs-1) {
STIN[i_stin] connect NODE[i_rn](0), 1
}
}
i_stin += 1
}
}
}
objref l_rn, l_stin
proc biophys() {
n_rn = $o1.get("section_counter").get("node")
n_stin = $o1.get("section_counter").get("STIN")
n_mx = $o1.get("mx_n")
l_rn = $o1.get("lengths").get("node")
l_stin = $o1.get("lengths").get("STIN")
nodeD = $o1.get("nodeD")
axonD = $o1.get("axonD")
fiberD = $o1.get("fiberD")
space_p1 = $o1.get("space_p1")
space_i = $o1.get("space_i")
rhoa = $o1.get("rhoa")
cm_ = $o1.get("cm")
nl = $o1.get("nl")
mycm = $o1.get("mycm")
mygm = $o1.get("mygm")
e_pas_ = $o1.get("IN_e_pas")
g_pas_STIN = $o1.get("STIN_g_pas")
Rpn0=(rhoa*1.e2)/(PI*((((nodeD/2)+space_p1)^2)-((nodeD/2)^2)))
Rpx=(rhoa*1.e2)/(PI*((((axonD/2)+space_i)^2)-((axonD/2)^2)))
for i=0, n_mx-1 {
// NODE
if (i < n_rn) {
NODE[i] {
L = l_rn.x[i]
diam = nodeD
nseg = 1
Ra = rhoa
cm = cm_
insert axnode
insert extracellular
xg[0] = 1e10
xc[0] = 0
xraxial[0] = Rpn0
}
}
// STIN
if (i < n_stin) {
STIN[i] {
L = l_stin.x[i]
diam = fiberD
nseg = 7
Ra = rhoa*(1/(axonD/fiberD)^2)
cm = cm_*axonD/fiberD
insert pas
e_pas = e_pas_
g_pas = g_pas_STIN*axonD/fiberD
insert extracellular
xg[0] = mygm/(nl*2)
xc[0] = mycm/(nl*2)
xraxial[0] = Rpx
}
}
}
}
endtemplate MyelAxonMammal