Example #1
0
def filter_stmts_sampling(g, source, target, max_depth):
    f_level, b_level = pg.get_reachable_sets(g, source, target,
                                             max_depth=max_depth, signed=False)
    for length in range(1, max_depth+1):
        #print("Generating paths_graph for length %d" % length)
        this_pg = pg.paths_graph(g, source, target, length, f_level, b_level,
                                 signed=False)
def filter_stmts(g,
                 source,
                 target,
                 max_depth=6,
                 signed=False,
                 target_polarity=None):
    f_level, b_level = pg.get_reachable_sets(g,
                                             source,
                                             target,
                                             max_depth=max_depth,
                                             signed=signed)
    stmt_uuids = set()
    stmt_nodes = set()
    stmt_uuid_nums = []
    stmt_node_nums = []
    # Iterate over various path lengths
    for length in range(1, max_depth + 1):
        #print("Generating paths_graph for length %d" % length)
        this_pg = pg.paths_graph(g,
                                 source,
                                 target,
                                 length,
                                 f_level,
                                 b_level,
                                 signed=signed,
                                 target_polarity=target_polarity)
        if this_pg and len(this_pg) < 100:
            draw(this_pg, 'pybel_pg_%d.pdf' % length)

        # Get nodes for this length PG
        nodes_this_length = set([n[1] for n in this_pg])
        # Get stmt UUIDs for this length PG
        stmt_uuids_this_length = set()
        """
        for u, v in this_pg.edges():
            u_name, v_name = (u[1], v[1])
            multiedge_data = g.get_edge_data(u_name, v_name)
            for edge_data in multiedge_data.values():
                stmt_uuids_this_length.add((u_name, edge_data['uuid'], v_name))
        stmt_uuids |= stmt_uuids_this_length
        """
        # Get counts for this depth
        # Terminate the loop if we've saturated the number of edges
        #if stmt_nodes and stmt_nodes == nodes_this_length:
        #    break
        stmt_nodes |= nodes_this_length

        stmt_uuid_nums.append(len(stmt_uuids))
        stmt_node_nums.append(len(stmt_nodes))

    return (stmt_uuids, stmt_nodes, stmt_node_nums, stmt_uuid_nums)
Example #3
0
def sample_paths(g, source, target, max_depth, target_polarity=None,
                 num_paths=1000):
    print('Source: %s' % source)
    signed = True if target_polarity is not None else False

    (f_level, b_level)  = paths_graph.get_reachable_sets(
                                g, source, target, max_depth=10, signed=signed)
    all_paths = []
    for length in range(1, max_depth):
        print("Path length: %d" % length)
        pg_raw = paths_graph.paths_graph(g, source, target, length, f_level,
                             b_level, signed=signed,
                             target_polarity=target_polarity)
        # Append depths to our source and target nodes
        src = (0, (source, 0))
        tgt = (length, (target, target_polarity))
        dic_PG = cycle_free_paths_graph(pg_raw, src, tgt, length)
        G_cf, T = dic_PG[length-1]
        try:
            P = sample_many_paths(src, tgt, G_cf, T, num_paths)
            all_paths.extend(P)
        except IndexError:
            pass
    return all_paths
Example #4
0
        dic_PG = cycle_free_paths_graph(pg_raw, src, tgt, length)
        G_cf, T = dic_PG[length-1]
        try:
            P = sample_many_paths(src, tgt, G_cf, T, num_paths)
            all_paths.extend(P)
        except IndexError:
            pass
    return all_paths


if __name__ == '__main__':
    G_0 = paths_graph.get_edges('korkut_im.sif')
    source = 'BLK_phosphoY389_phosphorylation_PTK2_Y397'
    target = 'EIF4EBP1_T37_p_obs'

    (f_level, b_level)  =  paths_graph.get_reachable_sets(G_0, source, target,
                                              max_depth=10, signed=False)
    length = 8

    pg_raw = paths_graph.paths_graph(G_0, source, target, length, f_level,
                                     b_level, signed=False, target_polarity=0)

    # Append depths to our source and target nodes
    src = (0, source)
    tgt = (length, target)
    dic_PG = cycle_free_paths_graph(pg_raw, src, tgt, length)
    G_cf, T = dic_PG[7]
    P = sample_many_paths(src, tgt, G_cf, T, 1000)
    #print("--- %s seconds ---" % (time.time() - start_time))