-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisualize_instances.py
84 lines (60 loc) · 2.11 KB
/
visualize_instances.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
from base import *
from cigam import *
from utils import *
from hypergraph import *
import hypernetx as hnx
cigam = CIGAM(H=[0.25, 1], c=[1.5, 2.5], b=3)
n = 100
H, heights = cigam.sample(n, return_ranks=False, method='naive')
G = H.clique_decomposition()
pos = {}
nodecolor = []
nodesize = []
cmap = plt.get_cmap('magma')
for i, h in enumerate(heights):
theta = np.random.uniform() * 2 * np.pi
pos[i] = (h * np.cos(theta), h * np.sin(theta))
nodecolor.append(h)
nodesize.append(100 * (1-h))
edgecolor = []
edgesize = []
for (u, v) in G.edges():
edgecolor.append(-np.log(min(heights[u], heights[v])))
edgesize.append(2 * (1 - min(heights[u], heights[v])))
ax = plt.figure(figsize=(10, 10))
nx.draw_networkx_nodes(G, pos=pos, node_color=nodecolor, node_size=nodesize)
nx.draw_networkx_edges(G, pos=pos, edge_color=edgecolor, width=edgesize, alpha=0.3)
ax.set_facecolor('white')
plt.axis('off')
plt.grid(b=None)
plt.savefig('instance_2_uniform.png')
cigam.order = 3
n = 10
H, heights = cigam.sample(n, return_ranks=False, method='naive')
simplices = {}
simplices_colors = []
pos = {}
for i, h in enumerate(heights):
theta = np.random.uniform() * 2 * np.pi
pos[str(i)] = (h * np.cos(theta), h * np.sin(theta))
for i, edge in enumerate(H.edges()):
simplices[i] = tuple([str(x) for x in edge.to_index(dtype=tuple)])
simplices_colors.append(-np.log(heights[edge.to_index(dtype=np.array)].min()))
simplices_colors = np.array(simplices_colors)
H_hnx = hnx.Hypergraph(simplices)
norm = plt.Normalize(simplices_colors.min(), simplices_colors.max())
norm_nodes = plt.Normalize(heights.min(), heights.max())
ax = plt.figure(figsize=(10, 10))
hnx.drawing.draw(H_hnx,
label_alpha=0,
pos=pos,
edges_kwargs={
'facecolors': cmap(norm(simplices_colors))*(1, 1, 1, 0.2),
'edgecolors': 'black',
'linewidths': 1
},
nodes_kwargs={
'facecolor' : cmap(norm_nodes(heights))*(1, 1, 1, 0.2)
},
)
plt.savefig('instance_3_uniform.png')