#!/usr/bin/env python3 import argparse import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from pii.evaluation import fit_calibration, read_jsonl, write_json if __name__ == '__main__': p = argparse.ArgumentParser(description='Fit pooled isotonic calibration and independent experimental F1 threshold') for name in ('fit-gold', 'fit-predictions', 'select-gold', 'select-predictions', 'output'): p.add_argument('--' + name, required=True) args = p.parse_args() artifact = fit_calibration(*(read_jsonl(getattr(args, key)) for key in ('fit_gold', 'fit_predictions', 'select_gold', 'select_predictions'))) write_json(args.output, artifact) print(f"Saved calibration: {args.output}; experimental threshold={artifact['threshold']}")