def similar_graph(conf, result, area, alg, cand=20): # ed, mcs, edw, mcsw assert result.area == area src_dir = conf.get("dag", "output_dir") l_result = [] for fp in common.rep_dir(src_dir): r = PCOutput(conf).load(fp) if r.area == area: l_result.append(r) weight = None if "w" in alg: weight = EdgeTFIDF(l_result) data = [] for r in l_result: if r.filename == result.filename: continue if alg.rstrip("w") == "ed": dist = graph_edit_distance(result, r, True, weight) elif alg.rstrip("w") == "mcs": dist = mcs_size_ratio(result, r, True, weight) else: raise ValueError() data.append((dist, r)) #data = sorted(data, key = lambda x: x[0], reverse = False) data = ex_sorted(data, key=lambda x: x[0], reverse=False) for d in data[:cand]: print d[0], d[1].filename
def similar_graph(conf, result, area, alg, cand = 20): # ed, mcs, edw, mcsw assert result.area == area src_dir = conf.get("dag", "output_dir") l_result = [] for fp in common.rep_dir(src_dir): r = PCOutput(conf).load(fp) if r.area == area: l_result.append(r) weight = None if "w" in alg: weight = EdgeTFIDF(l_result) data = [] for r in l_result: if r.filename == result.filename: continue if alg.rstrip("w") == "ed": dist = graph_edit_distance(result, r, True, weight) elif alg.rstrip("w") == "mcs": dist = mcs_size_ratio(result, r, True, weight) else: raise ValueError() data.append((dist, r)) #data = sorted(data, key = lambda x: x[0], reverse = False) data = ex_sorted(data, key = lambda x: x[0], reverse = False) for d in data[:cand]: print d[0], d[1].filename
def test_dag_search(conf, method, area = None): import cg_dag if method is None: method = conf.get("search", "method") src_dir = conf.get("dag", "output_dir") if area is None: l_area = pcresult.result_areas(conf) else: l_area = [area] for area in l_area: l_r = pcresult.results_in_area(conf, src_dir, area) result = [] for r in l_r: if method == "log": result = similar_block_log(conf, r.top_dt, r.end_dt, r.area, ignore_same = True) elif method in ("dag_ed", "dag_mcs"): result = cg_dag.similar_block_dag(conf, r.top_dt, r.end_dt, r.area, method, ignore_same = True) else: raise NotImplementedError print r.cond_str() if len(result) > 10: result = ex_sorted(result, key = lambda x: x[1], reverse = False)[:10] for r_found, val in result: print val, r_found.cond_str() print