-
Notifications
You must be signed in to change notification settings - Fork 5
/
SNA.py
125 lines (86 loc) · 2.28 KB
/
SNA.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# -*- coding: utf-8 -*-
# <nbformat>3.0</nbformat>
# <codecell>
import networkx as nx
import matplotlib.pyplot as plt
# <codecell>
Gws = nx.connected_watts_strogatz_graph(50,6,0.3)
# <codecell>
nx.draw_circular(Gws)
plt.show()
# <codecell>
Gba = nx.barabasi_albert_graph(150,4)
# <codecell>
nx.draw_spring(Gba)
plt.show()
# <codecell>
karate = nx.karate_club_graph()
# <codecell>
nx.draw_spring(karate)
plt.show()
# <codecell>
nameyears = {}
fh = open('booknames.csv','r+')
for line in fh:
year,names,freq = line.split(',')
name1,name2=names.split('-')
if year in nameyears:
if name1<name2:
if name1 in nameyears[year]:
if name2 in nameyears[year][name1]:
nameyears[year][name1][name2] += freq
else:
nameyears[year][name1][name2] = freq
else:
nameyears[year][name1]={name2:freq}
else:
if name2 in nameyears[year]:
if name1 in nameyears[year][name2]:
nameyears[year][name2][name1] += freq
else:
nameyears[year][name2][name1] = freq
else:
nameyears[year][name2]={name1:freq}
else:
if name1<name2:
nameyears[year]={name1:{name2:freq}}
else:
nameyears[year]={name2:{name1:freq}}
# <codecell>
nameyears[2000]
# <codecell>
graphyears = {}
for year, names in graphyears:
G = nx.Graph()
for node, neighbors in names:
for neighbor, weight in neighbors:
G.add_edge(node, neighbor, weight=weight)
graphyears[year] = G
# <codecell>
G2000 = graphyears[2000]
# <codecell>
nx.draw_spring(G2000)
plt.show()
# <codecell>
G2000.degree('michael')
# <codecell>
nx.write_adjlist(karate, 'karateclub_adj.csv')
# <codecell>
for edge in nx.edges_iter(karate):
print edge
# <codecell>
karate_json = {"nodes":[],"links":[]}
for node in nx.nodes_iter(karate):
n = {"name":node, "group":1}
karate_json["nodes"].append(n)
for edge in nx.edges_iter(karate):
e = {"source":edge[0], "target":edge[1], "value":1}
karate_json["links"].append(e)
# <codecell>
print karate_json
# <codecell>
import json
fh = open('karate.json','w')
json.dump(karate_json, fh)
fh.close()
# <codecell>