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)
|
_, _, initial_cid = save_colored_graph(G, starting_coloring)
|
||||||
G.is_planar(set_embedding=True, set_pos=True)
|
G.is_planar(set_embedding=True, set_pos=True)
|
||||||
|
|
||||||
steps = reduce(G, starting_coloring, initial_cid)
|
|
||||||
def strip_graphs(obj: Any) -> Any:
|
def strip_graphs(obj: Any) -> Any:
|
||||||
if isinstance(obj, dict):
|
if isinstance(obj, dict):
|
||||||
return {k: strip_graphs(v) for k, v in obj.items() if not isinstance(v, Graph)}
|
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 [strip_graphs(v) for v in obj]
|
||||||
return 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:
|
def plot_to_data_uri(g: Graph, coloring: VertexColoring) -> str:
|
||||||
import tempfile
|
import tempfile
|
||||||
vertex_colors: defaultdict[str, list[Any]] = defaultdict(list)
|
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()
|
png_bytes = Path(f.name).read_bytes()
|
||||||
return f"data:image/png;base64,{base64.b64encode(png_bytes).decode()}"
|
return f"data:image/png;base64,{base64.b64encode(png_bytes).decode()}"
|
||||||
|
|
||||||
md_lines = [f"## start\n\n})"]
|
def save_operation_sequence(steps: list[Step], g: Graph, coloring: VertexColoring) -> str:
|
||||||
for step in steps:
|
"""Save steps as JSON and Markdown under data/operations/<seq_id>. Returns the sequence id."""
|
||||||
meta_json = json.dumps(step['meta'])
|
op_seq_id = operation_sequence_id(steps)
|
||||||
md_lines.append(f"## {step['name']} {meta_json}\n\n})")
|
op_dir = DIR / "data" / "operations" / op_seq_id
|
||||||
(op_dir / "colored_pentagon_contractions.md").write_text("\n".join(md_lines) + "\n")
|
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