Model with absolute conductances and capacity

The basics of how to develop, test, and use models.
Post Reply
ChrisR

Model with absolute conductances and capacity

Post by ChrisR »

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
ted
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

Post by ted »

The original paper was obviously not written by an engineer--who uses nanosiemens and
nanofarads? Well, maybe an MIT engineer.
ChrisR 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
OK except for a slip of the lip
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
and is also correct regardless of the value assigned to cm (as long as cm > 0).
I get different results compared to the matlab model (which I think is correct) if I create a 4 compartment model.
Remember that NEURON uses the central difference method for spatial discretization.
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.
Ra = (Ri/L)*PI*(diam/2)*(diam/2)*1e-4
That is the total resistance from the 0 to the 1 end.

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.
This should give me an effective resistance of Ri between the sections, shouldn't it?
Only if the two sections have identical geometry and cytoplasmic resistivity, and nseg=1.
Is there a possibility to read out the actual values Neuron uses as resistance between the sections?
Read about ri()
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.
ChrisR

Post by ChrisR »

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:

Code: Select all

diam = 100 // um
L = 100 // um
Area = L*diam*PI
cm = 1e5 * Cm / Area // uF/cm2 
and as before:

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
And the four sections are connected like this:

Code: Select all

connect dend[0](0), soma(1)
connect dend[1](0), dend[0](1)
connect dend[2](0), dend[1](1)
But I still get different responses.
Does my NEURON model actuall replicate the described four compartmental type matlab model?

Thanks,
Chris
ted
Site Admin
Posts: 6305
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

Does my NEURON model actuall replicate the described four compartmental type matlab model?
From what you show, I am tempted to say yes. But why not use NEURON to find out for
yourself?

What result do you get when you execute
forall for (x) print secname(), " ", x, ri(x)
?
ChrisR

Post by ChrisR »

Ok,

Code: Select all

forall for (x) print secname(), " ", x, ri(x) 
gives:

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 
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,..
ted
Site Admin
Posts: 6305
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

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).
ChrisR

Post by ChrisR »

Dear Ted,
thanks for your help!

It's working now. It turned out that there also has been an error in the matlab code.

Chris
ted
Site Admin
Posts: 6305
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

Very good, ChrisR. Thanks for using NEURON in your research!
Post Reply