tranth3truong's picture
Deploy public Scribe-only CarePath Space
cc678b9
Raw
History Blame Contribute Delete
2.03 kB
"""CLI: acceptance gate for the trained GEC adapter (exit non-zero on REJECT).
Optional ``--safety-report`` enforces frozen-fixture drug-name and dosage
non-regression before a serving bundle may be exported.
python scribe/training/scripts/gate.py --report artifacts/evaluations/darag_wer.json
"""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "scribe" / "training"))
sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "scribe"))
from gec.cliutil import configure_stdout # noqa: E402
configure_stdout()
from gec.config import GATE_SPLITS # noqa: E402
from gec.gate import run_gate # noqa: E402
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--report", required=True, help="WER report JSON from evaluate.py")
parser.add_argument("--candidate", default="gec_pred")
parser.add_argument("--baselines", nargs="+", default=["raw_asr", "corrected_text"])
parser.add_argument("--splits", nargs="+", default=list(GATE_SPLITS))
parser.add_argument("--number-unit-epsilon", type=float, default=0.02)
parser.add_argument("--safety-report", default=None, help="stratified frozen-eval JSON report")
parser.add_argument("--safety-split", default="frozen")
args = parser.parse_args()
report = json.loads(Path(args.report).read_text(encoding="utf-8"))
safety_report = (
json.loads(Path(args.safety_report).read_text(encoding="utf-8"))
if args.safety_report
else None
)
accepted, lines = run_gate(
report,
candidate=args.candidate,
baselines=tuple(args.baselines),
splits=tuple(args.splits),
number_unit_epsilon=args.number_unit_epsilon,
safety_report=safety_report,
safety_split=args.safety_split,
)
print("\n".join(lines))
return 0 if accepted else 1
if __name__ == "__main__":
raise SystemExit(main())