def fan_wrapper(fold='None', n=10, dens=.2, sst=.9): scipy.random.seed() msl_time = None sat_time = None s = None c = None k = bfutils.dens2edgenum(dens, n=nodes) output = {} while True: try: output['gt'] = gk.ringmore(n, k) gdens = traversal.density(output['gt']) gu = bfutils.increment(output['gt']) output['transition'] = lm.transitionMatrix4(output['gt'], minstrength=.9) if estimate_gu: data = lm.drawsamplesLG(output['transition'], nstd=np.double(NOISE_STD), samples=BURNIN + NSAMPLES * URATE) data = data[:, BURNIN:] if np.max(data) > 1000.: raise NameError() gu_est, gu_time = gu_estimate(data[:, ::URATE], ALG) else: gu_est = None gu_time = None if estimate_g1: try: s, msl_time = msl_caller(gu_est) except TimeoutError: s = None msl_time = None try: c, sat_time = sat_caller(gu_est, fold) except TimeoutError: c = None sat_time = None if msl_time is not None: print "msl: {:2}: {:8} : {:4} {:10} seconds".\ format(fold, round(sst,3), len(s), round(msl_time/1000.,3)) if sat_time is not None: print "sat: {:2}: {:8} : {:4} {:10} seconds".\ format(fold, round(sst,3), len(c), round(sat_time/1000.,3)) else: s = None c = None msl_time = None sat_time = None output['gu'] = {'est': gu_est, 'truth': gu, 'ms': gu_time} output['MSL'] = {'eq': s, 'ms': msl_time} output['SAT'] = {'eq': c, 'ms': sat_time} except MemoryError: print 'memory error... retrying' continue break return output
def fan_wrapper(fold='None', n=10, dens=.2, sst=.9, card=2): scipy.random.seed() msl_time = None sat_time = None s = None c = None k = bfutils.dens2edgenum(dens, n=nodes) output = {} while True: try: output['gt'] = gk.ringmore(n, k) gdens = traversal.density(output['gt']) gu = bfutils.increment(output['gt']) if estimate_gu: data = dg.ConstructDynBN(output['gt'], [card] * n, sst, BURNIN + NSAMPLES * URATE) data = data[:, BURNIN:] gu_est, gu_time = gu_estimate(data[:, ::URATE], ALG) else: gu_est = None gu_time = None if estimate_g1: try: s, msl_time = msl_caller(gu_est) except TimeoutError: s = None msl_time = None try: c, sat_time = sat_caller(gu_est, fold) except TimeoutError: c = None sat_time = None if msl_time is not None: print "msl: {:2}: {:8} : {:4} {:10} seconds".\ format(fold, round(sst,3), len(s), round(msl_time/1000.,3)) if sat_time is not None: print "sat: {:2}: {:8} : {:4} {:10} seconds".\ format(fold, round(sst,3), len(c), round(sat_time/1000.,3)) else: s = None c = None msl_time = None sat_time = None output['gu'] = {'est': gu_est, 'truth': gu, 'ms': gu_time} output['MSL'] = {'eq': s, 'ms': msl_time} output['SAT'] = {'eq': c, 'ms': sat_time} except MemoryError: print 'memory error... retrying' continue break return output
def fan_wrapper(fold, n=10, k=10): scipy.random.seed() curr_proc = current_process() curr_proc.daemon = False output = Queue() while True: try: g = gk.ringmore(n, k) gdens = traversal.density(g) g2 = bfutils.increment_u(g, g) # g2 = bfutils.undersample(g,2) def inside_wrapper(): scipy.random.seed() try: startTime = int(round(time.time() * 1000)) s = traversal.v2g22g1(g2, capsize=CAPSIZE) # s = traversal.backtrack_more2(g2, rate=2, capsize=CAPSIZE) endTime = int(round(time.time() * 1000)) print "{:2}: {:8} : {:4} {:10} seconds".\ format(fold, round(gdens, 3), len(s), round((endTime - startTime) / 1000., 3)) output.put({'gt': g, 'eq': s, 'ms': endTime - startTime}) except MemoryError: print 'memory error...' raise pl = [Process(target=inside_wrapper) for x in range(INPNUM)] for e in pl: e.start() while True: if killall(pl): break r = output.get() except MemoryError: print 'memory error... retrying' for p in pl: p.terminate() p.join() continue break for p in pl: p.join() return r
def wrapper_rate_agnostic(fold, n=10, k=10): scipy.random.seed() l = {} while True: try: g = gk.ringmore(n, k) # random ring of given density gs = bfutils.call_undersamples(g) for u in range(1, min([len(gs), UMAX])): g2 = bfutils.undersample(g, u) print fold, ': ', traversal.density(g), ':', startTime = int(round(time.time() * 1000)) s = ur.iteqclass(g2, verbose=False) endTime = int(round(time.time() * 1000)) print len(s) l[u] = {'eq': s, 'ms': endTime - startTime} except MemoryError: print 'memory error... retrying' continue break return {'gt': g, 'solutions': l}
def ra_wrapper_preset(fold, glist=[]): scipy.random.seed() l = {} while True: try: g = glist[fold] gs = bfutils.call_undersamples(g) for u in range(1, min([len(gs), UMAX])): g2 = bfutils.undersample(g, u) print fold, ': ', traversal.density(g), ':', startTime = int(round(time.time() * 1000)) s = ur.liteqclass(g2, verbose=False, capsize=CAPSIZE) endTime = int(round(time.time() * 1000)) print len(s), u l[u] = {'eq': s, 'ms': endTime - startTime} except MemoryError: print 'memory error... retrying' continue break return {'gt': g, 'solutions': l}
def wrapper(fold, n=10, dens=0.1): scipy.random.seed() rate = 2 r = None s = set() counter = 0 while not s: scipy.random.seed() sst = 0.9 r = None while not r: r = lm.getAring(n, dens, sst, False, dist=DIST) print sst, sys.stdout.flush() if sst < 0.03: sst -= 0.001 else: sst -= 0.01 if sst < 0: sst = 0.02 # pprint.pprint(r['transition'].round(2),width=200) # d = zkl.load('leibnitz_nodes_'+str(n)+'_OCE_model_.zkl') # r = d[dens][fold] g = r['graph'] true_g2 = bfu.undersample(g, rate - 1) data = lm.drawsamplesLG(r['transition'], samples=BURNIN + SAMPLESIZE * 2, nstd=np.double(NOISE_STD)) data = data[:, BURNIN:] if np.max(data) > 1000.: pprint.pprint(r['transition'].round(2), width=200) # raise ValueError startTime = int(round(time.time() * 1000)) if EST == 'pc': g2 = pc.dpc(data[:, ::2], pval=0.0001) elif EST == 'svar': g2 = lm.data2graph(data[:, ::2]) if trv.density(g2) < 0.7: print gk.OCE(g2, true_g2) # s = examine_bidirected_flips(g2, depth=DEPTH) s = find_nearest_reachable(g2, max_depth=1) # s = trv.v2g22g1(g2, capsize=CAPSIZE, verbose=False) # s = trv.edge_backtrack2g1_directed(g2, capsize=CAPSIZE) # s = timeout(trv.v2g22g1, # s = timeout(trv.edge_backtrack2g1_directed, # args=(g2,CAPSIZE), # timeout_duration=1000, default=set()) print 'o', sys.stdout.flush() if -1 in s: s = set() endTime = int(round(time.time() * 1000)) # if counter > 3: # print 'not found' # return None counter += 1 print '' oce = [gk.OCE(num2CG(x, n), g) for x in s] cum_oce = [sum(x['directed']) + sum(x['bidirected']) for x in oce] idx = np.argmin(cum_oce) print "{:2}: {:8} : {:4} {:10} seconds".\ format(fold, round(dens, 3), cum_oce[idx], round((endTime - startTime) / 1000., 3)) # np.set_printoptions(formatter={'float': lambda x: format(x, '6.3f')+", "}) # pprint.pprint(r['transition'].round(2)) # np.set_printoptions() return {'gt': r, 'eq': s, 'OCE': oce[idx], 'tries_till_found': counter, 'estimate': g2, 'graphs_tried': counter, 'strength': sst + 0.01, 'ms': endTime - startTime}