Extract save_operation_sequence function from main script body
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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})"]
|
||||
for step in steps:
|
||||
meta_json = json.dumps(step['meta'])
|
||||
md_lines.append(f"## {step['name']} {meta_json}\n\n})")
|
||||
(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/<seq_id>. 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})"]
|
||||
for step in steps:
|
||||
meta_json = json.dumps(step['meta'])
|
||||
md_lines.append(f"## {step['name']} {meta_json}\n\n})")
|
||||
(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)
|
||||
|
||||
Reference in New Issue
Block a user