Example #1
0
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()
Example #2
0
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()