def close_in_memory(mbins,trc=transclosure.transitiveclosure(),lbv=None,reduction=my_reduction,matchLabel=None,gEpG=None): assert(gEpG) def pre_args(m): matches=m.mread(matchLabel) Ii,Ij=m.Ii,m.Ij, kp_i=m.I().kpread() kp_j=m.J().kpread() return matches,Ii,Ij,kp_i,kp_j,gEpG[Ii,Ij] my_imap=lbv.imap if lbv else imap if lbv and gEpG: lbv.client[:].push(dict(gEpG=gEpG)) argList = imap(pre_args,mbins) tracks_list=list(my_imap(transclosure.matches2tracks,argList)) while len(tracks_list)>1: print "close_random ",len(tracks_list) if len(tracks_list)%2==1: tracks_list.append(transclosure.transitiveclosure()) #print "poppint one empty element len=",len(tracks_list) tracks_list=sort_tracks_lists(tracks_list) left_track_list=[tr for _n,tr in enumerate(tracks_list) if _n%2==0] right_track_list=[tr for _n,tr in enumerate(tracks_list) if _n%2==1] try: tracks_list_out=my_imap(reduction,left_track_list,right_track_list) tracks_list=list(tracks_list_out) except CompositeError, e: e.raise_exception()
def wrap_closure(partial_track_files,lbv=None,reduction=my_reduction,gEpG=None) : def load_tracks(filename): with open(filename) as fin: tracks=pickle.load(fin) return tracks my_imap=lbv.imap if lbv else imap if lbv and gEpG: lbv.client[:].push(dict(remote_gEpG=gEpG)) tracks_list=map(load_tracks,partial_track_files) while len(tracks_list)>1: print "close_random ",len(tracks_list) if len(tracks_list)%2==1: tracks_list.append(transclosure.transitiveclosure()) print "poppint one empty element len=",len(tracks_list) print "sorting list:" for ti,t in enumerate(tracks_list): print ti,t.views.keys() tracks_list=sort_tracks_lists(tracks_list) print "sorted list:" for ti,t in enumerate(tracks_list): print ti,t.views.keys() left_track_list=[tr for _n,tr in enumerate(tracks_list) if _n%2==0] right_track_list=[tr for _n,tr in enumerate(tracks_list) if _n%2==1] try: tracks_list_out=my_imap(reduction,left_track_list,right_track_list) tracks_list=list(tracks_list_out) except CompositeError, e: e.raise_exception()