Import3D creates 2 soma

The basics of how to develop, test, and use models.
Post Reply
Corinne
Posts: 38
Joined: Wed Feb 09, 2011 7:13 pm

Import3D creates 2 soma

Post by Corinne »

Hello, I am importing a 3d morphology using the Import 3D tool. When I import I get an error:

Main branch starting at line 657 is outside the soma bounding boxes
Making a logical connection to center of nearest soma

I then get a "Possible root branch errors" dialog box that says"
Default logical connection to nearest soma.
Check to physically connect to closest parent in the xy plane.
(Note: may split the parent into two sections)

If I select this option it does create a soma[1](0) and a soma(1) in the .hoc code both of which have many pt3dadd entries with in them:

Code: Select all

proc shape3d_1() {
  soma {pt3dclear()
        pt3dadd(-1.47, 1.1, 0, 0.18)
        pt3dadd(-1.47, 1.65, 0, 0.18)
        pt3dadd(-1.65, 2.2, 0, 0.18)
        pt3dadd(-2.02, 2.75, 0, 0.18)
        pt3dadd(-2.39, 3.49, 0, 0.18)
        pt3dadd(-2.75, 4.22, 0, 0.18)
        pt3dadd(-3.86, 5.51, 0, 0.18)
        pt3dadd(-4.59, 6.61, 0, 0.18)
        pt3dadd(-5.51, 7.53, 0, 0.18)
        pt3dadd(-6.43, 8.81, 0, 0.18)
        pt3dadd(-6.98, 9.73, 0, 0.18)
        pt3dadd(-7.71, 10.83, 0, 0.18)
        pt3dadd(-8.81, 12.67, 0, 0.18)
        pt3dadd(-10.1, 14.5, 0, 0.18)
        pt3dadd(-11.01, 16.16, 0, 0.18)
        pt3dadd(-11.2, 17.44, 0, 0.18)
        pt3dadd(-11.2, 21.3, 0, 0.18)
        pt3dadd(-10.65, 23.13, 0, 0.18)
        pt3dadd(-10.1, 23.68, 0, 0.18)
        pt3dadd(-9.55, 23.87, 0, 0.18)
        pt3dadd(-7.89, 24.42, 0, 0.18)
        pt3dadd(-6.79, 24.78, 0, 0.18)
        pt3dadd(-5.69, 25.15, 0, 0.18)
        pt3dadd(-3.49, 25.15, 0, 0.18)
        pt3dadd(-2.75, 24.97, 0, 0.18)
        pt3dadd(-2.02, 24.42, 0, 0.18)
  }
  soma[1] {pt3dclear()
        pt3dadd(1.85504, 0.69267, 0, 0.925963)
        pt3dadd(1.70518, 1.87436, 0, 1.42094)
        pt3dadd(1.55533, 3.05605, 0, 1.5322)
        pt3dadd(1.40547, 4.23773, 0, 1.3983)
        pt3dadd(1.25562, 5.41942, 0, 1.35015)
        pt3dadd(1.10576, 6.60111, 0, 1.49653)
        pt3dadd(0.955908, 7.7828, 0, 1.50179)
        pt3dadd(0.806054, 8.96448, 0, 1.33946)
        pt3dadd(0.656199, 10.1462, 0, 1.03173)
        pt3dadd(0.506345, 11.3279, 0, 0.832381)
        pt3dadd(0.35649, 12.5095, 0, 0.69106)
        pt3dadd(0.206636, 13.6912, 0, 0.4867)
        pt3dadd(0.0567811, 14.8729, 0, 0.522405)
        pt3dadd(-0.0930734, 16.0546, 0, 0.673459)
        pt3dadd(-0.242928, 17.2363, 0, 1.13828)
        pt3dadd(-0.392782, 18.418, 0, 1.46059)
        pt3dadd(-0.542637, 19.5997, 0, 1.68103)
        pt3dadd(-0.692491, 20.7814, 0, 1.78193)
        pt3dadd(-0.842346, 21.963, 0, 1.5043)
        pt3dadd(-0.9922, 23.1447, 0, 1.17581)
        pt3dadd(-1.14205, 24.3264, 0, 0.804093)
  }

At the bottom of the exported .hoc file it creates a somatic section list.

Code: Select all

  somatic = new SectionList()
    for i=0, 1 soma[i] somatic.append()
the topology section look like:

Code: Select all

proc topol() { local i
  connect soma[1](0), soma(1)
  connect dend(0), soma[1](0.5)
  for i = 1, 2 connect dend[i](0), dend(1)
  for i = 3, 4 connect dend[i](0), dend[2](1)
  connect dend[5](0), soma[1](0.5)
  connect dend[6](0), soma(1)
  for i = 7, 8 connect dend[i](0), dend[i-1](1)
  connect dend[9](0), dend[7](1)
  connect dend[10](0), dend[6](1)
  for i = 11, 12 connect dend[i](0), dend[10](1)
  for i = 13, 14 connect dend[i](0), soma[1](0.5)
  for i = 15, 16 connect dend[i](0), dend[i-1](1)
  connect dend[17](0), dend[15](1)
  connect dend[18](0), dend[14](1)
  connect dend[19](0), soma[1](0.5)
  for i = 20, 21 connect dend[i](0), dend[19](1)
  for i = 22, 23 connect dend[i](0), dend[21](1)
  connect apic(0), soma[1](0.5)
  for i = 1, 2 connect apic[i](0), apic[i-1](1)
  connect apic[3](0), apic[1](1)
  connect apic[4](0), apic(1)
  for i = 5, 7 connect apic[i](0), apic[i-1](1)
  connect apic[8](0), apic[6](1)
  for i = 9, 10 connect apic[i](0), apic[8](1)
  connect apic[11](0), apic[5](1)
  for i = 12, 13 connect apic[i](0), apic[11](1)
  connect apic[14](0), apic[4](1)
  for i = 15, 16 connect apic[i](0), apic[i-1](1)
  connect apic[17](0), apic[14](1)
  for i = 18, 19 connect apic[i](0), apic[i-1](1)
  connect apic[20](0), apic[18](1)
  connect apic[21](0), apic[17](1)
  connect apic[22](0), soma[1](0.5)
  for i = 23, 24 connect apic[i](0), apic[i-1](1)
  connect apic[25](0), apic[23](1)
  for i = 26, 27 connect apic[i](0), apic[i-1](1)
  connect apic[28](0), apic[26](1)
  connect apic[29](0), apic[25](1)
  connect apic[30](0), apic[22](1)
  basic_shape()
}
I am not sure why the soma gets split into two or the implications of this. Do the two somatic sections still act as one large soma? or are they somehow more isolated?
Corinne
Posts: 38
Joined: Wed Feb 09, 2011 7:13 pm

Re: Import3D creates 2 soma

Post by Corinne »

Also when I choose the option that connects the non connected section to the soma; then I export the cell to the cellbuilder; then I export the cell to a .hoc file via the cell builder. When I try to open the .hoc file later (after I close NEURON and open it again) I get the following error:

Code: Select all

oc>/Applications/NEURON-7.1/nrn/umac/bin/nrniv.app/Contents/MacOS/nrniv: procedure too big
 in D110523PYR.hoc near line 1292
 	pt3dadd(1.1, -48.27, -2.95, 0.92)
                                   ^
        xopen("D110523PYR.hoc")
      NEURONMainMenu[0].execute1("{xopen("D110523PYR.hoc")}")
    NEURONMainMenu[0].load_file(0, "/Users/Caleb 1/Desktop/cteeter/CalebData/D110523PYR.hoc")
  NEURONMainMenu[0].load("*.hoc", 0)
I do not get this error if I do not choose the option to connect the non connected section to the soma and then do all the same exporting procedures.

Any ideas about what to do about this?

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

Re: Import3D creates 2 soma

Post by ted »

As you know, there's all sorts of cr*p in morphometric data files. If Import3D is generating a model that has two sections called soma (really one called soma[0] and another called soma[1]), it's either because there really are two different somas (in which case there are really two cells), or because the person who acquired the data did this in such a way as to specify two neurites with the root name "soma". From the pt3dadd statements you posted, I suspect that the set of measurements with diameter 0.18 um is a tracing of the perimeter of the soma, while the other may be an attemt to capture soma diameter at successive points along a centroid (but if so it's a very skinny soma). Can't say more without examining the original data--if you want to zip it up and email to ted dot carnevale at yale dot edu, I'll take a look and tell you what I find.
Corinne
Posts: 38
Joined: Wed Feb 09, 2011 7:13 pm

Re: Import3D creates 2 soma

Post by Corinne »

Thank you so much. I am sending it your way now.

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

Re: Import3D creates 2 soma

Post by ted »

The message spawned by Import3D appears in a window with "Possible root branch errors" in its drag bar. The message is:
Default logical connection to nearest soma
Check to physically connect to closest parent in the xy plane.
(Note: may split the parent into two sections)
Line #657 connect to #219 1.5027 (um)
Questions: what's going on? Do I want to click on the checkbox or not?

Here's what I did to figure this out.

Zoom in on the vicinity of the soma to see what looks like a bunch of primary dendrites converging on a perimeter tracing of a soma.
Click on "Show diam", see tapered dendrites surrounding thin red outline around a shape that looks like side view of a pyramidal cell soma. Is this a tracing of soma perimeter?
Click on "Select point" and enter 219 into Line # numeric field.
Red dot appears on putative soma perimeter.
Use Line #'s spinner (widget to right of numeric field that has up and down arrowheads on it) to increment/decrement line number, observe red dot move around putative soma perimeter.
Enter 657 in Line # numeric field.
Red dot is now on proximal end of one of the primary dendrites.
Click on Rotate button, then click on canvas and drag to rotate view around y axis. Confirms that 657 is proximal end of a primary dendrite. Separation from putative soma perimeter is surprising, but logical connection to center of putative soma does exist (thin red line from proximal end of dendrite to middle of putative soma).
Use Line # spinner to increment line number, see red dot move distally along dendrite.

Inferences: the putative soma perimeter is truly a soma perimeter. Don't want to split it into two soma sections. Therefore don't want to click on the checkbox in the "Possible root branch errors" window. Instead, just click on Import3d's "Export" button, and export to a CellBuilder.

Save CellBuilder to a ses file.
Examine the Import3D tool and note that it has identified the centroid of the soma outline, and generated ~20 thin slices orthogonal to that axis, from which NEURON will figure out the 3d info that defines the soma's surface area and volume.

Start a new instance of NEURON and load the ses file.
In the new CellBuilder, click on Continuous create.
Bring up a Shape plot, then use its primary graph menu to select
Shape style / show diam
Then zoom in on soma region and rotate the shape plot around y axis to verify this looks like a soma.

Conclusion: CellBuilder does contain a reasonable 3d specification of cellular geometry based on neurite measurements and tracing of soma perimeter. Just one soma.
Post Reply