"""Overlay the matlab_feat_n48 starg_ridge / starg_neural rows on top of
the existing summary.csv. Used to regenerate the Pareto figure with the
corrected ★_G numbers without invalidating the rest of the table.
"""
from __future__ import annotations
import csv
NEW_ROWS = [
# method, target, r2_mean, r2_std, rmse, rmse_std, mae, mae_std, n_params, n_seeds
("starg_ridge", "gap", 0.482204, 0.000734, 0.0, 0.0, 0.0, 0.0, 144, 3),
("starg_ridge", "alpha", 0.908501, 0.003071, 0.0, 0.0, 0.0, 0.0, 144, 3),
("starg_ridge", "mu", 0.469663, 0.003399, 0.0, 0.0, 0.0, 0.0, 144, 3),
("starg_ridge", "zpve", 0.998442, 0.000011, 0.0, 0.0, 0.0, 0.0, 144, 3),
("starg_neural", "gap", 0.567710, 0.003452, 0.0, 0.0, 0.0, 0.0, 62625, 3),
("starg_neural", "alpha", 0.943973, 0.003867, 0.0, 0.0, 0.0, 0.0, 62625, 3),
("starg_neural", "mu", 0.553551, 0.008980, 0.0, 0.0, 0.0, 0.0, 62625, 3),
("starg_neural", "zpve", 0.996931, 0.001942, 0.0, 0.0, 0.0, 0.0, 62625, 3),
]
REPLACE_KEYS = {(r[0], r[1]): r for r in NEW_ROWS}
with open("results/summary.csv") as fp:
rows = list(csv.reader(fp))
header, body = rows[0], rows[1:]
out = [header]
for r in body:
key = (r[0], r[1])
if key in REPLACE_KEYS:
new = REPLACE_KEYS[key]
out.append([str(x) for x in new])
else:
out.append(r)
with open("results/summary.csv", "w", newline="") as fp:
w = csv.writer(fp)
w.writerows(out)
print(f"[ok] overlaid {len(REPLACE_KEYS)} ★_G rows in results/summary.csv")