ui-test-vision-2b-alpha / code /scripts /record_split.py
yuta24's picture
v0.1.0-alpha: PyTorch LoRA + heads, code, model card
e379257 verified
Raw History Blame Contribute Delete
1.22 kB
"""Write a JSON record of a train/eval split: ids and per-scenario counts per file, plus which scenarios are missing.
usage: python scripts/record_split.py out.json name1=file1.jsonl name2=file2.jsonl ...
"""
import json, sys
from collections import Counter
out, specs = sys.argv[1], sys.argv[2:]
res = {}
for s in specs:
name, path = s.split("=", 1)
with open(path, encoding="utf-8") as f:
rows = [json.loads(l) for l in f if l.strip()]
sc = Counter((r.get("meta") or {}).get("scenario") or "?" for r in rows)
res[name] = {"path": path, "n": len(rows), "n_with_box_questions": sum(any(q.get("type") == "box" for q in r["questions"].values()) for r in rows),
"scenarios": dict(sorted(sc.items())), "ids": [r["id"] for r in rows]}
allsc = set().union(*(set(v["scenarios"]) for v in res.values()))
for v in res.values():
v["missing_scenarios"] = sorted(allsc - set(v["scenarios"]))
with open(out, "w", encoding="utf-8", newline="\n") as f:
json.dump(res, f, indent=1, ensure_ascii=False)
print(json.dumps({k: {"n": v["n"], "box": v["n_with_box_questions"], "n_scen": len(v["scenarios"]), "missing": v["missing_scenarios"]} for k, v in res.items()}))