diff --git a/colored_pentagon_reduction/example.py b/colored_pentagon_reduction/example.py index 4bf20e5..c494637 100644 --- a/colored_pentagon_reduction/example.py +++ b/colored_pentagon_reduction/example.py @@ -276,7 +276,6 @@ starting_coloring = {v: i for i, cls in enumerate(starting_coloring_classes) for _, _, initial_cid = save_colored_graph(G, starting_coloring) G.is_planar(set_embedding=True, set_pos=True) -steps = reduce(G, starting_coloring, initial_cid) def strip_graphs(obj: Any) -> Any: if isinstance(obj, dict): return {k: strip_graphs(v) for k, v in obj.items() if not isinstance(v, Graph)} @@ -284,14 +283,6 @@ def strip_graphs(obj: Any) -> Any: return [strip_graphs(v) for v in obj] return obj -print("\nSteps:") -print(json.dumps(strip_graphs(steps), indent=2)) - -op_seq_id = operation_sequence_id(steps) -op_dir = DIR / "data" / "operations" / op_seq_id -op_dir.mkdir(parents=True, exist_ok=True) -(op_dir / "colored_pentagon_contractions.json").write_text(json.dumps(strip_graphs(steps), indent=2)) - def plot_to_data_uri(g: Graph, coloring: VertexColoring) -> str: import tempfile vertex_colors: defaultdict[str, list[Any]] = defaultdict(list) @@ -305,8 +296,20 @@ def plot_to_data_uri(g: Graph, coloring: VertexColoring) -> str: png_bytes = Path(f.name).read_bytes() return f"data:image/png;base64,{base64.b64encode(png_bytes).decode()}" -md_lines = [f"## start\n\n![start]({plot_to_data_uri(G, starting_coloring)})"] -for step in steps: - meta_json = json.dumps(step['meta']) - md_lines.append(f"## {step['name']} {meta_json}\n\n![b]({plot_to_data_uri(step['g_prime'], step['coloring_prime'])})") -(op_dir / "colored_pentagon_contractions.md").write_text("\n".join(md_lines) + "\n") +def save_operation_sequence(steps: list[Step], g: Graph, coloring: VertexColoring) -> str: + """Save steps as JSON and Markdown under data/operations/. Returns the sequence id.""" + op_seq_id = operation_sequence_id(steps) + op_dir = DIR / "data" / "operations" / op_seq_id + op_dir.mkdir(parents=True, exist_ok=True) + (op_dir / "colored_pentagon_contractions.json").write_text(json.dumps(strip_graphs(steps), indent=2)) + md_lines = [f"## start\n\n![start]({plot_to_data_uri(g, coloring)})"] + for step in steps: + meta_json = json.dumps(step['meta']) + md_lines.append(f"## {step['name']} {meta_json}\n\n![b]({plot_to_data_uri(step['g_prime'], step['coloring_prime'])})") + (op_dir / "colored_pentagon_contractions.md").write_text("\n".join(md_lines) + "\n") + return op_seq_id + +steps = reduce(G, starting_coloring, initial_cid) +print("\nSteps:") +print(json.dumps(strip_graphs(steps), indent=2)) +save_operation_sequence(steps, G, starting_coloring)