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])))
Example #3
0
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])))
Example #4
0
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