Files
didericis ad3f95fa39 Move root experiment scripts into their papers' experiments/ folders
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>
2026-05-22 10:40:39 -04:00

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("]")