distance measurement

Managing anatomically complex model cells with the CellBuilder. Importing morphometric data with NEURON's Import3D tool or Robert Cannon's CVAPP. Where to find detailed morphometric data.
Post Reply
ubartsch
Posts: 34
Joined: Thu May 19, 2005 11:02 am
Location: CTCN, University of Plymouth
Contact:

distance measurement

Post by ubartsch »

Hi,
Another very basic question, but I could not find an answer in the forum or elsewhere:

I have a morphological model of a pyramidal cell and I am trying to determine voltage attenuation in the cell depending on the distance to the soma.
The cell builder (after importing the morphology / or cvapp) shows me that the "length" of the apical dendrite (measured from the soma) is <600 µm. Also, in the pt3add statements is no value bigger than 600.

If I call distance(.5) during a loop for accessing all segments of the apical dendrite the values for the distant dendrites returned are bigger than 700 µm.

Many thanks for a hint!
Ulli

The essential loop looks like this:

Code: Select all

for i=0, 0 {
	cells[i]= new pc1()
	cells[i].soma stim[i] = new IClamp(.5)
	stim[i].del=200
	stim[i].dur=500
	stim[i].amp=0.8
	access cells[i].soma[0]
	distance()
	
	for k=0, len-1{
	access cells[i].apic[k]
	dist.x[k]=distance(.5)
	print dist.x[k]
	for j=0, n-1{T[k].x[j]=j*deltat}
	cvode.record(&cells[i].apic[k].v(.5),V[k],T[k],1) 
	}
	}
Raj
Posts: 220
Joined: Thu Jun 09, 2005 1:09 pm
Location: Groningen, The Netherlands
Contact:

Distance measurement

Post by Raj »

Your measuring the distance from the center of the segment accessed to the soma's (0) end. If, for example, your soma is 400 um long, dend.nseg=odd and you connected the dendrites to the soma(1) location, the distance function should give you back 400 + 600*0.5 = 700.

So my advice would be to check the connectivity and the length of the soma.
ubartsch
Posts: 34
Joined: Thu May 19, 2005 11:02 am
Location: CTCN, University of Plymouth
Contact:

Post by ubartsch »

Hi,
my soma is not 400 um long (that would be a quite a big soma, huh?).
Here's an image of the cell:

Image

You can clearly see that the maximum distance should be around 600 µm. But

dist =
94.361069
140.46154
535.17393
224.15504
289.46572
297.22658
422.05326
549.53546
304.6269
589.72805
545.21086
570.71563
347.6078
705.75266
592.61814
361.55918
531.34416
678.43403
793.33242
546.74567
535.72785
742.78547
687.95228
775.81758
780.89438
Raj
Posts: 220
Joined: Thu Jun 09, 2005 1:09 pm
Location: Groningen, The Netherlands
Contact:

Excluding the obvious

Post by Raj »

Just excluding the obvious.

It seems to me that your cell is simply a bit wriggly, in which case the length along the dendrite will be considerably longer than the straight line you compare it with. Inspecting the cell in 3D and rotating it might show you where this extra distance is located.
ted
Site Admin
Posts: 6299
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Section access

Post by ted »

This is a "good" example of abuse of the access keyword, even if the code works.
NEURON has a "section stack," and the currently accessed section is governed
by what is on the top of that stack. So far so good. The problem is that some actions
can have side-effects on the stack, the result being that the default section becomes
something other than what you think it should be. No error message is issued--you
just get very incorrect results, and can waste a lot of time grinding out incorrect
results and then trying to discover the source of the error (assuming you're lucky
enough to recognize the error before someone else does . . . ).

The best practice is:
1. Use access only once in your entire program.
2. Use
sectionname statement
or
sectionname { statement(s) }
extensively. It is almost always the best way to specify the currenly accessed
section. Avoid errors like this
soma diam=1 L=10
(missing curly brackets), which sets soma.L, then pops the stack and sets diam
for whatever section remains at the top of the stack. Also, when using
sectionname { statement1 statement2 . . . statementN }
make sure that execution reaches the last statement, so that the section stack
will be popped. That is, don't break, continue, or return inside
the curly brackets.
3. Statements that involve more than one section should use dot notation, e.g.
secname1.varname1 = secname2.varname2

Following these guidelines, and assuming that the solitary access statement
appears elsewhere in your program (probably associated with the dummy
section that will host your artificial spiking cell(s)--guessing that this is a
network model, and you have one or more of those to supply afferent drive?--
the code excerpt becomes

Code: Select all

for i=0, 0 {
	cells[i]= new pc1()
	cells[i].soma stim[i] = new IClamp(.5)
	stim[i].del=200
	stim[i].dur=500
	stim[i].amp=0.8
	cells[i].soma[0] distance()
	
	for k=0, len-1{
	cells[i].apic[k] dist.x[k]=distance(.5)
	print dist.x[k]
	for j=0, n-1{T[k].x[j]=j*deltat}
	cvode.record(&cells[i].apic[k].v(.5),V[k],T[k],1) 
	}
	}
i.e. minor changes indeed.
ted
Site Admin
Posts: 6299
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Excluding the obvious

Post by ted »

Raj raised a very good point. I should also mention that many morphometric
reconstructions look beautiful in the xy plane, but just rotate 90 deg around the
y axis and you discover that the z axis data contain a bunch of artifc

You might want to try NEURON's Impedance tools, which, among other things,
can produce a plot of voltage attenuation vs. distance from the soma. See
http://www.neuron.yale.edu/neuron/faq#impedance
Just be sure to initialize your model (to make sure all diameter information is
used, and that any voltage-gated conductances are their proper state), then click
Redraw. And if your model does have voltage-gated conductances, you'll probably
want to click on the "include dstate/dt contribution" button.

The impedance tool tutorial also has a link to instructions for how to rotate Shape
plots in space.


Finally, a research question:
is voltage transfer from synapse to soma the most relevant measure of synaptic
efficacy? An individual bouton attached to a pyramidal cell produces a local change
of Vm that is small compared to the difference between resting potential and synaptic
equilibrium potential. This means that an individual synapse will act more like a current
source than a voltage source. Consequently, transfer impedance is a better indicator
of the effect of synaptic location on synaptic efficacy, even if voltage-gated currents
are present--see Jaffe & Carnevale JNP 82: 3268–3285, 1999.
Post Reply