def test_detect_events_given_path():
    result_path = os.path.join(CURDIR, 'test/data/cand_trees.pkl')
    cand_trees = pickle.load(open(result_path))
    expected_trees = detect_events(cand_trees, K=5)
    actual_trees = detect_events_given_path(result_path, K=5)
    for at, et in zip(actual_trees, expected_trees):
        assert_equal(sorted(et.edges()), sorted(at.edges()))
def run_with_context(interactions_path, candidate_tree_path, dirname=None, to_original_graph=False, undirected=False):
    if not os.path.exists(dirname):
        os.makedirs(dirname)

    try:
        interactions = json.load(open(interactions_path))
    except ValueError as e:
        print(e)
        interactions = load_json_by_line(interactions_path)

    interactions = IU.clean_interactions(interactions, undirected=undirected)

    output_path = get_output_path(candidate_tree_path, dirname)

    K = 5
    events = detect_events_given_path(candidate_tree_path, K)

    contexted_events = []
    for e in events:
        context_dag = extract_event_context(interactions, e, undirected=undirected)

        if to_original_graph:
            context_dag = convert_to_original_graph(context_dag)
            e = convert_to_original_graph(e)

        contexted_events.append(add_subgraph_specific_attributes_to_graph(context_dag, [(e, {"event": True})]))
    d3_events = [to_d3_graph(ce) for ce in contexted_events]

    print("writing to {}".format(output_path))
    json_dump(d3_events, output_path)
def main():
    import sys
    result_path = sys.argv[1]
    dirname = os.path.basename(result_path).replace('.pkl', '')
    events = detect_events_given_path(result_path, 5)
    # plot_graphs(events, 'figures/{}'.format(dirname))
    plot_events(events, 'figures/original-graph-of-event/{}'.format(dirname))
Exemplo n.º 4
0
def main():
    import sys
    result_path = sys.argv[1]
    dirname = os.path.basename(result_path).replace('.pkl', '')
    events = detect_events_given_path(result_path, 5)
    # plot_graphs(events, 'figures/{}'.format(dirname))
    plot_events(events, 'figures/original-graph-of-event/{}'.format(dirname))
def run(candidate_tree_path,
        k,
        id2people,
        id2interaction,
        dirname=None,
        to_original_graph=False):

    if dirname and not os.path.exists(dirname):
        os.makedirs(dirname)

    output_path = get_output_path(candidate_tree_path, dirname)

    events = detect_events_given_path(candidate_tree_path, k)
    
    # add people and content
    for e in events:
        root = get_roots(e)[0]
        for n in e.nodes_iter():
            e.node[n]['sender'] = id2people[e.node[n]['sender_id']]
            e.node[n]['recipients'] = [id2people[id_]
                                       for id_ in e.node[n]['recipient_ids']]
            # print(id2interaction[n])
            e.node[n]['subject'] = id2interaction[n]['subject']
            e.node[n]['body'] = id2interaction[n]['body']

            for f in ('retweet_count', 'favorite_count'):
                e.node[n][f] = id2interaction[n].get(f)
            
            e.node[n]['body'] = id2interaction[n]['body']
            e.node[n]['root'] = (n == root)
            e.node[n]['datetime'] = str(e.node[n]['datetime'])

        # # some simple clustering
        # assignment = greedy_clustering_on_graph(e)
        # for n in e.nodes_iter():
        #     e.node[n]['cluster_label'] = assignment[n]
            
    if to_original_graph:
        events = map(convert_to_original_graph,
                     events)
        # import pdb; pdb.set_trace()

    d3_events = [to_d3_graph(e)
                 for e in events]

    json_dump(d3_events, output_path)
def run_with_context(interactions_path,
                     candidate_tree_path,
                     dirname=None,
                     to_original_graph=False,
                     undirected=False):
    if not os.path.exists(dirname):
        os.makedirs(dirname)

    try:
        interactions = json.load(open(interactions_path))
    except ValueError as e:
        print(e)
        interactions = load_json_by_line(interactions_path)

    interactions = IU.clean_interactions(interactions,
                                         undirected=undirected)

    output_path = get_output_path(candidate_tree_path, dirname)

    K = 5
    events = detect_events_given_path(candidate_tree_path, K)

    contexted_events = []
    for e in events:
        context_dag = extract_event_context(
            interactions, e,
            undirected=undirected
        )

        if to_original_graph:
            context_dag = convert_to_original_graph(context_dag)
            e = convert_to_original_graph(e)

        contexted_events.append(
            add_subgraph_specific_attributes_to_graph(
                context_dag, [(e, {'event': True})])
        )
    d3_events = [to_d3_graph(ce)
                 for ce in contexted_events]
    
    print('writing to {}'.format(output_path))
    json_dump(d3_events, output_path)