"""Registered scorer (protocol-national-2025-women.json): women's 2025 life expectancy from four national
statistics offices against the frozen forecast gain added to each office's own 2005 value.
Usage: score-national-2025.py (run from experiment/lives)"""
import json, hashlib, subprocess, sys
P = json.load(open("protocol-national-2025-women.json"))
for f, h in P["frozen_sha256"].items():
    assert hashlib.sha256(open(f, "rb").read()).hexdigest() == h, f
F = {r["country"]: r["female"] for r in json.load(open("forecast-e0-women-v2-2005.json"))["rows"]}
N05 = json.load(open("national-e0-women-2005.json"))["values"]
N25 = json.loads(subprocess.run([sys.executable, "national_e0.py", "2025"], capture_output=True, text=True, check=True).stdout)["values"]
rows, errs = {}, []
for c in P["countries"]:
    pred = N05[c] + (F[c]["forecast"] - F[c]["atOrigin"]); e = pred - N25[c]; errs.append(e)
    rows[c] = {"e2005": N05[c], "predicted": round(pred, 2), "e2025": N25[c], "error": round(e, 2)}
mae = sum(abs(e) for e in errs) / len(errs)
res = {"countries": rows, "female": {"n": len(errs), "mae": round(mae, 3), "meanSigned": round(sum(errs) / len(errs), 3), "met": mae <= P["primary"]["bar_years"], "stretch": mae <= P["primary"]["stretch_years"]}}
res["primary_met"] = res["female"]["met"]
json.dump(res, open("results-national-2025-women.json", "w"), indent=1)
print(json.dumps(res["female"]), "primary_met", res["primary_met"])
