Surface area of entire 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
Corinne
Posts: 38
Joined: Wed Feb 09, 2011 7:13 pm

Surface area of entire neuron?

Post by Corinne »

Is there an easy way to calculate the surface area of an entire neuron?

Thanks in advance!
Corinne
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Surface area of entire neuron?

Post by ted »

Quick command line approach:
At the oc> prompt execute
finitialize()
to make sure the geometry specification has been completely executed.
Next enter the following commands at the command line:
_sum = 0
forall for (x,0) _sum += area(x)
_sum
The interpreter will print the total surface area in um2.

More disciplined approach:
Use a text editor to create a file called totalarea.hoc
In this file put the following statements:

Code: Select all

proc totalarea() { local sum
  finitialize()
  sum = 0
  forall for (x,0) sum += area(x)
  print "total surface area = ", sum, " um2"
}
totalarea() // returns total surface area
If & when you need to know total area, either use
NEURON Main Menu / File / load hoc
to load this file, or at the oc> prompt type
xopen("totalarea.hoc")
(assuming the file is in your current working directory).
If you do something that might change total area, then at the oc> prompt just type
totalarea()
and you'll see the updated value.

This will work fine if you are dealing with a model that involves just one cell. If you are dealing with a network model and are interested in any of the individual cell classes, a slight modification would be necessary.

Code: Select all

proc totalarea() { local sum
  finitialize()
  sum = 0
//  forall for (x,0) sum += area(x)
  forsec $o1.all for (x,0) sum += area(x)
  print "total surface area = ", sum, " um2"
}
and you would call this with an argument that is an objref that points to an instance of the cell class of interest, or the name of the actual object itself. Examples:

Code: Select all

totalarea(Pyr[24]) // arg is the name of a particular instance of the Pyr class
totalarea(cells.o(59)) // cells is a List of objrefs that point to instances of cell classes
  // you're interested in the 60th cell in the List
Corinne
Posts: 38
Joined: Wed Feb 09, 2011 7:13 pm

Re: Surface area of entire neuron?

Post by Corinne »

Yup, this works great. I just want to confirm that in all cases the area of a segment is calculated as the surface area of a cylinder WITHOUT the ends on it. I.e. area is calculated as 2*pi*r*l where r is the radius and l is the segment length. If the surface area of the ends were included in the calcuation there would be and additional 2*pi*r^2 added on.

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

Re: Surface area of entire neuron?

Post by ted »

Surface area calculation depends on how section geometry was specified. For sections specified with the stylized method (L & diam) all segments are treated as cylinders. For sections specified with the pt3d method (i.e. a series of detailed x,y,z,diam values, read about Geometry, pt3dadd, and related topics in the Programmer's Reference), the section is treated as a sequence of frusta (truncated cones) whose circular ends are at the xyz coordinates and have the associated diameter value.

With NEURON, the default boundary condition is "sealed end" i.e. if one end of a section is not attached to a child or parent the axial current at that point is 0). This means that end areas are not included in the calculation of surface area. You can verify this for yourself by writing a short program that creates two sections and specifying one's geometry with the stylized method and the other's geometry via the 3d style, then seeing what NEURON reports as the surface areas.
Post Reply