Exemple #1
0
def main(args):
    if args.outdir=='GT':
        marker_files = map(string.strip,os.popen('ls '+args.indir+'*-GT.marker').readlines())
        substack_ids = [f.split('/')[-1].split('-')[0] for f in marker_files]
    else:
        marker_files = map(string.strip,os.popen('ls '+args.outdir+'/*/ms.marker').readlines())
        substack_ids = [f.split('/')[-2] for f in marker_files]

    C_final=set()
    plist = None
    hue = 0.0
    # FIXME: This is way too slow, should use divide & conquer using a binary tree
    for marker_file,substack_id in zip(marker_files,substack_ids):
        substack=SubStack(args.indir,substack_id, plist)
        plist = substack.plist
        print('Merging', marker_file, substack_id)
        C=substack.load_markers(marker_file,args.outdir=='GT')
        # I had forgotten that markers are shifted by 1 in save_markers()
        # that was because Vaa3D coordinates starts from 1 rather than 0
        # ==> repair original values
        for c in C:
            c.x -= 1
            c.y -= 1
            c.z -= 1
        hue = hue + 0.31
        if hue > 1:
            hue = hue -1
        merge(C_final, C, substack, hue, args.verbose)
    substack.save_markers(args.outfile, C_final)
Exemple #2
0
def main(args):
    if args.outdir == 'GT':
        marker_files = map(
            string.strip,
            os.popen('ls ' + args.indir + '*-GT.marker').readlines())
        substack_ids = [f.split('/')[-1].split('-')[0] for f in marker_files]
    else:
        marker_files = map(
            string.strip,
            os.popen('ls ' + args.outdir + '/*/ms.marker').readlines())
        substack_ids = [f.split('/')[-2] for f in marker_files]

    C_final = set()
    plist = None
    hue = 0.0
    # FIXME: This is way too slow, should use divide & conquer using a binary tree
    for marker_file, substack_id in zip(marker_files, substack_ids):
        substack = SubStack(args.indir, substack_id, plist)
        plist = substack.plist
        print('Merging', marker_file, substack_id)
        C = substack.load_markers(marker_file, args.outdir == 'GT')
        # I had forgotten that markers are shifted by 1 in save_markers()
        # that was because Vaa3D coordinates starts from 1 rather than 0
        # ==> repair original values
        for c in C:
            c.x -= 1
            c.y -= 1
            c.z -= 1
        hue = hue + 0.31
        if hue > 1:
            hue = hue - 1
        merge(C_final, C, substack, hue, args.verbose)
    substack.save_markers(args.outfile, C_final)
def merge_views(args):

    view_ids=args.view_ids
    max_len=0
    hue=0.
    C_substack=[]

    if args.thresholds_dir is None:
        print(view_ids)
        list_views = get_visible_pairs(args.base_indir,args.substack_id,view_ids)
    else:
        list_views = get_visible_pairs_from_dir(args.thresholds_dir, args.substack_id, view_ids)

    substack = SubStack(args.base_indir+'/'+view_ids[0],args.substack_id)
    valid_pairs = filter_valid_pairs(args,substack,list_views)

    if len(valid_pairs.keys())==1:
            C_substack+=valid_pairs.values()[0]
    else:
            keys_view_1=[]
            keys_view_3=[]
            for view_key in valid_pairs.keys():
                    if view_key[0] == view_ids[2]:
                            keys_view_3.append(view_key)
                    elif view_key[0] == view_ids[0]:
                            keys_view_1.append(view_key)

    if len(valid_pairs)==2:
            if len(keys_view_1) == 2 or len(keys_view_3) == 2:
                    total_list=compute_fusion(substack,valid_pairs.values()[0],valid_pairs.values()[1],args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_substack+=total_list
            elif len(keys_view_1) == 1 and len(keys_view_3) == 1:
                    C_view_3_t=transform_markers(args,substack,valid_pairs[keys_view_3[0]], view_ids)
                    total_list=compute_fusion(substack,valid_pairs[keys_view_1[0]],C_view_3_t,args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_substack+=total_list
            else:
                    raise Exception('not valid list of views %s'%(str(valid_pairs)))

    elif len(valid_pairs)==3:
            if len(keys_view_1) == 2:
                    C_view_1=compute_fusion(substack,valid_pairs[keys_view_1[0]],valid_pairs[keys_view_1[1]],args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_view_3_t=transform_markers(args,substack,valid_pairs[keys_view_3[0]], view_ids)
                    total_list=compute_fusion(substack,C_view_1,C_view_3_t,args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_substack+=total_list
            elif len(keys_view_3) == 2:
                    C_view_3=compute_fusion(substack,valid_pairs[keys_view_3[0]],valid_pairs[keys_view_3[1]],args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_view_3_t=transform_markers(args,substack,C_view_3, view_ids)
                    C_view_1=valid_pairs[keys_view_1[0]]
                    total_list=compute_fusion(substack,C_view_1,C_view_3_t,args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_substack+=total_list
            else:
                    raise Exception('not valid list of views %s'%(str(valid_pairs)))

    elif len(valid_pairs)==4:
            if len(keys_view_1) == 2 and len(keys_view_3) == 2:
                    C_view_1=compute_fusion(substack,valid_pairs[keys_view_1[0]],valid_pairs[keys_view_1[1]],args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_view_3=compute_fusion(substack,valid_pairs[keys_view_3[0]],valid_pairs[keys_view_3[1]],args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_view_3_t=transform_markers(args,substack,C_view_3, view_ids)
                    total_list=compute_fusion(substack,C_view_1,C_view_3_t,args.max_distance,match_distance=args.match_distance,verbose=args.verbose)
                    C_substack+=total_list
            else:
                    raise Exception('not valid list of views %s'%(str(valid_pairs)))

    mkdir_p(args.outdir+'/'+args.substack_id)
    if len(C_substack)>0:
            C_substack = filter_outside_markers(C_substack,substack)
            substack.save_markers(args.outdir+'/'+args.substack_id+'/ms.marker', C_substack, floating_point=True)
def merge_views(args):

    view_ids = args.view_ids
    max_len = 0
    hue = 0.
    C_substack = []

    if args.thresholds_dir is None:
        print(view_ids)
        list_views = get_visible_pairs(args.base_indir, args.substack_id,
                                       view_ids)
    else:
        list_views = get_visible_pairs_from_dir(args.thresholds_dir,
                                                args.substack_id, view_ids)

    substack = SubStack(args.base_indir + '/' + view_ids[0], args.substack_id)
    valid_pairs = filter_valid_pairs(args, substack, list_views)

    if len(valid_pairs.keys()) == 1:
        C_substack += valid_pairs.values()[0]
    else:
        keys_view_1 = []
        keys_view_3 = []
        for view_key in valid_pairs.keys():
            if view_key[0] == view_ids[2]:
                keys_view_3.append(view_key)
            elif view_key[0] == view_ids[0]:
                keys_view_1.append(view_key)

    if len(valid_pairs) == 2:
        if len(keys_view_1) == 2 or len(keys_view_3) == 2:
            total_list = compute_fusion(substack,
                                        valid_pairs.values()[0],
                                        valid_pairs.values()[1],
                                        args.max_distance,
                                        match_distance=args.match_distance,
                                        verbose=args.verbose)
            C_substack += total_list
        elif len(keys_view_1) == 1 and len(keys_view_3) == 1:
            C_view_3_t = transform_markers(args, substack,
                                           valid_pairs[keys_view_3[0]],
                                           view_ids)
            total_list = compute_fusion(substack,
                                        valid_pairs[keys_view_1[0]],
                                        C_view_3_t,
                                        args.max_distance,
                                        match_distance=args.match_distance,
                                        verbose=args.verbose)
            C_substack += total_list
        else:
            raise Exception('not valid list of views %s' % (str(valid_pairs)))

    elif len(valid_pairs) == 3:
        if len(keys_view_1) == 2:
            C_view_1 = compute_fusion(substack,
                                      valid_pairs[keys_view_1[0]],
                                      valid_pairs[keys_view_1[1]],
                                      args.max_distance,
                                      match_distance=args.match_distance,
                                      verbose=args.verbose)
            C_view_3_t = transform_markers(args, substack,
                                           valid_pairs[keys_view_3[0]],
                                           view_ids)
            total_list = compute_fusion(substack,
                                        C_view_1,
                                        C_view_3_t,
                                        args.max_distance,
                                        match_distance=args.match_distance,
                                        verbose=args.verbose)
            C_substack += total_list
        elif len(keys_view_3) == 2:
            C_view_3 = compute_fusion(substack,
                                      valid_pairs[keys_view_3[0]],
                                      valid_pairs[keys_view_3[1]],
                                      args.max_distance,
                                      match_distance=args.match_distance,
                                      verbose=args.verbose)
            C_view_3_t = transform_markers(args, substack, C_view_3, view_ids)
            C_view_1 = valid_pairs[keys_view_1[0]]
            total_list = compute_fusion(substack,
                                        C_view_1,
                                        C_view_3_t,
                                        args.max_distance,
                                        match_distance=args.match_distance,
                                        verbose=args.verbose)
            C_substack += total_list
        else:
            raise Exception('not valid list of views %s' % (str(valid_pairs)))

    elif len(valid_pairs) == 4:
        if len(keys_view_1) == 2 and len(keys_view_3) == 2:
            C_view_1 = compute_fusion(substack,
                                      valid_pairs[keys_view_1[0]],
                                      valid_pairs[keys_view_1[1]],
                                      args.max_distance,
                                      match_distance=args.match_distance,
                                      verbose=args.verbose)
            C_view_3 = compute_fusion(substack,
                                      valid_pairs[keys_view_3[0]],
                                      valid_pairs[keys_view_3[1]],
                                      args.max_distance,
                                      match_distance=args.match_distance,
                                      verbose=args.verbose)
            C_view_3_t = transform_markers(args, substack, C_view_3, view_ids)
            total_list = compute_fusion(substack,
                                        C_view_1,
                                        C_view_3_t,
                                        args.max_distance,
                                        match_distance=args.match_distance,
                                        verbose=args.verbose)
            C_substack += total_list
        else:
            raise Exception('not valid list of views %s' % (str(valid_pairs)))

    mkdir_p(args.outdir + '/' + args.substack_id)
    if len(C_substack) > 0:
        C_substack = filter_outside_markers(C_substack, substack)
        substack.save_markers(args.outdir + '/' + args.substack_id +
                              '/ms.marker',
                              C_substack,
                              floating_point=True)