Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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