Modeling a demyelinated axon
Posted: Thu Jul 12, 2012 7:39 pm
How can I model a singel axon where half is myelinated and half in unmyelinated?
Code: Select all
for i=0, nnode-2 {
connect myelin[i](0), node[i](1)
connect node[i+1](0), myelin[i](1)
}
Code: Select all
proc addnonmyel() {
connect nonmyel(0), node[$1-1](0)
nonmyel {
nseg = 10*$1 + 1 // so it has a node at 0.5
diam = 10
L = ($1-1)*$2 // make it as long as the sum of all internodes
Ra = 100
insert hh
gnabar_hh = 1.2 // use their parameters
gkbar_hh = 0.36
gl_hh = 0.003
}
}
make(20, 2000) // appropriate down to 25um internode length
addnonmyel(20, 2000) // tack nonmyelinated axon onto it
Code: Select all
load_file("nrngui.hoc")
create node[1], myelin[1], nonmyel
objref nodes, myelins
// topol(nnode) connects an alternating sequence of node/myelin pairs.
proc topol() {local i
nnode = $1
create node[nnode], myelin[nnode-1]
nodes = new SectionList()
myelins = new SectionList()
forsec "node" nodes.append
forsec "myelin" myelins.append
access node[0]
for i=0, nnode-2 {
connect myelin[i](0), node[i](1)
connect node[i+1](0), myelin[i](1)
}
forsec myelins { nseg = 10 }
}
proc geom() {
forsec nodes { // area = 100 um2
L = 3.183
diam = 10
}
forsec myelins {
L = $1
diam = 10
}
}
proc biophys() {local fac
// ohm/cm must be converted to ohm-cm by multiplying by
// cross sectional area
fac = PI*diam^2/4 * 1e-8
forall {
Ra = 100
}
// paper relative to rest=0 but following values relative to -65
forsec nodes {
insert hh
gnabar_hh = 1.2
gkbar_hh = .36
gl_hh = .003
ena = 115 - 65
ek = -12 - 65
cm = 1 // uF/cm2
}
forsec myelins {
insert pas
e_pas = -65
g_pas = 1.5e-6 // S/cm2
cm = .005 // uF/cm2
}
celsius = 18.5
}
proc make() {
topol($1)
geom($2)
biophys()
}
proc addnonmyel() {
connect nonmyel(0), node[$1-1](0)
nonmyel {
nseg = 10*$1 + 1 // so it has a node at 0.5
diam = 10
L = ($1-1)*$2 // make it as long as the sum of all internodes
Ra = 100
insert hh
gnabar_hh = 1.2 // use their parameters
gkbar_hh = 0.36
gl_hh = 0.003
}
}
make(20, 2000) // appropriate down to 25um internode length
addnonmyel(20, 2000) // tack nonmyelinated axon onto it
Exactly what did you see, and why do you interpret this as the action potential "moving backwards"? Look at the action potential's waveform in space, identify its leading edge (what comes before the peak, which corresponds to the rising phase of the spike) and its trailing edge (what comes after the peak, i.e. during the falling phase of the spike), and decide whether the action potential is propagating in the "correct" direction i.e. away from the stimulating electrode (you _are_ eliciting the spike by injecting a depolarizing current at some point along the axon, right?).when I played the space plot of the model it seems like the action potential is moving backwards
Code: Select all
load_file("nrngui.hoc")
create node[1], myelin[1], nonmyel, demyel[1]
objref nodes, myelins, demyels
// topol(nnode) connects an alternating sequence of node/myelin pairs.
proc topol() {local i
nnode = $1
create node[11], myelin[10]
nodes = new SectionList()
myelins = new SectionList()
demyels = new SectionList()
forsec "nodes" nodes.append
forsec "myelin" myelins.append
forsec "demyel" demyels.append
access node[0]
for i=0, 4 {
connect myelin[i](0), node[i](1)
connect node[i+1](0), myelin[i](1)
}
for i=5, 9 {
connect demyel[i](0), node[i](1)
connect node[i+1](0), demyel[i](1)
}
forsec myelins { nseg = 5 }
forsec demyels { nseg = 5 }
}
proc geom() {
forsec nodes { // area = 100 um2
L = 3.183
diam = 10
}
forsec myelins {
L = 5
diam = 10
}
forsec demyels {
L = 5
diam = 10
}
proc biophys() {local fac
// ohm/cm must be converted to ohm-cm by multiplying by
// cross sectional area
fac = PI*diam^2/4 * 1e-8
forall {
Ra = 100
}
// paper relative to rest=0 but following values relative to -65
forsec nodes {
insert hh
gnabar_hh = 1.2
gkbar_hh = .36
gl_hh = .003
ena = 115 - 65
ek = -12 - 65
cm = 1 // uF/cm2
}
forsec myelins {
insert pas
e_pas = -65
g_pas = 1.5e-6 // S/cm2
cm = .005 // uF/cm2
}
forsec demyels {
insert pas
e_pas = -65
g_pas = 1.5e-6 // S/cm2
cm = 1 // uF/cm2
}
celsius = 18.5
}
proc make() {
topol($1)
geom($2)
biophys()
}
make(11, 1000) // appropriate down to 25um internode length
Code: Select all
make(20, 2000) // appropriate down to 25um internode length
addnonmyel(20, 2000) // tack nonmyelinated axon onto it
Code: Select all
load_file("nrngui.hoc")
create node[1], myelin[1], nonmyel, demyel[1]
objref nodes, myelins, demyels
// topol(nnode) connects an alternating sequence of node/myelin pairs.
proc topol() {local i
nnode = $1
create node[nnode], myelin[nnode-1], demyel[nnode-1]
nodes = new SectionList()
myelins = new SectionList()
demyels = new SectionList()
forsec "nodes" nodes.append
forsec "myelin" myelins.append
forsec "demyel" demyels.append
access node[0]
for i=0, nnode-7 {
connect myelin[i](0), node[i](1)
connect node[i+1](0), myelin[i](1)
}
for i=nnode-6, nnode-2 {
connect demyel[i](0), node[i](1)
connect node[i+1](0), demyel[i](1)
}
//forsec myelins { nseg = 10 }
forsec myelins { nseg = 5 }
forsec demyels { nseg = 5 }
}
proc geom() {
forsec nodes { // area = 100 um2
L = 3.183
diam = 10
}
forsec myelins {
L = $1
diam = 10
}
}
proc biophys() {local fac
// ohm/cm must be converted to ohm-cm by multiplying by
// cross sectional area
fac = PI*diam^2/4 * 1e-8
forall {
Ra = 100
}
// paper relative to rest=0 but following values relative to -65
forsec nodes {
insert hh
gnabar_hh = 1.2
gkbar_hh = .36
gl_hh = .003
ena = 115 - 65
ek = -12 - 65
cm = 1 // uF/cm2
}
forsec myelins {
insert pas
e_pas = -65
g_pas = 1.5e-6 // S/cm2
cm = .005 // uF/cm2
}
forsec demyels {
insert pas
e_pas = -65
g_pas = 1.5e-6 // S/cm2
cm = 0.005 // uF/cm2
}
celsius = 18.5
}
proc make() {
topol($1)
geom($2)
biophys()
}
make(11, 2000) // appropriate down to 25um internode length
Code: Select all
proc topol() {local i
nnode = $1
create node[nnode], myelin[nnode-1], demyel[nnode-1]
nodes = new SectionList()
myelins = new SectionList()
demyels = new SectionList()
forsec "nodes" nodes.append
forsec "myelin" myelins.append
forsec "demyel" demyels.append
access node[0]
for i=0, nnode-7 {
connect myelin[i](0), node[i](1)
connect node[i+1](0), myelin[i](1)
}
for i=nnode-6, nnode-2 {
connect demyel[i](0), node[i](1)
connect node[i+1](0), demyel[i](1)
}
//forsec myelins { nseg = 10 }
forsec myelins { nseg = 5 }
forsec demyels { nseg = 5 }
}
Code: Select all
create node[nnode], myelin[nnode-1], demyel[nnode-1]
Code: Select all
create node[2*nnode+1], myelin[nnode-1], demyel[nnode-1]
What I wrote ("if you want to have N myelinated sections and N demyelinated sections, you'll need 2*N+1 nodes") should be read as a statement of fact about your conceptual model. It can't be interpreted as an instruction to change N to 2*N+1 because the code has no variable called N or any variable that is equivalent to N. However, you might decide that the code would be improved if revised so that the first argument of proc topol() specified {the number of myelinated sections} and {the number of demyelinated sections} rather than {the total number of nodes}.when you said to change N to 2*N+1