Melikshah/Operational-Harm / scripts /44_scale_report.py
Melikshah's picture
download
raw
1.77 kB
import argparse
import importlib
import json
import sys
from collections import defaultdict
import opharm
from opharm.analysis import rule_coverage_map
from opharm.paths import BENCH, RESULTS, ROOT
sys.path.insert(0, str(ROOT / "scripts"))
sec = importlib.import_module("18_secondary")
ti = importlib.import_module("28_template_intervals")
def rule_effect(rows):
by = defaultdict(dict)
for r in rows:
by[(r["skeleton"], sec.cell(r), r["rollback"])][r["policy"]] = r["label_v2"]
out = {}
for c in sec.CELLS:
items = [{"skeleton": s, "d": d} for (s, cc, _), d in by.items() if cc == c and {"C", "N"} <= set(d)]
out[c] = {"ask_C_minus_N": ti.interval(items, lambda r: float(r["d"]["C"] == "ASK") - float(r["d"]["N"] == "ASK")),
"exec_C_minus_N": ti.interval(items, lambda r: float(r["d"]["C"] == "EXEC_MATCH") - float(r["d"]["N"] == "EXEC_MATCH"))}
return out
def main():
ap = argparse.ArgumentParser()
ap.add_argument("model")
ap.add_argument("--tag", default="main_dev")
ap.add_argument("--split", default="dev")
args = ap.parse_args()
meta = {json.loads(line)["id"]: json.loads(line) for line in open(BENCH / "instances.jsonl")}
rows = [r for r in sec.load(args.model, args.tag, meta, args.split, label=True, final=True) if r["set"] == "main"]
out = {"model": args.model, "tag": args.tag, "split": args.split, "labels": "after continuation of capped replies",
**ti.report(rows, rule_coverage_map("consequence_truth.yaml")), "rule_effect": rule_effect(rows)}
RESULTS.mkdir(exist_ok=True)
path = RESULTS / f"scale_{args.model}_{args.tag}.json"
path.write_text(json.dumps(out, indent=1))
print("wrote", path)
if __name__ == "__main__":
main()

Xet Storage Details

Size:
1.77 kB
·
Xet hash:
e20991da40e656c3eab32af0b11a73534638a1e87c329808a1ab9f7e587872c4

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.