-
Notifications
You must be signed in to change notification settings - Fork 1
/
football_db.py
37 lines (27 loc) · 1.02 KB
/
football_db.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
#### Load and show football graph
import urllib.request
import io
import zipfile
import matplotlib.pyplot as plt
import networkx as nx
#Link to the dataset
url = "http://www-personal.umich.edu/~mejn/netdata/football.zip"
sock = urllib.request.urlopen(url) # open URL
s = io.BytesIO(sock.read()) # read into BytesIO "file"
sock.close()
zf = zipfile.ZipFile(s) # zipfile object
txt = zf.read("football.txt").decode() # read info file
gml = zf.read("football.gml").decode() # read gml data
# throw away bogus first line with # from mejn files
gml = gml.split("\n")[1:]
G_foot = nx.parse_gml(gml) # parse gml data
print(txt)
# print degree for each team - number of games
for n, d in G_foot.degree():
print(f"{n:20} {d:2}")
options = {"node_color": "black", "node_size": 50, "linewidths": 0, "width": 0.1}
pos = nx.spring_layout(G_foot, seed=1969) # Seed for reproducible layout
nx.draw(G_foot, pos, **options)
plt.show()
#### Initialize randomly with 12 spins/categories
init_G_football = random_initialization(G_foot,12)