#!/usr/bin/env python """Step 12 — Phase 6 robustness suite (hedonic, hazards, AMLI variants; Holm; Table 9). Usage: .venv/bin/python scripts/12_robustness.py [hedonic|hazards|amli|all] (default all) Writes results/robustness/*.{json,csv} and paper/tables/tab09_robustness.tex; logs runtime per block. """ import json, sys, time from ucml import robustness as R t0 = time.time() what = sys.argv[1] if len(sys.argv) > 1 else "all" if what == "all": S = R.run() print(json.dumps({"seconds_total": S["seconds_total"], "hedonic_s": S["hedonic"]["seconds"], "hazards_s": S["hazards"]["seconds"], "amli_s": S["amli"]["seconds"]}, indent=2)) else: fn = {"hedonic": R.run_hedonic, "hazards": R.run_hazards, "amli": R.run_amli, "holm": R.holm_primary_tests, "table": R.write_table}[what] out = fn() print(json.dumps(out if not hasattr(out, "to_dict") else out.to_dict(orient="records"), indent=2, default=float)[:6000]) print(f"[{what}] {time.time() - t0:.1f} s")