/* ----------------------------------------------------------------
Define the Axon Geometry
Layer 5 cortical pyramidal cell has a long unmyelinated axon!
Similar to Mainen et al (Neuron, 1995)
------------------------------------------------------------------*/
n_myelin = 14 // number of myelins and nodes
create ais[2],hill,nakeaxon,myelin[2],node[2] // forward declaration
proc create_axon() {
create ais[10],hill,nakeaxon,myelin[n_myelin],node[n_myelin]
// Acquire the equivalent diameter of soma
soma { equiv_diam = sqrt(area(0.5)*nseg/(4*PI)) } // "*nseg" is needed !!
if (numarg()) equiv_diam = $1
// Set axonal diameters
diamAis=equiv_diam/10
diamNakeAxon=equiv_diam/12
diamMyelin=diamAis*1.
diamNode=diamAis*0.75 // nodes are thinner than axon
// Initial segment
hill {
L = 10
nseg = 10
diam( 0 : 0.25 ) = 6 : 3.8
diam( 0.25 : 0.5 ) = 3.8 : 2.8
diam( 0.5 : 0.75 ) = 2.8 : 1.7
diam( 0.75 : 1 ) = 1.7 : 1.3
}
for i=0,9 ais[i] {
L = 5
nseg = 10
diam = 1.22
}
ais[0] {
diam( 0 : 1 ) = 1.7 : 1.5
}
ais[1] {
diam( 0 : 1 ) = 1.5 : 1.22
}
// Unmylined axon
nakeaxon {
L = 400
nseg = 100
diam = diamNakeAxon
}
// Myelinated axon with nodes of Ranvier
for i=0,n_myelin-1 {
myelin[i] { // myelin element
nseg = 5
L = 100
diam = diamMyelin
}
node[i] { // nodes of Ranvier
nseg = 1
L = 1
diam = diamNode
}
}
// Connecting
soma connect hill(0), axonOnSoma // dend11 -> soma(0) -> soma(1) -> hill
hill connect ais[0] (0), 1 // hill -> ais[0]
for i=0,8 ais[i] { // ais[0] -> ... -> ais[9]
connect ais[i+1] (0), 1
}
ais[9] connect nakeaxon(0), 1 // ais[9] -> nakeaxon
nakeaxon connect myelin[0] (0), 1 // nakeaxon -> myelin[0]
myelin[0] connect node[0](0), 1 // myelin[0] -> node[0]
for i=1,n_myelin-1 { // (myelin[0] node[0]) -> ... -> (myelin[n_myelin] node[n_myelin])
node[i-1] connect myelin[i](0), 1
myelin[i] connect node[i](0), 1
}
}