/
pageRank.py
31 lines (27 loc) · 1007 Bytes
/
pageRank.py
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
import sys
import networkx as nx
import json
if __name__ == '__main__':
if sys.argv.__len__()<2:
print('The format is "python pageRank.py data.edgelist [{1:2}]"')
else:
filename = sys.argv[1]
if filename.find('weight')==-1:
graph = nx.read_edgelist(filename)
else:
graph = nx.read_weighted_edgelist(filename)
# p = PageRank(graph, isDirected)
# p.rank()
# sorted_r = sorted(p.ranks.items(), key=operator.itemgetter(1), reverse=True)
if sys.argv.__len__()==3:
personalization=sys.argv[2]
vec=eval(personalization)
pr=nx.pagerank(graph,personalization=vec)
else:
pr=nx.pagerank(graph)
pagerank = sorted(pr.items(), key=lambda item: item[1], reverse=True)
# pagerank = sorted(pr.items(), key=lambda item: '{:.3f}'.format(item[1]), reverse=True)
# data = [tuple((d[0], '{:.6f}'.format(d[1]))) for d in pagerank]
# output = dict(data)
jsonStr = json.dumps(pagerank)
print(jsonStr)