def single_processor(filequeue, pointslist, donelist, bgimg = None, basedir = None, thresh=THRESH): while not filequeue.empty(): fname = filequeue.get() frame_num = int(path.splitext(path.split(fname)[-1])[0]) if basedir: pass if len(donelist)%100 == 0: sys.stderr.write("Completed %d\n"%(len(donelist))) sys.stderr.write("Found %d holes\n" % len(pointslist)) try: img1, img2 = Analysis.loadsplit(fname, bgimg = bgimg) pointslist.extend(Analysis.findpairs(img1, img2, thresh=thresh, DEBUG=DEBUG, abs_thresh=True, frame_num = frame_num)) donelist.append(fname) except IOError: pass except KeyboardInterrupt: return
def processor(args): """map-able function that processes a single frame of data Argument: a single tuple composed of the following, in order file_name : string, required pointslist : list, required file_number : ignored, optional background : array, optional donelist : list, optional A list of files that have already been processed status : ?????? """ fname = args[0] frame_num = int(path.splitext(path.split(fname)[-1])[0]) pointslist = args[1] if len(args) > 2: i = args[2] if len(args) > 3: bgimg = args[3] else: bgimg = None if len(args) > 4: donelist = args[4] donelist.append(i) if len(donelist)%1000 == 1: sys.stderr.write("Completed %d\n"%(len(donelist)-1)) sys.stderr.write("Found %d holes\n" % len(pointslist)) if len(donelist)%10000 == 0 and len(pointslist) > 0: xl, yl, varxl, varyl, el, xr, yr, varxr, varyr, er, framenum =\ zip(*list(pointslist)) savemat('tempfile.mat', {'xl':xl, 'yl':yl, 'varxl': varxl, 'xr':xr, 'yr':yr, 'el': el, 'er': er, 'varxr': varxr, 'framenum':framenum}, oned_as = 'row') sys.stderr.write("Saved a snapshot\n") if len(args) > 5: THRESH = args[5] # Finally, load in the image try: img1, img2 = Analysis.loadsplit(fname, bgimg = bgimg) except IOError: print "Failed loading!" return pointslist.extend(Analysis.findpairs(img1, img2, thresh=THRESH, DEBUG=DEBUG, abs_thresh=True, frame_num = frame_num))