nepatest_popbabel / scripts / k_core.py @ 60ba786f
History | View | Annotate | Download (1.19 KB)
1 |
#!/usr/bin/env python
|
---|---|
2 |
import networkx as nx |
3 |
import sys |
4 |
from matplotlib import pyplot as plt |
5 |
from pprint import pprint |
6 |
import sys |
7 |
import code |
8 |
|
9 |
fname=sys.argv[1]
|
10 |
if(fname.endswith(".edges")): |
11 |
g = nx.read_weighted_edgelist(fname) |
12 |
elif(fname.endswith(".graphml")): |
13 |
g = nx.read_graphml(fname, node_type=int)
|
14 |
loads=nx.load_centrality(g,normalized=False,weight='weight') |
15 |
|
16 |
g.remove_edges_from(g.selfloop_edges()) |
17 |
c = nx.k_core(g, 2)
|
18 |
|
19 |
|
20 |
|
21 |
a = [n for n in nx.articulation_points(c)] |
22 |
|
23 |
fail_candidates = [ n for n in c.nodes() if n not in a] |
24 |
|
25 |
|
26 |
toFails={} |
27 |
for n in fail_candidates: |
28 |
gg = g.copy() |
29 |
gg.remove_node(n) |
30 |
comp = list(nx.connected_components(gg))
|
31 |
#print n
|
32 |
#pprint(comp)
|
33 |
isolated_nodes = [x for component in comp[1:] for x in component] |
34 |
#code.interact(local=dict(globals(), **locals()))
|
35 |
#print "XX", isolated_nodes
|
36 |
if (len(isolated_nodes)==0): |
37 |
if (loads[n]>0): |
38 |
toFails[n]=loads[n] |
39 |
|
40 |
|
41 |
#pprint(sorted(toFails.items(), key=lambda x:x[1], reverse=True))
|
42 |
print fname, "size: ",len(g.nodes()) |
43 |
for e in sorted(toFails.items(), key=lambda x:x[1], reverse=True): |
44 |
sys.stdout.write(str(e[0])+",") |
45 |
print "" |
46 |
print "#nf", len(toFails) |
47 |
|
48 |
'''nx.draw(g)
|
49 |
plt.show()
|
50 |
nx.draw(c)
|
51 |
plt.show()'''
|
52 |
|
53 |
|