after importing morphological data

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

after importing morphological data

Post by reza_rzm »

Hi,

I have imported my data from Neurolucida. I followed the instruction, and successfuly , i see my cell in NEURON

I'm wondering about next step! I have read sevaral posts near to this topics.But i am not sure that i undrestand them well. so let me ask again:

if we had a complex topology shap of cell, with zigzag behavior for some dendritic section, is it enough to use d_lambda method to have good precesion result for temporat part of calculation and CVODE for temporal part?

or we should take care about other things?

For my problem i like to have some non uniform parameters through the cell.


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

Post by ted »

Zigzag shape doesn't affect spatial accuracy. Diameter, length, Ra, and cm are the
things that affect spatial accuracy.

The d_lambda method will do a good job for the spatial grid. The easiest way to apply it
is with models that are managed by the CellBuilder. The d_lambda rule only needs to know
topology, geometry, cm, and Ra, in order to compute nseg for each section. If you change
the size of any section, or the values of cm or Ra, the CellBuilder will automatically
recompute nseg (as long as Continuous Create is on); if your model cell is specified by
hoc code that was written by the CellBuilder, it would be necessary to call geom_nseg()
after making such a change.

You can test spatial accuracy by running a control simulation and noting the results.
Then in NEURON's xterm, execute
forall nseg*=3
and then run a repeat simulation. If you see a significant change in simulation results, then
you need to go back to the Geometry page of the CellBuilder and reduce the value of
d_lambda. The default is 0.1, i.e. 1/10 of a space constant at 100 Hz. Try cutting it to 0.03 .
Then run a control simulation, execute forall nseg*=3, and run another test simulation.
If you still see a significant change of simulation results, cut d_lambda to 0.01 and try
again. I have never seen a cell that needed d_lambda to be smaller than 0.03.
reza_rzm

Post by reza_rzm »

Thanks Ted,

1-Could you tell me is it a good idea, to divide a section with length,e.g, more than 100 um to 2 or 3, to have section with length <= 100 um ?

2- And, connect a axon, e.g with 10 section, to soma, for obtaining more accurate result, of firing spike?


And a different question,

would you please tell me What algorithm we should follow to obtain passive parameters of cell (I have read the optimize method in NEURON)?
ted
Site Admin
Posts: 6395
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

reza_rzm wrote:1-Could you tell me is it a good idea, to divide a section with length,e.g, more than 100 um to 2 or 3, to have section with length <= 100 um ?
This question raises several important issues, and a complete answer contains several parts.

In NEURON, it is generally better to control spatial accuracy by adjusting the value of
nseg, rather than breaking a section into two or more sections. The value of nseg that
should be used is an empirical question (you need to run tests to find out the appropriate
value). Many different rules of thumb have been proposed, but the d_lambda rule is the
only one that I have ever seen that really works most of the time, balancing accuracy
against computational burden. The value of nseg needed for a given accuracy depends
on these factors:
  • --section geometry (length, and the detailed variation of diameter along the length of the
    section)
    --Ra
    --cm
    --the spatial accuracy that is needed for your particular model
Please go to NEURON's FAQ page
http://www.neuron.yale.edu/neuron/faq/general-questions
and read the answers to these questions:
Why should I use an odd value for nseg?
What's a good strategy for specifying nseg?
There are some situations in which it makes sense to break a section into two or
more sections.

1. if Ra is not uniform. This may change in the future, if Ra becomes a range variable. At
present, Ra is a "section variable" (has same value along entire length of a section).

2. if a point process (synapse, IClamp, SEClamp etc.) must be placed at a location other
than 0, 0.5, or 1 along the length of a section (i.e. someplace other than either end or--
assuming that nseg is odd--the middle of the section). In such a case, break the section
into two pieces at that point, so that the point process will be located exactly at the 0 or
1 end of a section. By doing this, you can change nseg for either section without affecting
the location of the point process. See
http://www.neuron.yale.edu/neuron/stati ... .html#nseg
for more information about nseg.

3. If any range variable must change abruptly along the length of a section, and you want
the model to preserve the location of that abrupt change and not have to worry about
what happens if nseg changes, it is best to split the section into two sections at the point
where the change is supposed to happen. For example, a myelinated axon should be
broken into a series of alternating (unmyelinated) nodes of Ranvier and (myelinated)
internodes.
2- And, connect a axon, e.g with 10 section, to soma, for obtaining more accurate result, of firing spike?
I'm not entirely sure what you are asking about.
But I can tell you that
1. if the axon is unmyelinated, has no daughter branches, and has uniform or smoothly
varying anatomical and biophysical properties, there is no need to use more than one
section.
2. it is best for nseg to be an odd number--for an explanation see the information on the
FAQ page, mentioned above.
What algorithm we should follow to obtain passive parameters of cell (I have read the optimize method in NEURON)?
The best way is to find a paper by an experimentalist that tells you the values for your
particular cell of interest.

If you are starting from your own experimental data, you will need to choose one of the
methods described in the scientific literature. Many auithors come to mind, including
W. Rall, S. Redman, W. Holmes, N. Spruston and D. Johnston--the list goes on and on,
but this should get you started. You'll find the citation of Spruston & Johnston on
NEURON's Bibliography page http://www.neuron.yale.edu/neuron/bib/usednrn.html .
reza_rzm

Post by reza_rzm »

Thanks for all your points.

Let me ask other question.

1- I have imported my morphological data to Neuron.
2- I have inserted passive and active property in the cell
3- then,for d_lambda rule, i use the following code

"http://hines.med.yale.edu/neuron/static ... ambda.html"

in a file called fixnseg.hoc.After specifying the topolgy, geometry, and biophysics of model, i write the execute the statements
Code:
xopen("fixnseg.hoc")
geom_nseg()


in my main code. I'm not sure that's the way to use d_lmabda rule or not?Befor using geom_nseg() , i have

Code: Select all

 
soma print {"nseg1=", nseg, area(0.5)}---->nseg1= 1   3171.43 
after geom_nseg(), i have

Code: Select all

 
soma print {"nseg2=", nseg, area(0.5)}----> nseg2=3  1142.7475
but i expect to have: nseg1*area(0.5) =nseg2*area(0.5)
that is not true for this case.


await for your comment!
ted
Site Admin
Posts: 6395
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

reza_rzm wrote:1- I have imported my morphological data to Neuron.
2- I have inserted passive and active property in the cell
3- then,for d_lambda rule, i use the following code

"http://hines.med.yale.edu/neuron/static ... ambda.html"
First, an administrative item, then the answer to your question.

The authoritative URL of the document you cite is
http://www.neuron.yale.edu/neuron/stati ... ambda.html
It is part of the FAQ list
http://www.neuron.yale.edu/neuron/faq/general-questions
There is no guarantee that URLs based on hines.med.yale.edu will be publically
accessible, or that files with URLs based on hines.med.yale.edu will be identical to
the current, authoritative documentation of NEURON.
in a file called fixnseg.hoc.After specifying the topolgy, geometry, and biophysics of model, i write the execute the statements

Code: Select all

xopen("fixnseg.hoc") 
geom_nseg()
in my main code.
So far, so good.
Befor using geom_nseg() , i have

Code: Select all

soma print {"nseg1=", nseg, area(0.5)}---->nseg1= 1   3171.43 
after geom_nseg(), i have

Code: Select all

 soma print {"nseg2=", nseg, area(0.5)}----> nseg2=3  1142.7475
but i expect to have: nseg1*area(0.5) =nseg2*area(0.5)
that is not true for this case.
Good question. Which is incorrect--the result, or your expectation? If you have The
NEURON Book, please read 5.5.2 3-D specification (pages 105-107). If you don't
have the book, see The NEURON Simulation Environment
(http://www.neuron.yale.edu/neuron/papers/nc97/nctoc.htm), in particular 3.2 Spatial
discretization in a biological context: sections and segments
. These readings explain
how NEURON calculates area and axial resistance when geometry is specified by the
3D method (hint: surface area of any segment is computed by integrating over the
length of that segment).
reza_rzm

Post by reza_rzm »

Thanks ted,

Ok.different method to calculate area when we are using stylized or 3-d specification.

I use morphological data, so i use 3-d specification method for my cell

after importing data,

oc> soma print nseg, soma(0.5)*nseg result is oc> 1 3171.43

if i change nseg for soma, i obtain

oc> soma print nseg, soma(0.5)*nseg result is oc> 3 3428.2424
oc> soma print nseg, soma(0.5)*nseg result is oc> 9 3449.8012
and ....

So, which number should i take for soma area(0.5)?
ted
Site Admin
Posts: 6395
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

reza_rzm wrote:Ok.different method to calculate area when we are using stylized or 3-d specification.
True, but that's not the main reason why nseg affects the area of a segment. nseg affects
the area of a segment primarily because nseg affects segment length. If nseg is small,
segments are long. Long segments have larger area than short segments.
Last edited by ted on Sun Nov 12, 2006 12:40 pm, edited 1 time in total.
reza_rzm

Post by reza_rzm »

Dear Ted,

Thanks again. Unfortunately, i don't get the point.

for nseg=1,3,9,15,19, and i obtain different area for soma,

but after nseg=19 - nseg=23,33,... - area for soma are equal.

so, please tell me, which number should i take as a section area?
should we change nseg until we reach to a convergence value?


sorry, if this question is boring for you! I really confuse.
ted
Site Admin
Posts: 6395
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

for nseg=1,3,9,15,19, and i obtain different area for soma,
but after nseg=19 - nseg=23,33,... - area for soma are equal.
For a cylindrical section,
soma print nseg*area(0.5)
will print the same result regardless of the value of nseg.
For a section with diameter that varies along its length, the result will depend on nseg.
If diameter is constant over some distance that spans the middle of the section, there will
be some value N such that, for all nseg >= N,
soma print nseg*area(0.5)
will print the same result (because the segment centered on 0.5 has constant diameter).
so, please tell me, which number should i take as a section area?
should we change nseg until we reach to a convergence value?
No. Use for (x) to iterate over the section and add up the areas of its segments. Like this:

Code: Select all

// returns area of currently accessed section
proc totalarea() { local temp
  temp = 0
  for (x) temp += area(x)
  return temp
}

secname print totalarea()
where secname is the name of the section that you area interested in.
Post Reply