ad3f95fa39
Relocate the standalone Python scripts from the repo root into the
experiments/ folder of the paper each one belongs to:
plane_depth_sequencing/experiments/
plane_depth_sequencing.py, draw_quad_sequence.py,
draw_quad_sequence_diagram.py, extract_sequence.py,
plane_depth_sequencing_figure.py, quad_sequence_coloring_check.py
colored_edge_flip_classes/experiments/ colored_edge_flip_class_survey.py
colored_pentagon_contractions/experiments/ colored_pentagon_contractions.py
plane_diamond_coloring/experiments/ plane_diamond_coloring.py
Each file that imports lib.* (still in the repo root) or the sibling
plane_depth_sequencing module gets a sys.path shim that prepends the
repo root (computed three levels up) and, where needed, its own dir.
Imports verified to resolve from a neutral working directory.
flip_symmetric_census.py is intentionally left in the root.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
"""Extract sequence data for diagram."""
|
|
import os, sys
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # sibling experiment modules
|
|
from sage.all import graphs # type: ignore
|
|
from sage.misc.randstate import set_random_seed # type: ignore
|
|
from plane_depth_sequencing import (
|
|
quadrilateral_sequencing,
|
|
_quad_vertices,
|
|
_level_edge_of_face,
|
|
_quad_type
|
|
)
|
|
|
|
set_random_seed(42)
|
|
g = graphs.RandomTriangulation(7)
|
|
g.is_planar(set_embedding=True)
|
|
embedding = g.get_embedding()
|
|
faces = g.faces(embedding)
|
|
outer_cycle = [u for u, _ in faces[0]]
|
|
|
|
result = quadrilateral_sequencing(g, outer_cycle)
|
|
sequence = result['sequence']
|
|
move_codes = result['move_codes']
|
|
depth_labelling = result['depth_labelling']
|
|
|
|
move_names = {0: "AD", 1: "LA", 2: "J", 3: "RC"}
|
|
|
|
print("sequence_data = [")
|
|
for i, quad in enumerate(sequence[:4]):
|
|
quad_type = _quad_type(quad, depth_labelling)
|
|
f1, f2 = list(quad)
|
|
level_edge = _level_edge_of_face(f1, depth_labelling)
|
|
e1, e2 = list(level_edge)
|
|
a = next(v for v in f1 if v not in level_edge)
|
|
b = next(v for v in f2 if v not in level_edge)
|
|
ordered_verts = [e1, a, e2, b]
|
|
move = move_names[move_codes[i-1]] if i > 0 else ""
|
|
depths_str = [depth_labelling[v] for v in ordered_verts]
|
|
print(f' {{"vertices": {sorted(_quad_vertices(quad))}, "ordered": {ordered_verts}, "depths": {depths_str}, "move": "Q_{i+1}^{{{move}}}", "type": "{quad_type}"}},')
|
|
print("]")
|