def overlap_dist(n1,n2,resample=0.,s=1000.,sig=10000.): if resample != 0.: ax = catmaid.algorithms.morphology.resample_edges(n1,resample,labels=['axon']) den = catmaid.algorithms.morphology.resample_edges(n2,resample,labels=['dendrite']) else: ax = n1.axons[n1.axons.keys()[0]]['tree'] den = n2.dendrites sk1 = n1.skeleton['id'] sk2 = n2.skeleton['id'] with open('cylinder_{}_{}.csv'.format(sk1,sk2),'wb') as f_o: csv_writer = csv.writer(f_o) for (nron,g) in ((n1,ax),(n2,den)): for u,v,d in g.edges_iter(data=True): try: d['r'],d['n'],d['l'] = edge_to_cylinder(nron.skeleton['vertices'][u],nron.skeleton['vertices'][v]) d['valid'] = True except EdgeError as e: logging.error("BADEDGE") d['valid']=False total = 0. for _,_,a in ax.edges_iter(data=True): if not a['valid']: continue max_o = 0.0 sum_o = 0.0 for _,_,d in den.edges_iter(data=True): if not d['valid']: continue o_lap = cylinder_overlap(a,d,sig=sig) max_o = max(o_lap,max_o) sum_o += o_lap total += o_lap csv_writer.writerow([a['r'][0],a['r'][1],a['r'][2],max_o,sum_o]) return total * 2. * s
def cylinders_csv(nron,resample=0.): if resample != 0.: ax = catmaid.algorithms.morphology.resample_edges(nron,resample,labels=['axon']) den = catmaid.algorithms.morphology.resample_edges(nron,resample,labels=['dendrite']) else: ax = nron.axons[nron.axons.keys()[0]]['tree'] den = nron.dendrites sk1 = nron.skeleton['id'] with open('cylinders_{}_ax.csv'.format(sk1),'wb') as f_ax: ax_writer = csv.writer(f_ax) for u,v,d in ax.edges_iter(data=True): r,n,l = edge_to_cylinder(nron.skeleton['vertices'][u],nron.skeleton['vertices'][v]) ax_writer.writerow(numpy.concatenate((r,n,[l]))) with open('cylinders_{}_den.csv'.format(sk1),'wb') as f_d: d_writer = csv.writer(f_d) for u,v,d in den.edges_iter(data=True): r,n,l = edge_to_cylinder(nron.skeleton['vertices'][u],nron.skeleton['vertices'][v]) d_writer.writerow(numpy.concatenate((r,n,[l])))
def cylinders_csv(nron, resample=0.): if resample != 0.: ax = catmaid.algorithms.morphology.resample_edges(nron, resample, labels=['axon']) den = catmaid.algorithms.morphology.resample_edges(nron, resample, labels=['dendrite']) else: ax = nron.axons[nron.axons.keys()[0]]['tree'] den = nron.dendrites sk1 = nron.skeleton['id'] with open('cylinders_{}_ax.csv'.format(sk1), 'wb') as f_ax: ax_writer = csv.writer(f_ax) for u, v, d in ax.edges_iter(data=True): r, n, l = edge_to_cylinder(nron.skeleton['vertices'][u], nron.skeleton['vertices'][v]) ax_writer.writerow(numpy.concatenate((r, n, [l]))) with open('cylinders_{}_den.csv'.format(sk1), 'wb') as f_d: d_writer = csv.writer(f_d) for u, v, d in den.edges_iter(data=True): r, n, l = edge_to_cylinder(nron.skeleton['vertices'][u], nron.skeleton['vertices'][v]) d_writer.writerow(numpy.concatenate((r, n, [l])))
def overlap_dist(n1, n2, resample=0., s=1000., sig=10000.): if resample != 0.: ax = catmaid.algorithms.morphology.resample_edges(n1, resample, labels=['axon']) den = catmaid.algorithms.morphology.resample_edges(n2, resample, labels=['dendrite']) else: ax = n1.axons[n1.axons.keys()[0]]['tree'] den = n2.dendrites sk1 = n1.skeleton['id'] sk2 = n2.skeleton['id'] with open('cylinder_{}_{}.csv'.format(sk1, sk2), 'wb') as f_o: csv_writer = csv.writer(f_o) for (nron, g) in ((n1, ax), (n2, den)): for u, v, d in g.edges_iter(data=True): try: d['r'], d['n'], d['l'] = edge_to_cylinder( nron.skeleton['vertices'][u], nron.skeleton['vertices'][v]) d['valid'] = True except EdgeError as e: logging.error("BADEDGE") d['valid'] = False total = 0. for _, _, a in ax.edges_iter(data=True): if not a['valid']: continue max_o = 0.0 sum_o = 0.0 for _, _, d in den.edges_iter(data=True): if not d['valid']: continue o_lap = cylinder_overlap(a, d, sig=sig) max_o = max(o_lap, max_o) sum_o += o_lap total += o_lap csv_writer.writerow( [a['r'][0], a['r'][1], a['r'][2], max_o, sum_o]) return total * 2. * s