def neurite_centre_of_mass(neurite): '''Calculate and return centre of mass of a neurite.''' centre_of_mass = np.zeros(3) total_volume = 0 for segment in tree.val_iter(tree.isegment(neurite)): seg_volume = morphmath.segment_volume(segment) centre_of_mass = centre_of_mass + seg_volume * segment_centre_of_mass(segment) total_volume += seg_volume return centre_of_mass / total_volume
def neurite_centre_of_mass(neurite): '''Calculate and return centre of mass of a neurite.''' centre_of_mass = np.zeros(3) total_volume = 0 for segment in tree.val_iter(tree.isegment(neurite)): seg_volume = morphmath.segment_volume(segment) centre_of_mass = centre_of_mass + seg_volume * segment_centre_of_mass( segment) total_volume += seg_volume return centre_of_mass / total_volume
def test_segment_volume(): p0 = Point(0.0, 0.0, 0.0, 3.0, 1) p1 = Point(2.0, 0.0, 0.0, 3.0, 1) p2 = Point(4.0, 0.0, 0.0, 3.0, 1) p3 = Point(4.0, 0.0, 0.0, 6.0, 1) p4 = Point(1.0, 0.0, 0.0, 3.0, 1) p5 = Point(4.0, 0.0, 0.0, 3.0, 1) v01 = segment_volume((p0, p1)) v02 = segment_volume((p0, p2)) v03 = segment_volume((p0, p3)) v04 = segment_volume((p0, p4)) v45 = segment_volume((p4, p5)) v05 = segment_volume((p0, p5)) nt.assert_almost_equal(v01, 56.5486677, places=6) nt.assert_almost_equal(2*v01, v02) nt.assert_almost_equal(v03, 263.8937829, places=6) nt.assert_almost_equal(v45, v05 - v04) nt.assert_almost_equal(segment_volume((p0, p3)), segment_volume((p3, p0)))