mirror of
https://github.com/kalmarek/SmallHyperbolic
synced 2024-11-23 15:35:27 +01:00
add python script to generate morphisms json
This commit is contained in:
parent
ea4c16c715
commit
bc6792e9c2
@ -1,3 +1,4 @@
|
||||
digraph {
|
||||
"G^{14,14,48}_{0}" -> "G^{14,14,24}_{1}"
|
||||
"G^{14,14,48}_{0}" -> "G^{14,14,16}_{1}"
|
||||
"G^{14,14,48}_{1}" -> "G^{14,14,24}_{0}"
|
||||
@ -302,3 +303,4 @@
|
||||
"G^{54,54,54}_{2}" -> "G^{18,54,54}_{0}"
|
||||
"G^{54,54,54}_{2}" -> "G^{18,54,54}_{8}"
|
||||
"G^{54,54,54}_{2}" -> "G^{18,54,54}_{2}"
|
||||
}
|
||||
|
41
scripts/morphisms/connected_components.py
Normal file
41
scripts/morphisms/connected_components.py
Normal file
@ -0,0 +1,41 @@
|
||||
import networkx
|
||||
import json
|
||||
import os
|
||||
|
||||
DATA_DIR = os.path.join("..", "..", "data")
|
||||
|
||||
MORPHISMS_FILE = os.path.join(DATA_DIR, "morphisms.dot")
|
||||
MORPHISMS_JSON = os.path.join(DATA_DIR, "triangle_groups_morphisms.json")
|
||||
|
||||
def level(G, node):
|
||||
parents = list(G.predecessors(node))
|
||||
if len(parents) == 0:
|
||||
return 0
|
||||
else:
|
||||
return 1 + max([level(G, n) for n in parents])
|
||||
|
||||
def nodes_from_component(G, cc, graph_json):
|
||||
subG = networkx.induced_subgraph(G, cc)
|
||||
assert networkx.is_weakly_connected(subG)
|
||||
|
||||
root = [n for n,d in subG.in_degree() if d==0][0]
|
||||
|
||||
for node in graph_json["nodes"]:
|
||||
if node["id"] in subG:
|
||||
print(node)
|
||||
n = node["id"]
|
||||
node["level"] = level(G, n)
|
||||
node["component_id"] = root
|
||||
|
||||
return graph_json
|
||||
|
||||
G = networkx.nx_pydot.read_dot(MORPHISMS_FILE)
|
||||
G_json = networkx.node_link_data(G)
|
||||
G_components = networkx.weakly_connected_components(G)
|
||||
|
||||
for cc in G_components:
|
||||
nodes_from_component(G, cc, G_json)
|
||||
|
||||
with open(MORPHISMS_JSON, "w") as file:
|
||||
print("writing to ", MORPHISMS_JSON, "\n")
|
||||
json.dump(G_json, file, indent=4)
|
Loading…
Reference in New Issue
Block a user