summaryrefslogtreecommitdiffstats
path: root/ic_experiments/old_stuff/distances.py
blob: 1834d36e5e0b8dfde080434f6090781002e749a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import networkx as nx
import sys
from collections import Counter


def build_graph(filename):
    g = nx.Graph()
    with open(filename) as fh:
        fh.readline()
        for line in fh:
            i, j = map(lambda x: int(float(x)), line.strip().split(",")[1:])
            g.add_edge(i, j)
    return g


def distances(g):
    victims = set()
    with open("vics.csv") as fh:
        fh.readline()
        for line in fh:
            victims.add(int(line.strip().split(",")[1]))
    level = 0
    seen = {}
    nextlevel = {v: 1 for v in victims}
    while level <= 3:
        thislevel = nextlevel
        nextlevel = {}
        for v in thislevel:
            if v not in seen:
                seen[v] = level
                nextlevel.update(g[v])
        level += 1
    return seen


if __name__ == "__main__":
    g = build_graph(sys.argv[1])
    print g.number_of_nodes(), g.number_of_edges()
    cnt = Counter()
    for v, d in distances(g).iteritems():
        cnt[d] += 1
    print cnt.most_common()