Hi,
I am trying to rebuild an existing model in Neuron that has been written in matlab before.
The problem is that it has been defined with absolute values (not length, diameter dependent values) for axial resistance Ri , membrane conductances Gl (leaky channel), Gna (sodium channel, no inactivation) and membrane capacity Cm.
For Gl, Gna and Cm I did the following:
cm = 1 // uF/cm^2 relative membrane resistance:
diam = 100 // (um)
L = ((Cm) / (cm*1e-5)) / (diam*PI) // Cm in nF
gl = (Gl*1e-9) / (L*diam*PI*1e-8) // (S/cm2), Gl in nS
gna = (Gna*1e-9) / (L*diam*PI*1e-8) // (S/cm2), Gl in nS
with gl, gna being the relative conductance used in the model.
With this I am able to reproduce the results of a single compartment model, however I get different results compared to the matlab model (which I think is correct) if I create a 4 compartment model.
For this I have to connect 4 compartments (1 soma, 3 dendrites) with an absolute axial resistance of Ri to each other. I tried to do this in Neuron by creating 4 different sections each with nseg=1 and appropriate values for diam, L and gl, gna and tried to adjust the effective Ri by defining:
Ra = (Ri/L)*PI*(diam/2)*(diam/2)*1e-4 // (Ohm cm), Ri in Ohm
This should give me an effective resistance of Ri between the sections, shouldn't it?
However I am getting a difference if i compare the overall resistance, (delta_V/I_injected), measured at the soma, at depolarized potentials.
So at the resting state the effective membrane resistances in the two models (matlab, neuron) are the same, but If I depolarize and thereby activate the Gna channel the overall membrane resistance in my matlab model is higher than in the neuron model.
This difference vanishes if I decrease Ri or Ra.
I am wondering if my calculation of Ra is correct? Is there a possibility to read out the actual values Neuron uses as resistance between the sections?
Thanks!
Chris
Model with absolute conductances and capacity
-
- Site Admin
- Posts: 6305
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: Model with absolute conductances and capacity
The original paper was obviously not written by an engineer--who uses nanosiemens and
nanofarads? Well, maybe an MIT engineer.
cm = 1 // uF/cm^2 relative membrane resistance
although this is more readable:
and is also correct regardless of the value assigned to cm (as long as cm > 0).
This lumps membrane proerties into the middle of each segment, with half of the axial
resistance on each side. One sees many ad hoc approaches to spatial discretization;
I hope the original model description, from which you are working, was sufficiently
explicit about what was done.
CORRECTION ADDED 3/18/2008 by ted
It is not the total resistance from the 0 to the 1 end. I should read these things with my
eyeglasses on. It is the cytoplasmic resistivity, calculated from the path length, diameter,
and axial resistance between two points along a cylinder. If two sections with identical
geometry and biophysical properties are connected end to end, and both have nseg = 1,
it is the cytoplasmic resistivity that is necessary to produce an axial resistance Ri beween
their internal nodes.
http://www.neuron.yale.edu/neuron/stati ... ry.html#ri
Then execute
nanofarads? Well, maybe an MIT engineer.
OK except for a slip of the lipChrisR wrote:cm = 1 // uF/cm^2 relative membrane resistance:
diam = 100 // (um)
L = ((Cm) / (cm*1e-5)) / (diam*PI) // Cm in nF
gl = (Gl*1e-9) / (L*diam*PI*1e-8) // (S/cm2), Gl in nS
gna = (Gna*1e-9) / (L*diam*PI*1e-8) // (S/cm2), Gl in nS
cm = 1 // uF/cm^2 relative membrane resistance
although this is more readable:
Code: Select all
Area = 1e5 * Cm / cm // um2
L = Area / diam / PI
gl = 0.1 * Gl / Area // S/cm2
gna = 0.1 * Gna / Area // S/cm2
Remember that NEURON uses the central difference method for spatial discretization.I get different results compared to the matlab model (which I think is correct) if I create a 4 compartment model.
This lumps membrane proerties into the middle of each segment, with half of the axial
resistance on each side. One sees many ad hoc approaches to spatial discretization;
I hope the original model description, from which you are working, was sufficiently
explicit about what was done.
That is the total resistance from the 0 to the 1 end.Ra = (Ri/L)*PI*(diam/2)*(diam/2)*1e-4
CORRECTION ADDED 3/18/2008 by ted
It is not the total resistance from the 0 to the 1 end. I should read these things with my
eyeglasses on. It is the cytoplasmic resistivity, calculated from the path length, diameter,
and axial resistance between two points along a cylinder. If two sections with identical
geometry and biophysical properties are connected end to end, and both have nseg = 1,
it is the cytoplasmic resistivity that is necessary to produce an axial resistance Ri beween
their internal nodes.
Only if the two sections have identical geometry and cytoplasmic resistivity, and nseg=1.This should give me an effective resistance of Ri between the sections, shouldn't it?
Read about ri()Is there a possibility to read out the actual values Neuron uses as resistance between the sections?
http://www.neuron.yale.edu/neuron/stati ... ry.html#ri
Then execute
Code: Select all
forall for (x) print secname(), " ", x, ri(x)
Last edited by ted on Tue Mar 18, 2008 9:23 am, edited 1 time in total.
Thanks!
I am a little bit closer, though I am wondering If I got the sectioning right.
So what I want to replicate is a model consisting out of four uniform compartments connected via a resistance of Ri, like this:
CompSoma -Ri- CompDend -Ri- CompDend -Ri- CompDend
Right now I am holding L and diam constant in each compartment, changing the effective Cm via adjusting cm:
and as before:
And the four sections are connected like this:
But I still get different responses.
Does my NEURON model actuall replicate the described four compartmental type matlab model?
Thanks,
Chris
I am a little bit closer, though I am wondering If I got the sectioning right.
So what I want to replicate is a model consisting out of four uniform compartments connected via a resistance of Ri, like this:
CompSoma -Ri- CompDend -Ri- CompDend -Ri- CompDend
Right now I am holding L and diam constant in each compartment, changing the effective Cm via adjusting cm:
Code: Select all
diam = 100 // um
L = 100 // um
Area = L*diam*PI
cm = 1e5 * Cm / Area // uF/cm2
Code: Select all
gl = 0.1 * Gl / Area // S/cm2
gna = 0.1 * Gna / Area // S/cm2
Ra = (Ri/L)*PI*(diam/2)*(diam/2)*1e-4
Code: Select all
connect dend[0](0), soma(1)
connect dend[1](0), dend[0](1)
connect dend[2](0), dend[1](1)
Does my NEURON model actuall replicate the described four compartmental type matlab model?
Thanks,
Chris
Ok,
gives:
so each segment is connected with 2.8962002 MOhm in each direction, wich gives me my desired 8.38 MOhm in total.
But why is there an infinite resistance at the soma, but not at the last dendrite?
And why does it give me different values for Ri in soma if:
From Ri description:
"Return the resistance (in megohms) between the center of the segment containing x and its parent segment."
0, 0.5, and 1 do fall into same segment each time,..
Code: Select all
forall for (x) print secname(), " ", x, ri(x)
Code: Select all
soma 0 1e+30
soma 0.5 2.8962002
soma 1 2.8962002
dend[0] 0 2.8962002
dend[0] 0.5 2.8962002
dend[0] 1 2.8962002
dend[1] 0 2.8962002
dend[1] 0.5 2.8962002
dend[1] 1 2.8962002
dend[2] 0 2.8962002
dend[2] 0.5 2.8962002
dend[2] 1 2.8962002
But why is there an infinite resistance at the soma, but not at the last dendrite?
And why does it give me different values for Ri in soma if:
From Ri description:
"Return the resistance (in megohms) between the center of the segment containing x and its parent segment."
0, 0.5, and 1 do fall into same segment each time,..
-
- Site Admin
- Posts: 6305
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
ri() is not Ri. You are defining Ri as the resistance between two compartments.
ri(x) is "the resistance (in megohms) between the center of the segment containing x
and its parent segment".
soma is the root section, therefore soma(0) has not parent.
"If there is no parent the "infinite" resistance returned is 1e30."
All other nodes have a parent node, and their ri(x) is the resistance between
two adjacent nodes--the node at currentsection(x), and the parent of that node.
soma print ri(0.5)
prints the resistance between soma(0.5) and soma(0)
soma print ri(1)
prints the resistance between soma(1) and soma(0.5)
dend[0] print ri(0)
also prints the resistance between soma(1) and soma(0.5), because dend[0](0)
and soma(1) refer to the same node.
So 2.896... is half of the resistance, in megohms, between soma(0.5) and dend[0](0.5).
ri(x) is "the resistance (in megohms) between the center of the segment containing x
and its parent segment".
soma is the root section, therefore soma(0) has not parent.
"If there is no parent the "infinite" resistance returned is 1e30."
All other nodes have a parent node, and their ri(x) is the resistance between
two adjacent nodes--the node at currentsection(x), and the parent of that node.
soma print ri(0.5)
prints the resistance between soma(0.5) and soma(0)
soma print ri(1)
prints the resistance between soma(1) and soma(0.5)
dend[0] print ri(0)
also prints the resistance between soma(1) and soma(0.5), because dend[0](0)
and soma(1) refer to the same node.
So 2.896... is half of the resistance, in megohms, between soma(0.5) and dend[0](0.5).