summaryrefslogtreecommitdiff
path: root/diag/aggregate.py
diff options
context:
space:
mode:
Diffstat (limited to 'diag/aggregate.py')
-rw-r--r--diag/aggregate.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/diag/aggregate.py b/diag/aggregate.py
new file mode 100644
index 0000000..b0f737a
--- /dev/null
+++ b/diag/aggregate.py
@@ -0,0 +1,54 @@
+"""Aggregate multi-seed coloring results -> mean+/-std per (grad_mode, pe, contract)."""
+import glob, json
+import numpy as np
+from collections import defaultdict
+
+R = '/home/yurenh2/rrog/runs'
+
+
+def ms(xs):
+ a = np.array([x for x in xs if x is not None], dtype=float)
+ return f"{a.mean():.3f}±{a.std():.3f} (n={len(a)})" if len(a) else "—"
+
+
+def load(pat):
+ out = []
+ for f in glob.glob(pat):
+ try:
+ out.append(json.load(open(f)))
+ except Exception:
+ pass
+ return out
+
+
+def key(d):
+ return (d.get('conv', 'gin'), d.get('pe'), d.get('grad_mode'), 'ctr' if d.get('contract') else '-')
+
+
+solve, le, ml = defaultdict(list), defaultdict(list), defaultdict(list)
+pk, ls, au, det = defaultdict(list), defaultdict(list), defaultdict(list), defaultdict(list)
+
+for d in load(f"{R}/color_*.json"):
+ if 'solve_rate' in d and d.get('pe') is not None:
+ solve[key(d)].append(d['solve_rate'])
+for d in load(f"{R}/le_color_*.json"):
+ le[key(d)].append(d.get('auroc'))
+ ml[key(d)].append(d.get('mean_lam'))
+for d in load(f"{R}/ptrm_color_*.json"):
+ k = key(d); det[k].append(d.get('det'))
+ s2 = d.get('sigmas', {}).get('0.2')
+ if s2:
+ pk[k].append(s2.get('passk')); ls[k].append(s2.get('lamsel')); au[k].append(s2.get('auroc'))
+
+print("=== best solve_rate (deterministic, EMA) ===")
+for k in sorted(solve, key=str):
+ print(f" {k}: {ms(solve[k])}")
+print("=== LE AUROC(fail|lambda1) ===")
+for k in sorted(le, key=str):
+ print(f" {k}: {ms(le[k])}")
+print("=== LE mean_lambda1 (forced-contraction dose) ===")
+for k in sorted(ml, key=str):
+ print(f" {k}: {ms(ml[k])}")
+print("=== PTRM sigma=0.2 ===")
+for k in sorted(pk, key=str):
+ print(f" {k}: det {ms(det[k])} | pass@K {ms(pk[k])} | lambda-sel {ms(ls[k])} | AUROC {ms(au[k])}")