import json, statistics, sys
raw = open('/tmp/spectre_extra_corpus/sweep_results.json').read()
idx = raw.find('{\n "rows":')
d = json.loads(raw[idx:])
rows = d['rows']
spec = [r['spec_f1'] for r in rows]
pmu = [r['pmu_f1'] for r in rows]
gap = [r['pmu_f1'] - r['spec_f1'] for r in rows]
print(f'N={len(rows)}')
print(f'mean spec F1 = {statistics.mean(spec):.3f}')
print(f'mean pmu F1 = {statistics.mean(pmu):.3f}')
print(f'mean gap = {statistics.mean(gap):+.3f} (positive = pmu wins)')
print(f'median gap = {statistics.median(gap):+.3f}')
non_zero = [r for r in rows if not (r['spec_f1']==0 and r['pmu_f1']==0)]
spec2 = [r['spec_f1'] for r in non_zero]
pmu2 = [r['pmu_f1'] for r in non_zero]
gap2 = [r['pmu_f1'] - r['spec_f1'] for r in non_zero]
print(f'\n-- excluding zero/zero PDFs --')
print(f'N={len(non_zero)}')
print(f'mean spec F1 = {statistics.mean(spec2):.3f}')
print(f'mean pmu F1 = {statistics.mean(pmu2):.3f}')
print(f'mean gap = {statistics.mean(gap2):+.3f}')
spec_wins = sum(1 for r in rows if r['spec_f1'] > r['pmu_f1'])
pmu_wins = sum(1 for r in rows if r['pmu_f1'] > r['spec_f1'])
ties = sum(1 for r in rows if r['spec_f1'] == r['pmu_f1'])
print(f'\nspec wins: {spec_wins}, pmu wins: {pmu_wins}, ties: {ties}')
print('\n-- ranked by gap (pmu-favoring first) --')
for r in sorted(rows, key=lambda r: -(r['pmu_f1']-r['spec_f1'])):
print(f" {r['label']:18s} gap={r['pmu_f1']-r['spec_f1']:+.2f} spec={r['spec_f1']:.2f} pmu={r['pmu_f1']:.2f}")