after importing morphological data
-
reza_rzm
after importing morphological data
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,
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:
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.
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
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)?
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:
This question raises several important issues, and a complete answer contains several parts.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 ?
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
http://www.neuron.yale.edu/neuron/faq/general-questions
and read the answers to these questions:
There are some situations in which it makes sense to break a section into two orWhy should I use an odd value for nseg?
What's a good strategy for specifying nseg?
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.
I'm not entirely sure what you are asking about.2- And, connect a axon, e.g with 10 section, to soma, for obtaining more accurate result, of firing spike?
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.
The best way is to find a paper by an experimentalist that tells you the values for yourWhat algorithm we should follow to obtain passive parameters of cell (I have read the optimize method in NEURON)?
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
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
after geom_nseg(), i have
but i expect to have: nseg1*area(0.5) =nseg2*area(0.5)
that is not true for this case.
await for your comment!
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 Code: Select all
soma print {"nseg2=", nseg, area(0.5)}----> nseg2=3 1142.7475that 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:
First, an administrative item, then the answer to your question.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"
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.
So far, so good.in a file called fixnseg.hoc.After specifying the topolgy, geometry, and biophysics of model, i write the execute the statementsin my main code.Code: Select all
xopen("fixnseg.hoc") geom_nseg()
Good question. Which is incorrect--the result, or your expectation? If you have TheBefor using geom_nseg() , i haveafter geom_nseg(), i haveCode: Select all
soma print {"nseg1=", nseg, area(0.5)}---->nseg1= 1 3171.43but i expect to have: nseg1*area(0.5) =nseg2*area(0.5)Code: Select all
soma print {"nseg2=", nseg, area(0.5)}----> nseg2=3 1142.7475
that is not true for this case.
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
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)?
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:
True, but that's not the main reason why nseg affects the area of a segment. nseg affectsreza_rzm wrote:Ok.different method to calculate area when we are using stylized or 3-d specification.
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
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.
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:
For a cylindrical section,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.
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).
No. Use for (x) to iterate over the section and add up the areas of its segments. Like this:so, please tell me, which number should i take as a section area?
should we change nseg until we reach to a convergence value?
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()