Branching Points and Terminal points of a neuron

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
Jose Gomez
Posts: 6
Joined: Thu Mar 23, 2006 1:56 am
Location: IMBB-FORTH Greece, UNIC Paris & ULL Spain

Branching Points and Terminal points of a neuron

Post by Jose Gomez »

Hello everyone;

I want to have the 3D coordinates of branching points and terminal points of a neuron and then to calculate the distance of these points to the center of the soma. Does someone know how I can find these points? or Does someone have or know a software that does it? Thank you very much.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

Assuming your model cell's geometry was constructed using the 3-D specification (see
http://www.neuron.yale.edu/neuron/stati ... l#Geometry ),
the coordinates associated with a section can be retrieved as
x3d(i), y3d(i), z3d(i)
where i ranges from 0 to n3d()-1. So the "0 end" will be at x3d(0), etc., and the "1 end"
will be at x3d(n3d()-1), etc.--
print secname(), x3d(0), y3d(0), z3d(0), x3d(n3d()-1), . . .
will report the name of the currently accessed section and the xyz coords of its two ends.

Assuming that all connections are made to ends of sections,
forall print secname() etc.
will walk through the entire cell and report all branch points and terminations.

Given that info, it is easy to calculate euclidian distance from any reference point.
It is not easy to know the coords of the "middle of the soma", unless the soma section
was created with a sequence of pt3dadd statements that happened to include one
xyzdiam measurement located at the middle of the soma. You could "fake it" by
making up a point whose xyz coords are midway between those of the 0 and 1 ends;
depending on the cell type, the result might be acceptable.

How to discover the "terminal points of a neuron"? Very easy, if your model cell was
constructed with the convention "attach the 0 end of the child branch to the parent
branch." Use the SectionRef class to look for those sections that have no children.
When you find one, print out the xyz coords of its 1 end.

Code: Select all

objref sr
forall {
  sr = new SectionRef()
  if (sr.nchild==0) print secname(), x3d(n3d()-1), y3d(n3d()-1), z3d(n3d()-1)
}
The CellBuilder and the Import3D tool follow the convention. If the branched architecture
was set up by someone who wrote their own code and didn't follow the convention, you
may need to recode it.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

I should also mention that the SectionRef class has many methods that are useful for
exploring the topology of a model cell--e.g. root, child, parent, has_parent. See
http://www.neuron.yale.edu/neuron/stati ... SectionRef
for more info and examples.
Post Reply