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 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)