I am very new to programming, computation, and mathematics (dynamics and statistics).
I'm currently developing a detailed model of 2 (up to 5) connected neurons that need to have myelinated axons. I will stimulate an axon at a single Node of Ranvier in its center to elicit action potentials in the somas that lie bidirectionally to it. I want to see short and long-term plastic changes (use-dependent plasticity or any other measure) at the synapses and measure the changes.
I've followed the available online tutorials (http://www.kem.org/neuron/prog4.html and http://www.cs.stir.ac.uk/~bpg/Teaching/ ... prog4.html) and looked through the NEURON documentation. I've had lots of trouble getting Python to run NEURON on Windows so I've limited myself to using hoc in Notepad to focus on getting the model to work instead of technical issues.
Based on what I read I've modified the Mcintyre myelinated axon model to include a soma and dendrites, then made a template out of it and replicated it so that I have 3 cells in total. The three cells are connected to one another using NetCon by connecting precell and postsyn. The postsyn uses ExpSyn.
Currently, I have been facing issues getting to where I need to be to see the results I want:
1. I have a clamp attached to all of the Nodes of Ranvier in all of the cells. This gave me a desirable result since the somas all reached AP. I got that result because I followed the tutorials and therefore attached a clamp to each soma in the template, then simply changed it from "soma" to "node". The problem is that that's not what I need for the experiment I have in mind. I need to have a single clamp attachment at a single node on an axon in between at least two somas. So I changed it from "node" to "node[10]" but I couldn't limit the range of "i" to one of the cells - or remove the for loop and make it work for that matter - so I attached a clamp to the middle node in all 3 axons and the whole stimulation fell apart. Nothing was reaching AP anymore. (I'll attach the code so all of this will make sense).
2. I do not know how to measure plasticity in NEURON. I've looked around and read the part in chapter 10 of the NEURON book on use-dependant plasticity but don't know how to fit that into my model or even how to measure the results form it. I know that I need to change ExpSyn to AlphaSyn, otherwise I don't know where to take it from there.
3. I do not know how biologically viable such a model is. I read the Mcintyre paper and as far as I can tell it seems like there are no objections to its biological viability. Furthermore, I do not know if this model could even exhibit plastic changes by virtue of its design. I've looked at other models but this one seems the most promising (as well as the simplest while maintaining biological integrity).Is there something I'm not seeing that could mean I'm barking up the wrong tree?
Thank you.
P.S. If I'm not being detailed enough or if I'm leaving out important details please let me know and I'll quickly clarify.
Code:
Code: Select all
xopen("$(NEURONHOME)/lib/hoc/noload.hoc")
nrnmainmenu()
tstop = 12 /* Set the time run the simulation */
ncells = 2 /* The number of presynaptic cells */
/* Below we define a template for the Cell. The template allows us to
* create multiple instances of the Cell. */
begintemplate Cell
/* Make the soma, axon, dendrites, pre- and post-synaptic connections
* accessible to the rest of the program. */
public soma, axon, dend, presyn, postsyn
public node, MYSA, FLUT, STIN
create soma, axon, dend[1]
/* Create (actually declare) all of the cell's sections */
create node[1], MYSA[1], FLUT[1], STIN[1]
objectvar postsyn[1]
/* Declare the object variables for
the post-synaptic connections on
the dendrites */
objectvar presyn
/* Declare the object variable for the
pre-synaptic connection at the end of the axon */
proc init() {local i
ndend = $1 /* Define the number of dendrites */
soma_diam = 100 /* Define the diameter of the soma */
soma_len = 100 /* Define the length of the soma */
soma_nseg = 1 /* Define the # of compartments */
axon_diam = 10 /* Define the diameter of the axon */
axon_len = 5000 /* Define the length of the axon */
axon_nseg = 50 /* Define the # of compartments */
dend_diam = 25 /* Define the diameter of the dend */
dend_len = 500 /* Define the length of the dend */
dend_nseg = 5 /* Define the # of compartments */
//topological parameters//
ndend = 3
axonnodes=21
paranodes1=40
paranodes2=40
axoninter=120
axontotal=221
//morphological parameters//
fiberD=10.0
//choose from 5.7, 7.3, 8.7, 10.0, 11.5, 12.8, 14.0, 15.0, 16.0
paralength1=3
nodelength=1.0
space_p1=0.002
space_p2=0.004
space_i=0.004
//electrical parameters//
rhoa=0.7e6 //Ohm-um//
mycm=0.1 //uF/cm2/lamella membrane//
mygm=0.001 //S/cm2/lamella membrane//
if (fiberD==5.7) {g=0.605 axonD=3.4 nodeD=1.9 paraD1=1.9 paraD2=3.4 deltax=500 paralength2=35 nl=80}
if (fiberD==7.3) {g=0.630 axonD=4.6 nodeD=2.4 paraD1=2.4 paraD2=4.6 deltax=750 paralength2=38 nl=100}
if (fiberD==8.7) {g=0.661 axonD=5.8 nodeD=2.8 paraD1=2.8 paraD2=5.8 deltax=1000 paralength2=40 nl=110}
if (fiberD==10.0) {g=0.690 axonD=6.9 nodeD=3.3 paraD1=3.3 paraD2=6.9 deltax=1150 paralength2=46 nl=120}
if (fiberD==11.5) {g=0.700 axonD=8.1 nodeD=3.7 paraD1=3.7 paraD2=8.1 deltax=1250 paralength2=50 nl=130}
if (fiberD==12.8) {g=0.719 axonD=9.2 nodeD=4.2 paraD1=4.2 paraD2=9.2 deltax=1350 paralength2=54 nl=135}
if (fiberD==14.0) {g=0.739 axonD=10.4 nodeD=4.7 paraD1=4.7 paraD2=10.4 deltax=1400 paralength2=56 nl=140}
if (fiberD==15.0) {g=0.767 axonD=11.5 nodeD=5.0 paraD1=5.0 paraD2=11.5 deltax=1450 paralength2=58 nl=145}
if (fiberD==16.0) {g=0.791 axonD=12.7 nodeD=5.5 paraD1=5.5 paraD2=12.7 deltax=1500 paralength2=60 nl=150}
Rpn0=(rhoa*.01)/(PI*((((nodeD/2)+space_p1)^2)-((nodeD/2)^2)))
Rpn1=(rhoa*.01)/(PI*((((paraD1/2)+space_p1)^2)-((paraD1/2)^2)))
Rpn2=(rhoa*.01)/(PI*((((paraD2/2)+space_p2)^2)-((paraD2/2)^2)))
Rpx=(rhoa*.01)/(PI*((((axonD/2)+space_i)^2)-((axonD/2)^2)))
interlength=(deltax-nodelength-(2*paralength1)-(2*paralength2))/6
create soma, dend[ndend] /* Create all of the cell's sections */
create node[axonnodes], MYSA[paranodes1], FLUT[paranodes2], STIN[axoninter]
objectvar presyn
objectvar postsyn[ndend]
/* Declare the object variables for
the three post-synaptic connections
on the dendrites */
/* First set all of the dimensions and insert the channels into each
section. */
soma {
nseg = soma_nseg /* # of compartments */
diam = soma_diam /* Set the diameter of the soma (in um) */
L = soma_len /* Set the length of the soma (in um) */
insert hh /* Insert Hodkin-Huxley type channels
in the soma */
pt3dclear() /* Clear the 3D position of the cell */
pt3dadd($2,$3,0,soma_diam) /* Add the axon-end 3D point */
pt3dadd($2+soma_len,$3,0,soma_diam) /* Add the dendrite-end 3D
point */
}
for i=0,axonnodes-1 {
node[i]{
nseg=1
diam=nodeD
L=nodelength
Ra=rhoa/10000
cm=2
insert axnode
insert extracellular
xraxial=Rpn0
xg=1e10
xc=0
}
}
for i=0, paranodes1-1 {
MYSA[i]{
nseg=1
diam=fiberD
L=paralength1
Ra=rhoa*(1/(paraD1/fiberD)^2)/10000
cm=2*paraD1/fiberD
insert pas
g_pas=0.001*paraD1/fiberD
e_pas=-80
insert extracellular
xraxial=Rpn1
xg=mygm/(nl*2)
xc=mycm/(nl*2)
}
}
for i=0, paranodes2-1 {
FLUT[i]{
nseg=1
diam=fiberD
L=paralength2
Ra=rhoa*(1/(paraD2/fiberD)^2)/10000
cm=2*paraD2/fiberD
insert pas
g_pas=0.0001*paraD2/fiberD
e_pas=-80
insert extracellular
xraxial=Rpn2
xg=mygm/(nl*2)
xc=mycm/(nl*2)
}
}
for i=0, axoninter-1 {
STIN[i]{
nseg=1
diam=fiberD
L=interlength
Ra=rhoa*(1/(axonD/fiberD)^2)/10000
cm=2*axonD/fiberD
insert pas
g_pas=0.0001*axonD/fiberD
e_pas=-80
insert extracellular
xraxial=Rpx
xg=mygm/(nl*2)
xc=mycm/(nl*2)
}
}
for i=0, axonnodes-2 {
connect MYSA[2*i](0), node[i](1)
connect FLUT[2*i](0), MYSA[2*i](1)
connect STIN[6*i](0), FLUT[2*i](1)
connect STIN[6*i+1](0), STIN[6*i](1)
connect STIN[6*i+2](0), STIN[6*i+1](1)
connect STIN[6*i+3](0), STIN[6*i+2](1)
connect STIN[6*i+4](0), STIN[6*i+3](1)
connect STIN[6*i+5](0), STIN[6*i+4](1)
connect FLUT[2*i+1](0), STIN[6*i+5](1)
connect MYSA[2*i+1](0), FLUT[2*i+1](1)
connect node[i+1](0), MYSA[2*i+1](1)
}
for i = 0, ndend-1 dend[i] {
nseg = dend_nseg /* # of compartments */
diam = dend_diam /* Set the diameter of the dentrite
(in um) */
L = dend_len /* Set the length of the dendrite (in
um) */
insert pas /* Insert passive type channels in the
dendrite */
pt3dclear() /* Clear the 3D position of the cell */
/* Add the soma-end 3D point */
pt3dadd($2+soma_len,$3,0,diam)
/* Add the post-synaptic end 3D point */
pt3dadd($2+soma_len+dend_len*cos(0.2*PI*(1-2*i/(ndend-1))),$3+dend_len*sin(0.2*PI*(1-2*i/(ndend-1))),0,diam)
}
/* Next we construct the topology by connecting each of the sections
together. */
connect node[0](0), soma(0) /* Connect the axon to the soma */
/* Connect the dendrites to the other
end of the soma */
for i = 0, ndend-1 connect dend[i](0), soma(1)
/* Next, we add the post-synaptic connections to the dendrites. */
for i = 0, ndend-1 dend[i] {
postsyn[i] = new ExpSyn(0.8) /* Create a new synapse 80% of the
way out on each dendrite. */
postsyn[i].tau = 0.1 /* Set the tau of the synapse (in ms) */
postsyn[i].e = 15 /* Set the reversal potential of the
channel associated with the synapse
(in mV) */
}
}
endtemplate Cell
objectvar precells[ncells], cell
/* Declare the object variables for
the three cells */
cell = new Cell(3,0,0) /* Create the post-synaptic cell */
for i = 0,ncells-1 {
/* Create the pre-synaptic cell */
precells[i] = new Cell(2, 5620,(1-2*i/(ncells-1))*300)
/* Connect the pre-synaptic AP trigger
to the post-synaptic alpha synapse */
precells[i].MYSA[20] precells[i].presyn = new NetCon(&v(0), cell.postsyn[i], -20, 1, 20.8)
}
objectvar stim[ncells]
/* Declare the object variable for the
pulse stimulus */
for i = 0,ncells-1 precells[i].node {
/* this is where I changed form soma to node and node [10] */
stim[i] = new IClamp(0.5) /* Create a pulse synapse in the soma (now node)
of each pre-synaptic cell */
stim[i].dur = 0.1 /* Set the stimulus duration (in ms) */
stim[i].amp = 500 /* Set the stimulus amplitude (in nA) */
}
/* We have the stimulus onsets staggered for each pre-synptic cell */
stim[0].del = 0 /* Set the stimulus onset (in ms) */
stim[1].del = 0.5 /* Set the stimulus onset (in ms) */
stim[0].amp = 500
access cell.soma /* default section access */
xopen("prog4.ses") /* Open the session file that contains
the menus and graphs */