"""Recalculate published aggregate results from the accompanying result ledger.

Download selected-results.csv and snapshot.json to the same folder, then run:
    python3 calculation.py
Eligibility flags preserve the article's source/extraction checks. This does
not independently re-OCR the reports or establish physical-test independence.
"""
from pathlib import Path
import csv,json,statistics
root=Path(__file__).resolve().parent
rows=list(csv.DictReader((root/'selected-results.csv').open()))
snapshot=json.loads((root/'snapshot.json').read_text())
purity=[float(r['purity_pct']) for r in rows if not r['article_purity_exclusion']]
quantity=[float(r['deviation_vs_label_pct']) for r in rows if not r['strict_quantity_exclusion']]
result={'retained_results':len(rows),'purity_n':len(purity),'median_purity':statistics.median(purity),'purity_at_least_99':sum(v>=99 for v in purity),'quantity_n':len(quantity),'quantity_below_90_percent_of_label':sum(v < -10 for v in quantity),'quantity_within_10_percent_of_label':sum(-10<=v<=10 for v in quantity),'quantity_above_110_percent_of_label':sum(v>10 for v in quantity)}
assert len(rows)==snapshot['tirzepatide_retained_results']
assert len(purity)==snapshot['article_purity']['n']
assert statistics.median(purity)==snapshot['article_purity']['median']
assert sum(v>=99 for v in purity)==snapshot['article_purity']['at_least_99']
assert len(quantity)==snapshot['strict_quantity']['n']
assert result['quantity_within_10_percent_of_label']==snapshot['strict_quantity']['on_target']
assert result['quantity_below_90_percent_of_label']==snapshot['strict_quantity']['under']
assert result['quantity_above_110_percent_of_label']==snapshot['strict_quantity']['over']
print(json.dumps(result,indent=2))
