Files
hypertower/scripts/output_analysis/visualizations/build_10x5_aggregate_panel.py
T
rpotter6298 786457b30d update 3-19
2026-03-19 11:18:58 +01:00

67 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
Assemble the 10×5 aggregate comparison panel.
Layout (3 rows × 2 cols):
col 0 = binary, col 1 = multiclass
row 0: mean ROC curve
row 1: rep stability
row 2: holdout stability
Usage
-----
python scripts/output_analysis/visualizations/build_10x5_aggregate_panel.py \
--run-dir analysis_data/pipeline_10x5 \
--out analysis_data/pipeline_10x5/aggregate/aggregate_panel.png
"""
from __future__ import annotations
import argparse
from pathlib import Path
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# (row, col, rel_path, label)
CELLS = [
(0, 0, "aggregate/binary_roc_mean.png", "Binary — Mean ROC"),
(0, 1, "aggregate/multiclass_roc_mean.png", "Multiclass — Mean ROC"),
(1, 0, "aggregate/binary_rep_stability.png", "Binary — Rep stability"),
(1, 1, "aggregate/multiclass_rep_stability.png", "Multiclass — Rep stability"),
(2, 0, "aggregate/binary_holdout_stability.png", "Binary — Holdout stability"),
(2, 1, "aggregate/multiclass_holdout_stability.png", "Multiclass — Holdout stability"),
]
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--run-dir", default="analysis_data/pipeline_10x5")
ap.add_argument("--out", default=None)
args = ap.parse_args()
run_dir = Path(args.run_dir)
out = Path(args.out) if args.out else run_dir / "aggregate" / "aggregate_panel.png"
fig = plt.figure(figsize=(16, 18))
gs = fig.add_gridspec(3, 2, hspace=0.06, wspace=0.04)
for row, col, rel, label in CELLS:
ax = fig.add_subplot(gs[row, col])
img = mpimg.imread(str(run_dir / rel))
ax.imshow(img)
ax.axis("off")
ax.set_title(label, fontsize=11, pad=5)
out.parent.mkdir(parents=True, exist_ok=True)
fig.savefig(out, dpi=150, bbox_inches="tight")
plt.close(fig)
print(f"Saved → {out}")
if __name__ == "__main__":
main()