def test_segment_taper_rate(): p0 = (0.0, 0.0, 0.0, 1.0) p1 = (1.0, 0.0, 0.0, 4.0) p2 = (2.0, 0.0, 0.0, 4.0) p3 = (3.0, 0.0, 0.0, 4.0) assert_almost_equal(mm.segment_taper_rate((p0, p1)), 6.0) assert_almost_equal(mm.segment_taper_rate((p0, p2)), 3.0) assert_almost_equal(mm.segment_taper_rate((p0, p3)), 2.0)
def test_segment_taper_rate(): p0 = (0.0, 0.0, 0.0, 1.0) p1 = (1.0, 0.0, 0.0, 4.0) p2 = (2.0, 0.0, 0.0, 4.0) p3 = (3.0, 0.0, 0.0, 4.0) nt.assert_almost_equal(mm.segment_taper_rate((p0, p1)), 6.0) nt.assert_almost_equal(mm.segment_taper_rate((p0, p2)), 3.0) nt.assert_almost_equal(mm.segment_taper_rate((p0, p3)), 2.0)
def save_morph_data(self, morph_stats_filename): if not os.path.exists(morph_stats_filename): # load a neuron from an SWC file nrn = nm.load_neuron(self.morph_file) morph_stats = {} morph_stats['cell_id'] = self.cell_id morph_stats['soma_suface'] = nm.get('soma_surface_areas', nrn)[0] morph_stats['soma_radius'] = np.mean(nm.get('soma_radii', nrn)) # Morph stats for nrn_type_ in NEURITES: morph_stats['length' + '.' + str(nrn_type_).split('.')[1]] = np.sum( nm.get('segment_lengths', nrn, neurite_type=nrn_type_)) morph_stats['area' + '.' + str(nrn_type_).split('.')[1]] = sum( mm.segment_area(s) for s in nm.iter_segments( nrn, neurite_filter=tree_type_checker(nrn_type_))) morph_stats[ 'volume' + '.' + str(nrn_type_).split('.')[1]] = sum( mm.segment_volume(s) for s in nm.iter_segments( nrn, neurite_filter=tree_type_checker(nrn_type_))) morph_stats['taper_rate' + '.' + str(nrn_type_).split('.')[1]] = \ np.mean([mm.segment_taper_rate(s) for s in nm.iter_segments( nrn, neurite_filter=tree_type_checker(nrn_type_))]) utility.save_json(morph_stats_filename, morph_stats)
# get mean radius of neurite points in cell. # p[COLS.R] yields the radius for point p. # Note: this includes duplicated points at beginning of # non-trunk sections pts = [p[COLS.R] for s in nrn.sections[1:] for p in s.points] print('Mean radius of points:', np.mean(pts)) # get mean radius of segments print('Mean radius of segments:', np.mean(list(mm.segment_radius(s) for s in nm.iter_segments(nrn)))) # get stats for the segment taper rate, for different types of neurite for ttype in NEURITES: ttt = ttype seg_taper_rate = [ mm.segment_taper_rate(s) for s in nm.iter_segments(nrn, neurite_filter=tree_type_checker(ttt)) ] print('Segment taper rate (', ttype, '):\n mean=', np.mean(seg_taper_rate), ', std=', np.std(seg_taper_rate), ', min=', np.min(seg_taper_rate), ', max=', np.max(seg_taper_rate), sep='')
# get mean radius of neurite points in cell. # p[COLS.R] yields the radius for point p. # Note: this includes duplicated points at beginning of # non-trunk sections pts = [p[COLS.R] for s in nrn.sections[1:] for p in s.points] print('Mean radius of points:', np.mean(pts)) # get mean radius of segments print('Mean radius of segments:', np.mean(list(mm.segment_radius(s) for s in nm.iter_segments(nrn)))) # get stats for the segment taper rate, for different types of neurite for ttype in NEURITES: ttt = ttype seg_taper_rate = [mm.segment_taper_rate(s) for s in nm.iter_segments(nrn, neurite_filter=tree_type_checker(ttt))] print('Segment taper rate (', ttype, '):\n mean=', np.mean(seg_taper_rate), ', std=', np.std(seg_taper_rate), ', min=', np.min(seg_taper_rate), ', max=', np.max(seg_taper_rate), sep='') # Number of bifurcation points. print('Number of bifurcation points:', sum(1 for _ in nm.iter_sections(nrn, iterator_type=Tree.ibifurcation_point))) # Number of bifurcation points for apical dendrites