From 4b3e0360664aad0af201d06ba5c8c28319a9515a Mon Sep 17 00:00:00 2001 From: Simon Daigler Date: Wed, 30 Sep 2026 01:05:36 +0200 Subject: [PATCH 01/33] test: freeze the mini-dataset outputs of aa5daa5 as golden references (G2) Histograms of hist, estimate (fake factors and an ABCD variant), the datacard text and shapes, and the ML-export frames, stored as exact floats. The rebuilt core must reproduce them bitwise. --- tests/golden/datacard_mt.txt | 20 + tests/golden/make_golden_aa5daa5.py | 83 + tests/golden/mini_golden.json | 13844 ++++++++++++++++++++++++++ tests/test_golden.py | 109 + 4 files changed, 14056 insertions(+) create mode 100644 tests/golden/datacard_mt.txt create mode 100644 tests/golden/make_golden_aa5daa5.py create mode 100644 tests/golden/mini_golden.json create mode 100644 tests/test_golden.py diff --git a/tests/golden/datacard_mt.txt b/tests/golden/datacard_mt.txt new file mode 100644 index 0000000..2a307c5 --- /dev/null +++ b/tests/golden/datacard_mt.txt @@ -0,0 +1,20 @@ +imax * number of bins +jmax * number of processes minus 1 +kmax * number of nuisance parameters +------------------------------------------------------------ +shapes * htt_mt_1_2018 common/htt_input_2018.root htt_mt_1_2018/$PROCESS htt_mt_1_2018/$PROCESS_$SYSTEMATIC +shapes * htt_mt_2_2018 common/htt_input_2018.root htt_mt_2_2018/$PROCESS htt_mt_2_2018/$PROCESS_$SYSTEMATIC +------------------------------------------------------------ +bin htt_mt_1_2018 htt_mt_2_2018 +observation 118.0 81.0 +------------------------------------------------------------ +bin htt_mt_1_2018 htt_mt_1_2018 htt_mt_1_2018 htt_mt_1_2018 htt_mt_2_2018 htt_mt_2_2018 htt_mt_2_2018 htt_mt_2_2018 +process HH ZTT ZL jetFakes HH ZTT ZL jetFakes +process 0 1 2 3 0 1 2 3 +rate -1 -1 -1 -1 -1 -1 -1 -1 +------------------------------------------------------------ +lumi lnN 1.025 1.025 1.025 1.025 1.025 1.025 1.025 1.025 +zjXsec lnN - 1.02 1.02 - - 1.02 1.02 - +ffNorm_mt lnN - - - 1.1 - - - 1.1 +CMS_pu shape 1 1 1 - 1 1 1 - +* autoMCStats 0 diff --git a/tests/golden/make_golden_aa5daa5.py b/tests/golden/make_golden_aa5daa5.py new file mode 100644 index 0000000..96376c9 --- /dev/null +++ b/tests/golden/make_golden_aa5daa5.py @@ -0,0 +1,83 @@ +"""G2: golden outputs of the core mini dataset, frozen with core aa5daa5 (run once; needs that core on PYTHONPATH). + +Writes /mini_golden.json (every histogram as exact floats: edges, values, variances), the datacard text +/datacard_mt.txt, the ML-export frames and the skim contracts of the old manifests. +""" +import dataclasses +import json +import sys +import tempfile +from pathlib import Path + +import numpy as np +import pandas as pd +import uproot + +from shapesmith.config import FriendConfig, NtupleConfig, RunConfig +from shapesmith.datacards import run_datacards +from shapesmith.estimators import run_estimate +from shapesmith.histograms import run_hist +from shapesmith.ml_export import run_ml_export +from shapesmith.model import Estimator, Region +from shapesmith.skim import run_skim +from shapesmith.testing import make_mini_dataset +from tests.mini_analysis import build + + +def digest(hset) -> dict: + return {key.path: [h.edges.tolist(), h.values.tolist(), h.variances.tolist()] for key, h in hset.items()} + + +def abcd_variant(analysis): + channel = analysis.channel("mt") + anti = "(id_tight < 0.5) & (id_loose > 0.5)" + regions = channel.regions + ( + Region("abcd_anti_iso", replace_cuts={"tau_iso": anti}), + Region("abcd_same_sign_anti_iso", replace_cuts={"os": "(q_1 * q_2) > 0", "tau_iso": anti}), + ) + estimator = Estimator("abcd", {"B": "abcd_anti_iso", "C": "same_sign", "D": "abcd_same_sign_anti_iso"}, ("ZTT", "ZL"), "QCD") + return dataclasses.replace(analysis, channels={"mt": dataclasses.replace(channel, regions=regions)}, estimator=estimator) + + +def main(out: Path) -> None: + out.mkdir(parents=True, exist_ok=True) + tmp = Path(tempfile.mkdtemp()) + make_mini_dataset(tmp / "data", n_files=2, n_events=400) + config = RunConfig( + analysis="tests.mini_analysis:build", era="2018", channels=["mt"], switches={"jet_fakes": "ff", "embedding": False}, + ntuples=NtupleConfig(base=str(tmp / "data" / "CROWNRun"), friends=[FriendConfig(base=str(tmp / "data" / "CROWNFriends" / "nn"))]), + skim_dir=tmp / "skims", output_dir=tmp / "out", ml_dir=tmp / "ml", workers=1, + ) + analysis = build(config) + run_skim(config, analysis) + golden = {} + control = run_hist(config, analysis, ["mt"], True, None, True, None, tmp / "out" / "control_shapes.root", force=True) + golden["control_hist"] = digest(control) + run_estimate(control, analysis, ["mt"]) + golden["control_estimate"] = digest(control) + regions = run_hist(config, analysis, ["mt"], True, None, True, None, tmp / "out" / "regions.root", force=True, regions=["all"]) + golden["control_regions_all"] = digest(regions) + shapes = run_hist(config, analysis, ["mt"], False, None, True, None, tmp / "out" / "shapes.root", force=True) + golden["shapes_hist"] = digest(shapes) + run_estimate(shapes, analysis, ["mt"]) + golden["shapes_estimate"] = digest(shapes) + cards = run_datacards(shapes, analysis, {"mt": ["mt"]}, tmp / "out" / "datacards", True, 1.0) + (out / "datacard_mt.txt").write_text(cards["mt"].read_text()) + with uproot.open(tmp / "out" / "datacards" / "mt" / "common" / "htt_input_2018.root") as f: + golden["datacard_shapes"] = {name: [f[name].axis().edges().tolist(), f[name].values().tolist(), f[name].variances().tolist()] for name, cls in sorted(f.classnames(recursive=True, cycle=False).items()) if cls.startswith("TH1")} + abcd = abcd_variant(analysis) + abcd_hset = run_hist(config, abcd, ["mt"], True, None, False, None, tmp / "out" / "abcd.root", force=True) + run_estimate(abcd_hset, abcd, ["mt"]) + golden["abcd_control_estimate"] = digest(abcd_hset) + ml = {} + for path in run_ml_export(config, analysis, ["mt"]): + frame = pd.read_feather(path) + ml[path.name] = {"|".join(column): np.asarray(frame[column]).astype(np.float64).tolist() for column in frame.columns} + golden["ml_export"] = ml + golden["skim_contracts"] = {p.parent.name: json.loads(p.read_text())["contract"] for p in sorted((tmp / "skims" / "mt").glob("*/manifest.json"))} + (out / "mini_golden.json").write_text(json.dumps(golden, indent=0, sort_keys=True)) + print({name: len(value) for name, value in golden.items()}) + + +if __name__ == "__main__": + main(Path(sys.argv[1])) diff --git a/tests/golden/mini_golden.json b/tests/golden/mini_golden.json new file mode 100644 index 0000000..c2ddcd9 --- /dev/null +++ b/tests/golden/mini_golden.json @@ -0,0 +1,13844 @@ +{ +"abcd_control_estimate": { +"mt_inclusive/HH#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.096885644964999, +6.402960946368877, +16.95133117658866 +], +[ +1.7083417449706328, +2.0728027022913293, +4.05805403452219 +] +], +"mt_inclusive/QCD#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.477220931679314, +56.5776975093232, +0.0 +], +[ +714.049212516072, +747.2114688273438, +1263.017189885489 +] +], +"mt_inclusive/ZL#abcd_anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.928973810156887, +7.03885685197252, +9.54117518046865 +], +[ +10.260535959795192, +7.145847303301416, +9.266142356465682 +] +], +"mt_inclusive/ZL#abcd_same_sign_anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +5.765341984929156, +3.0446253676462636, +11.054506678367858 +], +[ +7.736540796499296, +5.262003067377667, +14.508459939175468 +] +], +"mt_inclusive/ZL#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +11.483737735920847, +10.398409545168672, +18.02491463925188 +], +[ +11.06860162101146, +10.95384834092604, +20.809711514783327 +] +], +"mt_inclusive/ZL#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +10.933703799325741, +4.592289663259876, +13.114559816900123 +], +[ +10.927490206414676, +6.076914438795951, +19.201630641013487 +] +], +"mt_inclusive/ZTT#abcd_anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +17.496698918248917, +14.779862768986447, +47.90281105930479 +], +[ +26.588383963670303, +22.761263459178885, +50.2080674611917 +] +], +"mt_inclusive/ZTT#abcd_same_sign_anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +25.92592173691227, +18.75804409193434, +49.15580705922126 +], +[ +32.05638501230088, +24.25857769736802, +58.09110471985512 +] +], +"mt_inclusive/ZTT#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +41.352990941709955, +34.89999489141457, +65.14954861363255 +], +[ +55.81564034453727, +44.43757018098839, +76.20575848991597 +] +], +"mt_inclusive/ZTT#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +33.70611630176537, +45.423494956024804, +58.965757987251436 +], +[ +40.22693162554395, +47.76116414828714, +75.84147675654926 +] +], +"mt_inclusive/data#abcd_anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +29.0, +39.0, +57.0 +], +[ +29.0, +39.0, +57.0 +] +], +"mt_inclusive/data#abcd_same_sign_anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +30.0, +33.0, +68.0 +], +[ +30.0, +33.0, +68.0 +] +], +"mt_inclusive/data#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +63.0, +44.0, +92.0 +], +[ +63.0, +44.0, +92.0 +] +], +"mt_inclusive/data#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +63.0, +57.0, +105.0 +], +[ +63.0, +57.0, +105.0 +] +] +}, +"control_estimate": { +"mt_inclusive/HH#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +7.6920412326675525, +6.082812832945391, +16.103764415780127 +], +[ +1.5417783687153839, +1.8707043906507463, +3.6623936732714024 +] +], +"mt_inclusive/HH#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.501729603356651, +6.723108654030263, +17.798897032104378 +], +[ +1.883446637704032, +2.285264744705297, +4.474004215992052 +] +], +"mt_inclusive/HH#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.096885644964999, +6.402960946368877, +16.95133117658866 +], +[ +1.7083417449706328, +2.0728027022913293, +4.05805403452219 +] +], +"mt_inclusive/ZL#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +1.8652736045123652, +1.3380370450554322, +1.9060360612845462 +], +[ +0.461145489815144, +0.2741137802523036, +0.39937444114617104 +] +], +"mt_inclusive/ZL#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +2.0616181583614193, +1.4788830045837593, +2.1066714059399225 +], +[ +0.563338378106282, +0.3348591957980648, +0.4878784548830267 +] +], +"mt_inclusive/ZL#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +1.9634459390678913, +1.4084600477793028, +2.006353780638708 +], +[ +0.5109645496066592, +0.3037271804537449, +0.44252016855447673 +] +], +"mt_inclusive/ZL#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +10.909550726271366, +9.878489110867616, +17.123668643566113 +], +[ +9.989412754027526, +9.885848250998805, +18.78076426588973 +] +], +"mt_inclusive/ZL#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +12.057924215916866, +10.918329623534326, +18.926159624828916 +], +[ +12.203132483445001, +12.076616922961064, +22.942705155134686 +] +], +"mt_inclusive/ZL#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +11.483737735920847, +10.398409545168672, +18.02491463925188 +], +[ +11.06860162101146, +10.95384834092604, +20.809711514783327 +] +], +"mt_inclusive/ZTT#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.3920773754517564, +2.9747050531685266, +8.377077790559285 +], +[ +1.0432863023187886, +0.970644186078762, +1.738397480403664 +] +], +"mt_inclusive/ZTT#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.7491380333902997, +3.287831768685524, +9.258875087481993 +], +[ +1.2744853993283711, +1.1857453149354704, +2.1236377355601923 +] +], +"mt_inclusive/ZTT#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.5706078390222866, +3.131268488274871, +8.817976763304305 +], +[ +1.1559959384096306, +1.0755060596097483, +1.926202249295808 +] +], +"mt_inclusive/ZTT#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +39.28534053088905, +33.154994633024195, +61.892070812812946 +], +[ +50.37361355815806, +40.10490639768832, +68.7756958162479 +] +], +"mt_inclusive/ZTT#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +43.42063824071298, +36.64499317508821, +68.40702255241379 +], +[ +61.53673767690069, +48.99241711908743, +84.01684043126332 +] +], +"mt_inclusive/ZTT#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +41.352990941709955, +34.89999489141457, +65.14954861363255 +], +[ +55.81564034453727, +44.43757018098839, +76.20575848991597 +] +], +"mt_inclusive/data#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +5.943716570734978, +7.859918832778931, +11.239426217973232 +], +[ +1.3083512710529153, +1.6871412420516387, +2.430231791108767 +] +], +"mt_inclusive/data#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +63.0, +44.0, +92.0 +], +[ +63.0, +44.0, +92.0 +] +], +"mt_inclusive/jetFakes#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +0.40966279264479977, +3.320190296724756, +0.4150956740302192 +], +[ +2.9753117590692053, +3.0663744821151315, +4.798954208959052 +] +] +}, +"control_hist": { +"mt_inclusive/HH#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +7.6920412326675525, +6.082812832945391, +16.103764415780127 +], +[ +1.5417783687153839, +1.8707043906507463, +3.6623936732714024 +] +], +"mt_inclusive/HH#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.501729603356651, +6.723108654030263, +17.798897032104378 +], +[ +1.883446637704032, +2.285264744705297, +4.474004215992052 +] +], +"mt_inclusive/HH#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.096885644964999, +6.402960946368877, +16.95133117658866 +], +[ +1.7083417449706328, +2.0728027022913293, +4.05805403452219 +] +], +"mt_inclusive/ZL#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +1.8652736045123652, +1.3380370450554322, +1.9060360612845462 +], +[ +0.461145489815144, +0.2741137802523036, +0.39937444114617104 +] +], +"mt_inclusive/ZL#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +2.0616181583614193, +1.4788830045837593, +2.1066714059399225 +], +[ +0.563338378106282, +0.3348591957980648, +0.4878784548830267 +] +], +"mt_inclusive/ZL#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +1.9634459390678913, +1.4084600477793028, +2.006353780638708 +], +[ +0.5109645496066592, +0.3037271804537449, +0.44252016855447673 +] +], +"mt_inclusive/ZL#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +10.909550726271366, +9.878489110867616, +17.123668643566113 +], +[ +9.989412754027526, +9.885848250998805, +18.78076426588973 +] +], +"mt_inclusive/ZL#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +12.057924215916866, +10.918329623534326, +18.926159624828916 +], +[ +12.203132483445001, +12.076616922961064, +22.942705155134686 +] +], +"mt_inclusive/ZL#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +11.483737735920847, +10.398409545168672, +18.02491463925188 +], +[ +11.06860162101146, +10.95384834092604, +20.809711514783327 +] +], +"mt_inclusive/ZTT#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.3920773754517564, +2.9747050531685266, +8.377077790559285 +], +[ +1.0432863023187886, +0.970644186078762, +1.738397480403664 +] +], +"mt_inclusive/ZTT#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.7491380333902997, +3.287831768685524, +9.258875087481993 +], +[ +1.2744853993283711, +1.1857453149354704, +2.1236377355601923 +] +], +"mt_inclusive/ZTT#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.5706078390222866, +3.131268488274871, +8.817976763304305 +], +[ +1.1559959384096306, +1.0755060596097483, +1.926202249295808 +] +], +"mt_inclusive/ZTT#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +39.28534053088905, +33.154994633024195, +61.892070812812946 +], +[ +50.37361355815806, +40.10490639768832, +68.7756958162479 +] +], +"mt_inclusive/ZTT#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +43.42063824071298, +36.64499317508821, +68.40702255241379 +], +[ +61.53673767690069, +48.99241711908743, +84.01684043126332 +] +], +"mt_inclusive/ZTT#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +41.352990941709955, +34.89999489141457, +65.14954861363255 +], +[ +55.81564034453727, +44.43757018098839, +76.20575848991597 +] +], +"mt_inclusive/data#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +5.943716570734978, +7.859918832778931, +11.239426217973232 +], +[ +1.3083512710529153, +1.6871412420516387, +2.430231791108767 +] +], +"mt_inclusive/data#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +63.0, +44.0, +92.0 +], +[ +63.0, +44.0, +92.0 +] +] +}, +"control_regions_all": { +"mt_inclusive/HH#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +0.8236764576256658, +1.0804888203115084, +2.581339958751821 +], +[ +0.04700674603570427, +0.060929358402897864, +0.12371713369292653 +] +], +"mt_inclusive/HH#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +0.9103792199288501, +1.1942244139654705, +2.8530598718784357 +], +[ +0.05742374998936993, +0.0744317014818583, +0.15113366473135764 +] +], +"mt_inclusive/HH#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +0.8670278598455706, +1.1373566590731152, +2.71719999717235 +], +[ +0.05208503802968049, +0.06751175574443882, +0.13708270105018833 +] +], +"mt_inclusive/HH#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +7.6920412326675525, +6.082812832945391, +16.103764415780127 +], +[ +1.5417783687153839, +1.8707043906507463, +3.6623936732714024 +] +], +"mt_inclusive/HH#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.501729603356651, +6.723108654030263, +17.798897032104378 +], +[ +1.883446637704032, +2.285264744705297, +4.474004215992052 +] +], +"mt_inclusive/HH#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +8.096885644964999, +6.402960946368877, +16.95133117658866 +], +[ +1.7083417449706328, +2.0728027022913293, +4.05805403452219 +] +], +"mt_inclusive/HH#same_sign#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +5.514993192355495, +7.994823110680053, +16.709569957408277 +], +[ +1.307908593467082, +1.796526015730341, +3.64991858850744 +] +], +"mt_inclusive/HH#same_sign#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +6.095518538323666, +8.83638313990878, +18.46847141987616 +], +[ +1.597749700276639, +2.1946479859628765, +4.458764514664793 +] +], +"mt_inclusive/HH#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +5.805256030834177, +8.415603434926371, +17.589021232366704 +], +[ +1.4492062228419649, +1.9906106261981067, +4.04423122886939 +] +], +"mt_inclusive/ZL#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +1.8652736045123652, +1.3380370450554322, +1.9060360612845462 +], +[ +0.461145489815144, +0.2741137802523036, +0.39937444114617104 +] +], +"mt_inclusive/ZL#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +2.0616181583614193, +1.4788830045837593, +2.1066714059399225 +], +[ +0.563338378106282, +0.3348591957980648, +0.4878784548830267 +] +], +"mt_inclusive/ZL#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +1.9634459390678913, +1.4084600477793028, +2.006353780638708 +], +[ +0.5109645496066592, +0.3037271804537449, +0.44252016855447673 +] +], +"mt_inclusive/ZL#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +10.909550726271366, +9.878489110867616, +17.123668643566113 +], +[ +9.989412754027526, +9.885848250998805, +18.78076426588973 +] +], +"mt_inclusive/ZL#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +12.057924215916866, +10.918329623534326, +18.926159624828916 +], +[ +12.203132483445001, +12.076616922961064, +22.942705155134686 +] +], +"mt_inclusive/ZL#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +11.483737735920847, +10.398409545168672, +18.02491463925188 +], +[ +11.06860162101146, +10.95384834092604, +20.809711514783327 +] +], +"mt_inclusive/ZL#same_sign#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +10.387018397562283, +4.362675078213524, +12.45883152965364 +], +[ +9.862059493131628, +5.48441513552574, +17.329470750322173 +] +], +"mt_inclusive/ZL#same_sign#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +11.480388369793234, +4.821903893147352, +13.770287089879925 +], +[ +12.0475566288039, +6.699797390357144, +21.169795364362805 +] +], +"mt_inclusive/ZL#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +10.933703799325741, +4.592289663259876, +13.114559816900123 +], +[ +10.927490206414676, +6.076914438795951, +19.201630641013487 +] +], +"mt_inclusive/ZTT#anti_iso#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.3920773754517564, +2.9747050531685266, +8.377077790559285 +], +[ +1.0432863023187886, +0.970644186078762, +1.738397480403664 +] +], +"mt_inclusive/ZTT#anti_iso#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.7491380333902997, +3.287831768685524, +9.258875087481993 +], +[ +1.2744853993283711, +1.1857453149354704, +2.1236377355601923 +] +], +"mt_inclusive/ZTT#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +3.5706078390222866, +3.131268488274871, +8.817976763304305 +], +[ +1.1559959384096306, +1.0755060596097483, +1.926202249295808 +] +], +"mt_inclusive/ZTT#nominal#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +39.28534053088905, +33.154994633024195, +61.892070812812946 +], +[ +50.37361355815806, +40.10490639768832, +68.7756958162479 +] +], +"mt_inclusive/ZTT#nominal#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +43.42063824071298, +36.64499317508821, +68.40702255241379 +], +[ +61.53673767690069, +48.99241711908743, +84.01684043126332 +] +], +"mt_inclusive/ZTT#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +41.352990941709955, +34.89999489141457, +65.14954861363255 +], +[ +55.81564034453727, +44.43757018098839, +76.20575848991597 +] +], +"mt_inclusive/ZTT#same_sign#CMS_puDown#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +32.02081008117918, +43.15231968395358, +56.01746957365785 +], +[ +36.30480483874703, +43.1044497288604, +68.4469310011441 +] +], +"mt_inclusive/ZTT#same_sign#CMS_puUp#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +35.39142031213357, +47.6946676642194, +61.914043365137175 +], +[ +44.35018791500401, +52.656678990662535, +83.61522073174261 +] +], +"mt_inclusive/ZTT#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +33.70611630176537, +45.423494956024804, +58.965757987251436 +], +[ +40.22693162554395, +47.76116414828714, +75.84147675654926 +] +], +"mt_inclusive/data#anti_iso#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +5.943716570734978, +7.859918832778931, +11.239426217973232 +], +[ +1.3083512710529153, +1.6871412420516387, +2.430231791108767 +] +], +"mt_inclusive/data#nominal#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +63.0, +44.0, +92.0 +], +[ +63.0, +44.0, +92.0 +] +], +"mt_inclusive/data#same_sign#Nominal#m_vis": [ +[ +0.0, +50.0, +100.0, +200.0 +], +[ +63.0, +57.0, +105.0 +], +[ +63.0, +57.0, +105.0 +] +] +}, +"datacard_shapes": { +"htt_mt_1_2018/HH": [ +[ +0.0, +0.5, +1.0 +], +[ +8.124845724691983, +7.964820356634302 +], +[ +1.866930661035003, +1.9384188225551042 +] +], +"htt_mt_1_2018/HH_CMS_puDown": [ +[ +0.0, +0.5, +1.0 +], +[ +7.718603349377448, +7.566579239979687 +], +[ +1.6849048807668736, +1.749422936213198 +] +], +"htt_mt_1_2018/HH_CMS_puUp": [ +[ +0.0, +0.5, +1.0 +], +[ +8.531087661278862, +8.363061055929263 +], +[ +2.058290887423747, +2.137106596700711 +] +], +"htt_mt_1_2018/ZL": [ +[ +0.0, +0.5, +1.0 +], +[ +9.403903486436324, +9.648275618619088 +], +[ +9.932375852647471, +9.369980308152385 +] +], +"htt_mt_1_2018/ZL_CMS_puDown": [ +[ +0.0, +0.5, +1.0 +], +[ +8.93370816024295, +9.16586168068974 +], +[ +8.963968911606639, +8.456406936897288 +] +], +"htt_mt_1_2018/ZL_CMS_puUp": [ +[ +0.0, +0.5, +1.0 +], +[ +9.874098217815092, +10.130688910982421 +], +[ +10.950443371969932, +10.330402289351593 +] +], +"htt_mt_1_2018/ZTT": [ +[ +0.0, +0.5, +1.0 +], +[ +35.460320868912405, +26.251248169169948 +], +[ +49.527352367675455, +36.69398646031606 +] +], +"htt_mt_1_2018/ZTT_CMS_puDown": [ +[ +0.0, +0.5, +1.0 +], +[ +33.68730443179881, +24.93868536076957 +], +[ +44.69843455338169, +33.116321946826176 +] +], +"htt_mt_1_2018/ZTT_CMS_puUp": [ +[ +0.0, +0.5, +1.0 +], +[ +37.2333350982851, +27.563809012490815 +], +[ +54.60390123475606, +40.45511599568244 +] +], +"htt_mt_1_2018/data_obs": [ +[ +0.0, +0.5, +1.0 +], +[ +63.0, +55.0 +], +[ +63.0, +55.0 +] +], +"htt_mt_1_2018/jetFakes": [ +[ +0.0, +0.5, +1.0 +], +[ +0.2082813536811321, +1.066040770965646 +], +[ +2.391649224385782, +3.3839075745701654 +] +], +"htt_mt_2_2018/HH": [ +[ +0.0, +0.5, +1.0 +], +[ +8.446625771015965, +6.914885915580271 +], +[ +2.237810533957831, +1.7960384642362093 +] +], +"htt_mt_2_2018/HH_CMS_puDown": [ +[ +0.0, +0.5, +1.0 +], +[ +8.02429434246197, +6.569141549573978 +], +[ +2.019623944689732, +1.6209246709677294 +] +], +"htt_mt_2_2018/HH_CMS_puUp": [ +[ +0.0, +0.5, +1.0 +], +[ +8.86895666106682, +7.260629911216364 +], +[ +2.467185890405351, +1.9801322238715748 +] +], +"htt_mt_2_2018/ZL": [ +[ +0.0, +0.5, +1.0 +], +[ +10.854103660076499, +10.000779155209484 +], +[ +13.475777775245504, +10.054027540675467 +] +], +"htt_mt_2_2018/ZL_CMS_puDown": [ +[ +0.0, +0.5, +1.0 +], +[ +10.31139839812493, +9.500740241647476 +], +[ +12.16188947108262, +9.073759951329517 +] +], +"htt_mt_2_2018/ZL_CMS_puUp": [ +[ +0.0, +0.5, +1.0 +], +[ +11.396808502317977, +10.50081783316461 +], +[ +14.857044122294846, +11.084564777924376 +] +], +"htt_mt_2_2018/ZTT": [ +[ +0.0, +0.5, +1.0 +], +[ +44.47632472984159, +35.21464067883315 +], +[ +51.11827993132326, +39.119350256126964 +] +], +"htt_mt_2_2018/ZTT_CMS_puDown": [ +[ +0.0, +0.5, +1.0 +], +[ +42.25250792465663, +33.45390825950118 +], +[ +46.13424648913618, +35.305212782750296 +] +], +"htt_mt_2_2018/ZTT_CMS_puUp": [ +[ +0.0, +0.5, +1.0 +], +[ +46.7001386541662, +36.97537120327292 +], +[ +56.35789787794544, +43.1290801188675 +] +], +"htt_mt_2_2018/data_obs": [ +[ +0.0, +0.5, +1.0 +], +[ +34.0, +47.0 +], +[ +34.0, +47.0 +] +], +"htt_mt_2_2018/jetFakes": [ +[ +0.0, +0.5, +1.0 +], +[ +0.8285710176301923, +2.0420556211228016 +], +[ +2.0483623824384463, +3.0167212687490004 +] +] +}, +"ml_export": { +"fold0.feather": { +"Event|event|||": [ +1.0, +5.0, +25.0, +55.0, +65.0, +69.0, +75.0, +81.0, +93.0, +95.0, +99.0, +111.0, +119.0, +149.0, +171.0, +181.0, +183.0, +195.0, +203.0, +215.0, +217.0, +235.0, +241.0, +243.0, +263.0, +267.0, +287.0, +303.0, +307.0, +309.0, +315.0, +329.0, +333.0, +339.0, +343.0, +359.0, +365.0, +367.0, +375.0, +421.0, +429.0, +439.0, +447.0, +497.0, +501.0, +503.0, +507.0, +517.0, +519.0, +525.0, +529.0, +541.0, +555.0, +567.0, +569.0, +577.0, +585.0, +593.0, +599.0, +625.0, +627.0, +631.0, +635.0, +641.0, +645.0, +655.0, +667.0, +679.0, +681.0, +689.0, +691.0, +695.0, +699.0, +715.0, +717.0, +729.0, +739.0, +743.0, +747.0, +769.0, +771.0, +773.0, +777.0, +779.0, +789.0, +791.0, +799.0, +113.0, +151.0, +357.0, +381.0, +409.0, +441.0, +481.0, +579.0, +591.0, +633.0, +647.0, +741.0, +11.0, +17.0, +25.0, +31.0, +51.0, +57.0, +69.0, +77.0, +91.0, +95.0, +97.0, +99.0, +101.0, +105.0, +109.0, +111.0, +115.0, +129.0, +143.0, +147.0, +155.0, +159.0, +169.0, +171.0, +173.0, +175.0, +187.0, +191.0, +193.0, +195.0, +201.0, +217.0, +221.0, +225.0, +227.0, +231.0, +239.0, +241.0, +247.0, +249.0, +253.0, +273.0, +303.0, +315.0, +323.0, +333.0, +357.0, +359.0, +367.0, +373.0, +377.0, +399.0, +415.0, +417.0, +419.0, +425.0, +441.0, +443.0, +449.0, +451.0, +455.0, +487.0, +497.0, +509.0, +511.0, +513.0, +525.0, +533.0, +543.0, +545.0, +553.0, +563.0, +569.0, +573.0, +581.0, +597.0, +603.0, +605.0, +631.0, +633.0, +635.0, +641.0, +649.0, +651.0, +653.0, +657.0, +659.0, +669.0, +671.0, +673.0, +737.0, +745.0, +751.0, +759.0, +773.0, +775.0, +3.0, +15.0, +27.0, +29.0, +37.0, +67.0, +81.0, +91.0, +99.0, +101.0, +113.0, +117.0, +125.0, +139.0, +141.0, +143.0, +149.0, +159.0, +179.0, +185.0, +197.0, +229.0, +231.0, +245.0, +271.0, +273.0, +295.0, +297.0, +321.0, +345.0, +347.0, +365.0, +373.0, +377.0, +385.0, +409.0, +453.0, +461.0, +465.0, +473.0, +483.0, +485.0, +507.0, +515.0, +525.0, +545.0, +547.0, +549.0, +575.0, +585.0, +617.0, +629.0, +637.0, +647.0, +665.0, +689.0, +719.0, +723.0, +725.0, +731.0, +743.0, +749.0, +765.0, +771.0 +], +"Event|id|||": [ +0.0, +2.0, +5.0, +8.0, +9.0, +10.0, +13.0, +16.0, +18.0, +19.0, +20.0, +22.0, +24.0, +30.0, +32.0, +33.0, +34.0, +38.0, +40.0, +41.0, +43.0, +45.0, +46.0, +47.0, +49.0, +50.0, +54.0, +59.0, +61.0, +63.0, +65.0, +68.0, +70.0, +72.0, +74.0, +78.0, +79.0, +80.0, +83.0, +91.0, +92.0, +93.0, +95.0, +100.0, +102.0, +103.0, +106.0, +109.0, +111.0, +114.0, +116.0, +118.0, +122.0, +124.0, +125.0, +127.0, +129.0, +131.0, +132.0, +134.0, +135.0, +136.0, +137.0, +139.0, +140.0, +144.0, +145.0, +147.0, +148.0, +151.0, +153.0, +154.0, +155.0, +157.0, +158.0, +160.0, +163.0, +164.0, +165.0, +168.0, +169.0, +170.0, +171.0, +172.0, +173.0, +174.0, +176.0, +7.0, +8.0, +17.0, +18.0, +22.0, +24.0, +25.0, +31.0, +32.0, +36.0, +37.0, +39.0, +2.0, +4.0, +7.0, +8.0, +12.0, +14.0, +15.0, +16.0, +19.0, +21.0, +22.0, +23.0, +24.0, +25.0, +26.0, +28.0, +29.0, +32.0, +35.0, +36.0, +39.0, +40.0, +41.0, +42.0, +44.0, +45.0, +46.0, +47.0, +49.0, +50.0, +52.0, +56.0, +57.0, +59.0, +60.0, +61.0, +62.0, +63.0, +64.0, +66.0, +68.0, +72.0, +77.0, +79.0, +81.0, +82.0, +85.0, +86.0, +88.0, +90.0, +91.0, +96.0, +97.0, +98.0, +99.0, +101.0, +105.0, +106.0, +107.0, +108.0, +110.0, +115.0, +118.0, +120.0, +121.0, +122.0, +123.0, +125.0, +128.0, +129.0, +131.0, +134.0, +135.0, +137.0, +140.0, +144.0, +146.0, +147.0, +152.0, +154.0, +156.0, +158.0, +162.0, +163.0, +164.0, +166.0, +167.0, +170.0, +172.0, +173.0, +181.0, +183.0, +185.0, +188.0, +191.0, +193.0, +0.0, +2.0, +4.0, +6.0, +7.0, +9.0, +10.0, +12.0, +13.0, +14.0, +15.0, +17.0, +18.0, +20.0, +21.0, +22.0, +23.0, +27.0, +29.0, +30.0, +31.0, +37.0, +38.0, +40.0, +42.0, +43.0, +46.0, +48.0, +51.0, +52.0, +53.0, +55.0, +56.0, +57.0, +59.0, +64.0, +68.0, +69.0, +70.0, +73.0, +76.0, +77.0, +81.0, +82.0, +84.0, +86.0, +88.0, +89.0, +91.0, +95.0, +99.0, +102.0, +103.0, +105.0, +107.0, +111.0, +113.0, +114.0, +115.0, +116.0, +118.0, +121.0, +122.0, +123.0 +], +"Labels|is_HH|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_Z|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_jetFakes|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|class_weight|||": [ +1.2687032222747803, +1.200251579284668, +1.2524046897888184, +1.4070509672164917, +1.1100958585739136, +1.173620343208313, +1.05235755443573, +1.3204315900802612, +1.216975212097168, +1.3668179512023926, +1.5023101568222046, +1.5417245626449585, +1.19562828540802, +1.3540446758270264, +1.5333216190338135, +1.3167294263839722, +-1.4232203960418701, +1.1172338724136353, +1.3494946956634521, +1.3734451532363892, +1.3310962915420532, +1.2626184225082397, +1.5533597469329834, +1.1845821142196655, +1.288509726524353, +1.5264629125595093, +1.4866869449615479, +1.345848798751831, +1.5008257627487183, +1.2440907955169678, +1.244461178779602, +1.4935425519943237, +1.341223955154419, +1.1218887567520142, +1.3996989727020264, +1.4850410223007202, +1.2763723134994507, +-1.2212880849838257, +1.4126806259155273, +1.301063895225525, +1.4730528593063354, +1.2923331260681152, +1.3159700632095337, +1.5719168186187744, +1.4144680500030518, +1.2738302946090698, +1.2879223823547363, +1.397925615310669, +1.2887033224105835, +-1.4549859762191772, +1.315124273300171, +1.3531980514526367, +1.291235089302063, +1.2535290718078613, +1.2863414287567139, +1.3491615056991577, +1.408807396888733, +1.0390723943710327, +1.2013112306594849, +1.5105878114700317, +1.282851219177246, +1.287013292312622, +1.459765076637268, +1.4265780448913574, +1.334954857826233, +-1.3497744798660278, +1.286273717880249, +1.3161802291870117, +1.1194794178009033, +1.2458441257476807, +-1.242697834968567, +-1.319658875465393, +1.3545560836791992, +1.242832064628601, +1.2699675559997559, +-1.190532922744751, +1.2665404081344604, +1.2310116291046143, +1.4118565320968628, +1.4800840616226196, +1.2062296867370605, +1.397411584854126, +1.3795578479766846, +1.2565081119537354, +1.4630658626556396, +1.329074740409851, +1.1821283102035522, +1.344079613685608, +1.3975881338119507, +1.3992795944213867, +1.2679489850997925, +1.2552995681762695, +1.5409691333770752, +1.3744884729385376, +1.2385183572769165, +1.4052307605743408, +1.333968997001648, +1.1900780200958252, +1.3940510749816895, +1.5473675727844238, +1.481744408607483, +1.6270289421081543, +1.2606558799743652, +1.3638414144515991, +1.1014933586120605, +1.2978746891021729, +1.4055659770965576, +1.4431113004684448, +1.334916114807129, +-1.5406745672225952, +-1.2587661743164062, +1.450372576713562, +-1.431027889251709, +1.6780279874801636, +1.1676592826843262, +1.5960921049118042, +1.3770849704742432, +1.4866214990615845, +1.588835597038269, +1.5069643259048462, +1.3983848094940186, +1.4729154109954834, +1.2295650243759155, +1.3577018976211548, +1.5797975063323975, +-1.322052240371704, +1.6121050119400024, +1.1488473415374756, +1.3745957612991333, +-1.517071008682251, +1.4618892669677734, +1.4119566679000854, +1.5622766017913818, +1.5195573568344116, +1.4612573385238647, +1.2881693840026855, +1.5444951057434082, +1.646323323249817, +1.4956700801849365, +1.5071057081222534, +-1.725417137145996, +1.2740519046783447, +1.5614581108093262, +1.5071617364883423, +-1.4697704315185547, +1.4618785381317139, +1.4784138202667236, +1.6250195503234863, +1.4542737007141113, +1.4891393184661865, +1.2924712896347046, +1.5976574420928955, +1.147559404373169, +1.5057907104492188, +1.4731935262680054, +1.396272897720337, +1.3701143264770508, +1.6488207578659058, +1.6267502307891846, +-1.574134349822998, +1.5142691135406494, +1.5564309358596802, +1.6407901048660278, +1.6014348268508911, +1.4754271507263184, +1.181789755821228, +1.5254541635513306, +1.2251967191696167, +1.3421695232391357, +1.6979124546051025, +-1.3949198722839355, +1.396547555923462, +1.1687077283859253, +1.4245514869689941, +1.3908649682998657, +1.6085573434829712, +1.5641006231307983, +1.3462375402450562, +1.4491041898727417, +1.2888509035110474, +1.6798194646835327, +1.3934134244918823, +1.5309323072433472, +1.3081680536270142, +1.3538825511932373, +1.4299207925796509, +1.3537665605545044, +1.5129367113113403, +1.3249765634536743, +1.682540774345398, +1.5229487419128418, +1.664684772491455, +1.3534142971038818, +1.405592679977417, +1.5668330192565918, +2.4584193229675293, +2.314478635787964, +2.211594343185425, +1.556304931640625, +1.1459037065505981, +2.441598892211914, +1.3029530048370361, +2.0382027626037598, +2.030677318572998, +1.4465720653533936, +1.9933006763458252, +1.9680825471878052, +1.1877673864364624, +1.9412678480148315, +1.7686045169830322, +2.4790446758270264, +1.6101508140563965, +1.5741690397262573, +2.2168514728546143, +1.0340441465377808, +1.1513762474060059, +1.1404688358306885, +2.138652801513672, +1.5213069915771484, +1.0711084604263306, +1.9147669076919556, +1.589461326599121, +0.9832540154457092, +1.98206627368927, +1.5805076360702515, +2.419348955154419, +2.4541103839874268, +2.2161705493927, +2.0158517360687256, +1.7051711082458496, +2.4589924812316895, +1.5032790899276733, +1.9493128061294556, +1.9680677652359009, +2.2533655166625977, +1.3355586528778076, +2.223994731903076, +1.7203353643417358, +1.4736061096191406, +1.7173519134521484, +1.931023120880127, +2.2924511432647705, +2.463672161102295, +2.118798017501831, +1.064516305923462, +1.988829493522644, +1.9887433052062988, +2.1462674140930176, +2.3327572345733643, +1.522961974143982, +1.4744458198547363, +1.983492374420166, +1.2521047592163086, +1.5067138671875, +0.9259641766548157, +1.1510781049728394, +0.9536513090133667, +1.2198998928070068, +1.4214483499526978 +], +"Nominal|cut|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|variables|m_vis||": [ +186.66583251953125, +55.10929489135742, +44.11056900024414, +125.2322769165039, +90.8484878540039, +97.41753387451172, +167.2926025390625, +98.80756378173828, +41.54464340209961, +60.2873649597168, +189.49000549316406, +71.15959167480469, +43.08942794799805, +47.30316925048828, +194.38075256347656, +119.49313354492188, +134.31195068359375, +110.9936752319336, +199.71145629882812, +21.921167373657227, +108.32662200927734, +6.498188018798828, +52.33747100830078, +24.047170639038086, +63.55463790893555, +178.6932830810547, +196.35423278808594, +31.8718204498291, +190.89732360839844, +116.39935302734375, +193.3090362548828, +97.06002807617188, +94.18435668945312, +168.8418426513672, +47.244850158691406, +190.9456329345703, +116.57389068603516, +104.45367431640625, +25.702062606811523, +115.60578155517578, +169.96469116210938, +169.72886657714844, +89.62925720214844, +11.054072380065918, +39.585533142089844, +186.66580200195312, +120.26956176757812, +46.53813934326172, +168.51129150390625, +20.972179412841797, +62.91473388671875, +25.18712043762207, +80.41912078857422, +1.4303278923034668, +153.7004852294922, +169.6871795654297, +36.43866729736328, +159.3090362548828, +105.89411163330078, +24.534893035888672, +37.45365524291992, +36.87431335449219, +142.39202880859375, +16.549219131469727, +84.99166870117188, +45.8249397277832, +105.02173614501953, +156.25991821289062, +3.7810816764831543, +121.72319030761719, +31.956279754638672, +87.8974380493164, +171.7176513671875, +50.34589385986328, +24.459325790405273, +129.69837951660156, +25.120956420898438, +186.58201599121094, +154.55850219726562, +74.79369354248047, +152.96240234375, +3.348132371902466, +85.80735778808594, +10.80255126953125, +127.5760498046875, +135.18458557128906, +42.51483917236328, +164.84934997558594, +13.101043701171875, +174.37257385253906, +125.12049865722656, +119.23509979248047, +36.996246337890625, +109.66242980957031, +24.283987045288086, +124.59757995605469, +58.885894775390625, +4.546611309051514, +95.35750579833984, +108.78137969970703, +159.80813598632812, +0.7061734795570374, +165.8763885498047, +68.58003997802734, +42.019100189208984, +34.87803649902344, +156.33106994628906, +53.012210845947266, +60.71796798706055, +89.95378112792969, +63.58363723754883, +58.143035888671875, +55.04438400268555, +9.347379684448242, +194.0750732421875, +68.09620666503906, +7.943099498748779, +28.033048629760742, +180.6268310546875, +69.62303161621094, +43.36221694946289, +177.46002197265625, +3.703937292098999, +131.0148468017578, +128.228759765625, +58.514957427978516, +38.98493194580078, +8.898548126220703, +126.66663360595703, +67.21119689941406, +194.38658142089844, +132.0292205810547, +158.07675170898438, +19.438081741333008, +24.97596549987793, +173.27488708496094, +101.54903411865234, +156.6409149169922, +183.59603881835938, +182.16229248046875, +184.74563598632812, +67.86617279052734, +199.25901794433594, +34.11323547363281, +156.0376434326172, +179.4898681640625, +72.98412322998047, +107.96224212646484, +106.72281646728516, +162.1681671142578, +16.34490394592285, +96.86859893798828, +193.57089233398438, +131.78594970703125, +70.33285522460938, +30.318212509155273, +60.3992919921875, +94.59500885009766, +90.8773422241211, +141.63783264160156, +85.15866088867188, +154.47607421875, +46.28612518310547, +85.20455169677734, +101.9181900024414, +37.424095153808594, +135.23289489746094, +64.35441589355469, +91.160888671875, +177.7661590576172, +116.04412078857422, +38.319923400878906, +149.23602294921875, +160.7477264404297, +178.851318359375, +156.97067260742188, +12.030562400817871, +16.9868106842041, +96.15202331542969, +150.61148071289062, +83.19038391113281, +97.79571533203125, +141.5839385986328, +78.21647644042969, +116.93480682373047, +173.1746368408203, +170.97726440429688, +20.060001373291016, +21.459226608276367, +152.35438537597656, +182.02777099609375, +65.09091186523438, +111.29354858398438, +168.6168670654297, +161.27955627441406, +124.0368423461914, +26.34201431274414, +141.6056365966797, +99.72830963134766, +34.53087615966797, +141.57049560546875, +118.05786895751953, +0.7929203510284424, +4.129371166229248, +136.69822692871094, +91.07957458496094, +164.35244750976562, +184.13099670410156, +104.85713958740234, +72.57670593261719, +20.81389808654785, +166.1655731201172, +82.14822387695312, +194.9633331298828, +198.44699096679688, +6.751111030578613, +154.14971923828125, +16.74203109741211, +61.87875747680664, +150.9921875, +40.383846282958984, +161.20887756347656, +190.4710693359375, +164.66915893554688, +133.72119140625, +175.96055603027344, +82.55097198486328, +72.19536590576172, +60.01213455200195, +59.05020523071289, +42.48881530761719, +61.354862213134766, +30.9301700592041, +171.51942443847656, +170.6034393310547, +53.5555305480957, +191.96119689941406, +173.82655334472656, +95.75508117675781, +130.42752075195312, +87.66871643066406, +14.332592010498047, +170.1824951171875, +111.02153015136719, +193.480712890625, +14.831422805786133, +102.70748901367188, +170.85028076171875, +89.98041534423828, +66.8148422241211, +142.08721923828125, +5.379977226257324, +96.49951934814453, +124.74366760253906, +99.99954986572266, +13.357159614562988, +111.80836486816406, +135.5469207763672, +132.27371215820312 +], +"Nominal|variables|score||": [ +0.36816126108169556, +0.4347307085990906, +0.19367370009422302, +0.39963969588279724, +0.16777534782886505, +0.40611791610717773, +0.4922933280467987, +0.8671920895576477, +0.673903226852417, +0.9514822959899902, +0.9246373772621155, +0.4977148175239563, +0.5586402416229248, +0.7100719809532166, +0.40845662355422974, +0.8356440663337708, +0.7767874598503113, +0.26277080178260803, +0.13481281697750092, +0.05405281111598015, +0.23628748953342438, +0.0056808339431881905, +0.8563485741615295, +0.7230667471885681, +0.5268377661705017, +0.5556129813194275, +0.7097959518432617, +0.9149446487426758, +0.7759413719177246, +0.5485535264015198, +0.4692222476005554, +0.005079607013612986, +0.2728501260280609, +0.27144357562065125, +0.9773766994476318, +0.6876230835914612, +0.811919629573822, +0.5982310771942139, +0.5304697155952454, +0.36268240213394165, +0.024935100227594376, +0.2574117183685303, +0.9102192521095276, +0.9472895264625549, +0.3357153534889221, +0.11187803000211716, +0.006591710727661848, +0.5338500738143921, +0.39859193563461304, +0.4345611333847046, +0.8403565287590027, +0.3671662211418152, +0.2430853247642517, +0.33378463983535767, +0.9294244647026062, +0.9664534330368042, +0.3777795732021332, +0.5373026132583618, +0.36967170238494873, +0.34925004839897156, +0.7275139689445496, +0.18761980533599854, +0.5406442880630493, +0.2087317705154419, +0.8460321426391602, +0.5316637754440308, +0.4054313600063324, +0.32390296459198, +0.6551352143287659, +0.9172378778457642, +0.2895398736000061, +0.7735388875007629, +0.6639648079872131, +0.4924296438694, +0.5517899394035339, +0.08040191233158112, +0.31557807326316833, +0.3944774568080902, +0.3029542565345764, +0.3952030837535858, +0.6742061972618103, +0.6919049024581909, +0.22562840580940247, +0.5979412198066711, +0.14708231389522552, +0.2850974202156067, +0.6253337264060974, +0.6150316596031189, +0.0967186912894249, +0.6223747730255127, +0.370372474193573, +0.3928617537021637, +0.4405147433280945, +0.8806897401809692, +0.4091460704803467, +0.6054671406745911, +0.8692955374717712, +0.8585750460624695, +0.5178007483482361, +0.44172045588493347, +0.5368252992630005, +0.3219858407974243, +0.32358047366142273, +0.1690126359462738, +0.34253814816474915, +0.7126178741455078, +0.8066079616546631, +0.01419280469417572, +0.6133885383605957, +0.609367311000824, +0.48502036929130554, +0.5384281873703003, +0.18496353924274445, +0.6846621632575989, +0.9185429811477661, +0.2201387882232666, +0.7119467854499817, +0.17876386642456055, +0.9436266422271729, +0.7516078352928162, +0.42666852474212646, +0.7013814449310303, +0.05499085411429405, +0.3655780553817749, +0.8406569361686707, +0.8945565223693848, +0.2752549648284912, +0.5326656699180603, +0.9036421179771423, +0.44001081585884094, +0.722663402557373, +0.01355897355824709, +0.1612733006477356, +0.04755258560180664, +0.5894360542297363, +0.20094236731529236, +0.2177913933992386, +0.28421762585639954, +0.2753584384918213, +0.36571741104125977, +0.9571941494941711, +0.6507647633552551, +0.7324953079223633, +0.46708667278289795, +0.9284521341323853, +0.19873303174972534, +0.6660018563270569, +0.08857365697622299, +0.8753789663314819, +0.46786582469940186, +0.19513492286205292, +0.7717576026916504, +0.4195736050605774, +0.8657265901565552, +0.4872938096523285, +0.48068052530288696, +0.286350816488266, +0.37636756896972656, +0.04359734058380127, +0.14077213406562805, +0.17040470242500305, +0.06563004106283188, +0.29828694462776184, +0.33820220828056335, +0.9635827541351318, +0.5112373232841492, +0.8896300196647644, +0.14379346370697021, +0.41314518451690674, +0.6194670796394348, +0.5390298366546631, +0.10461564362049103, +0.7453526854515076, +0.2863852381706238, +0.3797747790813446, +0.14735586941242218, +0.08066675812005997, +0.4031670093536377, +0.6235045790672302, +0.41543155908584595, +0.4202961027622223, +0.05235562101006508, +0.9947258234024048, +0.17687509953975677, +0.43593743443489075, +0.5281477570533752, +0.9334966540336609, +0.8566246032714844, +0.7995546460151672, +0.16920752823352814, +0.18672071397304535, +0.5094504952430725, +0.5566217303276062, +0.6840742230415344, +0.9119957685470581, +0.06757303327322006, +0.5667415857315063, +0.9166528582572937, +0.8188878893852234, +0.3815905749797821, +0.8375165462493896, +0.3959242105484009, +0.5670667886734009, +0.9835124015808105, +0.11842425912618637, +0.4554402828216553, +0.40304744243621826, +0.05859396234154701, +0.8206666707992554, +0.8637899160385132, +0.6200941205024719, +0.848947286605835, +0.07414238899946213, +0.5692679286003113, +0.8688294887542725, +0.8087661266326904, +0.5469880104064941, +0.04112844914197922, +0.07329145073890686, +0.09203371405601501, +0.8954766988754272, +0.6550143361091614, +0.6616841554641724, +0.15782006084918976, +0.0053036026656627655, +0.30492308735847473, +0.32564592361450195, +0.5144152641296387, +0.42543190717697144, +0.04968304932117462, +0.9231418967247009, +0.8205293416976929, +0.1230384111404419, +0.9628732204437256, +0.4082365036010742, +0.6981847286224365, +0.9310054779052734, +0.6789525151252747, +0.38979974389076233, +0.4334551692008972, +0.7832086086273193, +0.9427131414413452, +0.9081960916519165, +0.8953193426132202, +0.6698293089866638, +0.29817962646484375, +0.899118185043335, +0.5350125432014465, +0.43045109510421753, +0.6206655502319336, +0.7615513801574707, +0.3143662214279175, +0.6214949488639832, +0.6223618388175964, +0.14900188148021698, +0.027562055736780167, +0.48896536231040955, +0.7648707628250122, +0.3490409553050995 +], +"Nominal|weight|||": [ +0.9494823813438416, +0.8982539772987366, +0.9372847080230713, +1.0530201196670532, +0.8307824730873108, +0.878323495388031, +0.7875718474388123, +0.9881952404975891, +0.9107697010040283, +1.022910237312317, +1.1243109703063965, +1.1538082361221313, +0.8947939276695251, +1.0133508443832397, +1.147519588470459, +0.9854246377944946, +-1.0651211738586426, +0.8361245393753052, +1.0099457502365112, +1.0278699398040771, +0.996176540851593, +0.9449285864830017, +1.1625158786773682, +0.8865271210670471, +0.9643053412437439, +1.1423866748809814, +1.1126188039779663, +1.0072171688079834, +1.1232000589370728, +0.9310626983642578, +0.9313398599624634, +1.1177494525909424, +1.003756046295166, +0.8396081328392029, +1.047518014907837, +1.111387014389038, +0.9552217721939087, +-0.9139974117279053, +1.0572333335876465, +0.9737007021903992, +1.1024152040481567, +0.9671667218208313, +0.9848563075065613, +1.1764037609100342, +1.0585709810256958, +0.9533194303512573, +0.9638657569885254, +1.046190857887268, +0.9644501805305481, +-1.0888941287994385, +0.9842233061790466, +1.0127172470092773, +0.966344952583313, +0.9381262063980103, +0.9626825451850891, +1.009696364402771, +1.0543346405029297, +0.7776293754577637, +0.8990470170974731, +1.130505919456482, +0.9600705504417419, +0.9631853699684143, +1.0924707651138306, +1.0676339864730835, +0.9990642666816711, +-1.0101550817489624, +0.96263188123703, +0.9850135445594788, +0.8378050327301025, +0.932374894618988, +-0.930020272731781, +-0.9876169562339783, +1.0137336254119873, +0.9301207065582275, +0.9504285454750061, +-0.8909806609153748, +0.9478636980056763, +0.9212744235992432, +1.0566165447235107, +1.1076772212982178, +0.9027279019355774, +1.0458061695098877, +1.0324445962905884, +0.9403557181358337, +1.0949410200119019, +0.9946637153625488, +0.8846907019615173, +1.0058931112289429, +1.04593825340271, +1.0472041368484497, +0.9489179253578186, +0.9394512176513672, +1.1532429456710815, +1.0286507606506348, +0.9268923401832581, +1.0516579151153564, +0.9983264803886414, +0.8906401991844177, +1.0432912111282349, +0.21294505894184113, +0.20391416549682617, +0.22390787303447723, +0.17348848283290863, +0.18768863379955292, +0.1515849083662033, +0.1786104440689087, +0.19343066215515137, +0.19859756529331207, +0.18370799720287323, +-0.21202398836612701, +-0.1732284277677536, +0.1995968371629715, +-0.19693467020988464, +0.2309262454509735, +0.1606905162334442, +0.21965041756629944, +0.18951117992401123, +0.20458532869815826, +0.21865180134773254, +0.2073848694562912, +0.1924424022436142, +0.20269913971424103, +0.169209823012352, +0.18684372305870056, +0.21740800142288208, +-0.18193769454956055, +0.2218540757894516, +0.1581016480922699, +0.18916861712932587, +-0.20877572894096375, +0.20118173956871033, +0.19431014358997345, +0.2149968147277832, +0.20911788940429688, +0.20109477639198303, +0.17727482318878174, +0.21254976093769073, +0.22656312584877014, +0.20583057403564453, +0.20740433037281036, +-0.2374478280544281, +0.17533200979232788, +0.2148841768503189, +0.20741203427314758, +-0.20226633548736572, +0.20118026435375214, +0.2034558206796646, +0.223631352186203, +0.20013371109962463, +0.2049318253993988, +0.1778668463230133, +0.2198658436536789, +0.15792441368103027, +0.20722335577011108, +0.20273740589618683, +0.1921517699956894, +0.1885518878698349, +0.22690680623054504, +0.22386951744556427, +-0.21662864089012146, +0.20839013159275055, +0.21419234573841095, +0.22580164670944214, +0.22038567066192627, +0.20304478704929352, +0.16263510286808014, +0.20992939174175262, +0.1686086803674698, +0.1847061961889267, +0.2336626946926117, +-0.19196556508541107, +0.19218957424163818, +0.16083478927612305, +0.19604340195655823, +0.19140754640102386, +0.22136585414409637, +0.21524782478809357, +0.18526603281497955, +0.19942228496074677, +0.17736861109733582, +0.23117278516292572, +0.19175826013088226, +0.21068328619003296, +0.18002699315547943, +0.18631811439990997, +0.19678232073783875, +0.18630215525627136, +0.20820677280426025, +0.18234014511108398, +0.2315472811460495, +0.20958460867404938, +0.22908997535705566, +0.18625368177890778, +0.19343434274196625, +0.2156238555908203, +0.2802457809448242, +0.26383736729621887, +0.2521091401576996, +0.17740988731384277, +0.13062648475170135, +0.2783283591270447, +0.14852921664714813, +0.23234347999095917, +0.23148562014102936, +0.16490095853805542, +0.2272249013185501, +0.2243501842021942, +0.13539870083332062, +0.22129346430301666, +0.20161083340644836, +0.2825969457626343, +0.1835480034351349, +0.1794462949037552, +0.25270843505859375, +0.11787513643503189, +0.1312503218650818, +0.13000693917274475, +0.24379421770572662, +0.17342032492160797, +0.12210024893283844, +0.21827250719070435, +0.18118952214717865, +0.11208534985780716, +0.22594425082206726, +0.18016885221004486, +0.2757919728755951, +0.2797545790672302, +0.2526308000087738, +0.22979560494422913, +0.1943797767162323, +0.28031110763549805, +0.17136524617671967, +0.22221054136753082, +0.2243485003709793, +0.2568708062171936, +0.15224607288837433, +0.25352272391319275, +0.19610841572284698, +0.16798269748687744, +0.1957683265209198, +0.22012561559677124, +0.2613263428211212, +0.2808445692062378, +0.2415308952331543, +0.1213487908244133, +0.22671522200107574, +0.2267053872346878, +0.24466224014759064, +0.265921026468277, +0.17360897362232208, +0.16807840764522552, +0.22610682249069214, +0.14273279905319214, +0.1717567890882492, +0.10555463284254074, +0.13121633231639862, +0.10871081054210663, +0.13906162977218628, +0.16203700006008148 +] +}, +"fold0_training.feather": { +"Event|event|||": [ +1.0, +25.0, +55.0, +65.0, +75.0, +81.0, +99.0, +119.0, +171.0, +181.0, +203.0, +215.0, +235.0, +263.0, +307.0, +315.0, +329.0, +339.0, +367.0, +429.0, +439.0, +497.0, +517.0, +529.0, +567.0, +569.0, +585.0, +599.0, +631.0, +635.0, +645.0, +655.0, +667.0, +681.0, +691.0, +715.0, +729.0, +743.0, +747.0, +769.0, +771.0, +779.0, +789.0, +799.0, +151.0, +357.0, +441.0, +481.0, +591.0, +633.0, +647.0, +17.0, +31.0, +51.0, +77.0, +95.0, +101.0, +105.0, +111.0, +115.0, +129.0, +147.0, +159.0, +169.0, +173.0, +175.0, +193.0, +201.0, +217.0, +221.0, +227.0, +231.0, +247.0, +253.0, +273.0, +303.0, +323.0, +357.0, +367.0, +399.0, +415.0, +425.0, +441.0, +451.0, +509.0, +511.0, +533.0, +543.0, +545.0, +573.0, +581.0, +597.0, +631.0, +635.0, +653.0, +671.0, +673.0, +737.0, +751.0, +759.0, +775.0, +3.0, +27.0, +67.0, +91.0, +99.0, +117.0, +139.0, +141.0, +179.0, +229.0, +245.0, +297.0, +345.0, +347.0, +373.0, +377.0, +409.0, +453.0, +461.0, +473.0, +483.0, +485.0, +507.0, +525.0, +547.0, +549.0, +647.0, +719.0, +731.0, +749.0 +], +"Event|id|||": [ +0.0, +5.0, +8.0, +9.0, +13.0, +16.0, +20.0, +24.0, +32.0, +33.0, +40.0, +41.0, +45.0, +49.0, +61.0, +65.0, +68.0, +72.0, +80.0, +92.0, +93.0, +100.0, +109.0, +116.0, +124.0, +125.0, +129.0, +132.0, +136.0, +137.0, +140.0, +144.0, +145.0, +148.0, +153.0, +157.0, +160.0, +164.0, +165.0, +168.0, +169.0, +172.0, +173.0, +176.0, +8.0, +17.0, +24.0, +25.0, +32.0, +36.0, +37.0, +4.0, +8.0, +12.0, +16.0, +21.0, +24.0, +25.0, +28.0, +29.0, +32.0, +36.0, +40.0, +41.0, +44.0, +45.0, +49.0, +52.0, +56.0, +57.0, +60.0, +61.0, +64.0, +68.0, +72.0, +77.0, +81.0, +85.0, +88.0, +96.0, +97.0, +101.0, +105.0, +108.0, +120.0, +121.0, +125.0, +128.0, +129.0, +137.0, +140.0, +144.0, +152.0, +156.0, +164.0, +172.0, +173.0, +181.0, +185.0, +188.0, +193.0, +0.0, +4.0, +9.0, +12.0, +13.0, +17.0, +20.0, +21.0, +29.0, +37.0, +40.0, +48.0, +52.0, +53.0, +56.0, +57.0, +64.0, +68.0, +69.0, +73.0, +76.0, +77.0, +81.0, +84.0, +88.0, +89.0, +105.0, +113.0, +116.0, +121.0 +], +"Labels|is_HH|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_Z|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_jetFakes|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|class_weight|||": [ +1.284760594367981, +1.2682557106018066, +1.4248591661453247, +1.124145746231079, +1.0656766891479492, +1.3371435403823853, +1.5213240385055542, +1.2107607126235962, +1.5527280569076538, +1.3333946466445923, +1.3665745258331299, +1.3908281326293945, +1.2785987854003906, +1.304817795753479, +1.5198208093643188, +1.2602115869522095, +1.5124455690383911, +1.1360878944396973, +-1.2367452383041382, +1.4916964769363403, +1.3086894750595093, +1.5918116569519043, +1.4156184196472168, +1.3317691087722778, +1.2693942785263062, +1.3026219606399536, +1.426637887954712, +1.2165156602859497, +1.30330228805542, +1.4782404899597168, +1.3518506288528442, +-1.3668577671051025, +1.302553415298462, +1.1336480379104614, +-1.2584260702133179, +1.2585619688034058, +-1.2056008577346802, +1.2465919256210327, +1.4297256469726562, +1.4988166093826294, +1.2214962244033813, +1.2724111080169678, +1.4815831184387207, +1.1970897912979126, +1.4152766466140747, +1.4169894456863403, +1.5604723691940308, +1.3918845653533936, +1.4230159521102905, +1.350852370262146, +1.205140233039856, +1.3682217597961426, +1.1640716791152954, +1.2593517303466797, +1.2978795766830444, +1.2326425313949585, +1.339253306388855, +-1.3213907480239868, +1.0781999826431274, +1.4738086462020874, +1.271580696105957, +1.4671082496643066, +1.2912485599517822, +1.3600691556930542, +1.2536826133728027, +1.458762526512146, +1.0608292818069458, +-1.4008418321609497, +1.349887728691101, +1.3037806749343872, +1.4031376838684082, +1.34930419921875, +1.5201915502548218, +1.3916399478912354, +-1.5932255983352661, +1.1764414310455322, +1.3916916847229004, +1.3498778343200684, +1.5005199909210205, +1.19344961643219, +1.4752541780471802, +1.3603259325027466, +1.2892985343933105, +1.5021179914474487, +1.5150821208953857, +1.4787421226501465, +1.4085826873779297, +1.1313292980194092, +1.2393401861190796, +1.0791680812835693, +1.3154104948043823, +1.2843048572540283, +1.2430965900421143, +1.1901065111160278, +1.2079437971115112, +1.3970242738723755, +1.2234644889831543, +1.5536341667175293, +1.5371462106704712, +1.2497235536575317, +1.4467912912368774, +2.5037684440612793, +2.2523906230926514, +2.486638069152832, +2.0758004188537598, +2.068136215209961, +2.0043866634368896, +1.9770774841308594, +1.8012291193008423, +2.257744789123535, +1.1615064144134521, +1.5493698120117188, +1.0013916492462158, +1.609662413597107, +2.463977336883545, +2.2570512294769287, +2.053037166595459, +2.50435209274292, +1.531009316444397, +1.9852708578109741, +2.2949321269989014, +1.3601950407028198, +2.265019655227661, +1.7520694732666016, +1.7490310668945312, +2.3347387313842773, +2.5091183185577393, +2.375788450241089, +2.020080804824829, +0.9430449604988098, +0.9712428450584412 +], +"Nominal|cut|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|variables|m_vis||": [ +186.66583251953125, +44.11056900024414, +125.2322769165039, +90.8484878540039, +167.2926025390625, +98.80756378173828, +189.49000549316406, +43.08942794799805, +194.38075256347656, +119.49313354492188, +199.71145629882812, +21.921167373657227, +6.498188018798828, +63.55463790893555, +190.89732360839844, +193.3090362548828, +97.06002807617188, +168.8418426513672, +104.45367431640625, +169.96469116210938, +169.72886657714844, +11.054072380065918, +46.53813934326172, +62.91473388671875, +1.4303278923034668, +153.7004852294922, +36.43866729736328, +105.89411163330078, +36.87431335449219, +142.39202880859375, +84.99166870117188, +45.8249397277832, +105.02173614501953, +3.7810816764831543, +31.956279754638672, +50.34589385986328, +129.69837951660156, +186.58201599121094, +154.55850219726562, +74.79369354248047, +152.96240234375, +10.80255126953125, +127.5760498046875, +42.51483917236328, +13.101043701171875, +174.37257385253906, +36.996246337890625, +109.66242980957031, +124.59757995605469, +58.885894775390625, +4.546611309051514, +159.80813598632812, +165.8763885498047, +68.58003997802734, +156.33106994628906, +60.71796798706055, +58.143035888671875, +55.04438400268555, +194.0750732421875, +68.09620666503906, +7.943099498748779, +180.6268310546875, +43.36221694946289, +177.46002197265625, +131.0148468017578, +128.228759765625, +8.898548126220703, +67.21119689941406, +194.38658142089844, +132.0292205810547, +19.438081741333008, +24.97596549987793, +156.6409149169922, +182.16229248046875, +184.74563598632812, +67.86617279052734, +34.11323547363281, +179.4898681640625, +107.96224212646484, +16.34490394592285, +96.86859893798828, +70.33285522460938, +30.318212509155273, +90.8773422241211, +46.28612518310547, +85.20455169677734, +135.23289489746094, +64.35441589355469, +91.160888671875, +149.23602294921875, +160.7477264404297, +178.851318359375, +16.9868106842041, +150.61148071289062, +78.21647644042969, +20.060001373291016, +21.459226608276367, +152.35438537597656, +65.09091186523438, +111.29354858398438, +161.27955627441406, +124.0368423461914, +141.6056365966797, +141.57049560546875, +0.7929203510284424, +4.129371166229248, +164.35244750976562, +104.85713958740234, +72.57670593261719, +194.9633331298828, +154.14971923828125, +61.87875747680664, +190.4710693359375, +133.72119140625, +175.96055603027344, +72.19536590576172, +60.01213455200195, +42.48881530761719, +61.354862213134766, +30.9301700592041, +170.6034393310547, +53.5555305480957, +191.96119689941406, +173.82655334472656, +130.42752075195312, +14.332592010498047, +170.1824951171875, +89.98041534423828, +5.379977226257324, +99.99954986572266, +111.80836486816406 +], +"Nominal|variables|score||": [ +0.36816126108169556, +0.19367370009422302, +0.39963969588279724, +0.16777534782886505, +0.4922933280467987, +0.8671920895576477, +0.9246373772621155, +0.5586402416229248, +0.40845662355422974, +0.8356440663337708, +0.13481281697750092, +0.05405281111598015, +0.0056808339431881905, +0.5268377661705017, +0.7759413719177246, +0.4692222476005554, +0.005079607013612986, +0.27144357562065125, +0.5982310771942139, +0.024935100227594376, +0.2574117183685303, +0.9472895264625549, +0.5338500738143921, +0.8403565287590027, +0.33378463983535767, +0.9294244647026062, +0.3777795732021332, +0.36967170238494873, +0.18761980533599854, +0.5406442880630493, +0.8460321426391602, +0.5316637754440308, +0.4054313600063324, +0.6551352143287659, +0.2895398736000061, +0.4924296438694, +0.08040191233158112, +0.3944774568080902, +0.3029542565345764, +0.3952030837535858, +0.6742061972618103, +0.5979412198066711, +0.14708231389522552, +0.6253337264060974, +0.0967186912894249, +0.6223747730255127, +0.4405147433280945, +0.8806897401809692, +0.6054671406745911, +0.8692955374717712, +0.8585750460624695, +0.5368252992630005, +0.32358047366142273, +0.1690126359462738, +0.8066079616546631, +0.6133885383605957, +0.5384281873703003, +0.18496353924274445, +0.9185429811477661, +0.2201387882232666, +0.7119467854499817, +0.9436266422271729, +0.42666852474212646, +0.7013814449310303, +0.3655780553817749, +0.8406569361686707, +0.5326656699180603, +0.44001081585884094, +0.722663402557373, +0.01355897355824709, +0.04755258560180664, +0.5894360542297363, +0.28421762585639954, +0.36571741104125977, +0.9571941494941711, +0.6507647633552551, +0.46708667278289795, +0.19873303174972534, +0.08857365697622299, +0.19513492286205292, +0.7717576026916504, +0.4872938096523285, +0.48068052530288696, +0.04359734058380127, +0.29828694462776184, +0.33820220828056335, +0.8896300196647644, +0.14379346370697021, +0.41314518451690674, +0.7453526854515076, +0.2863852381706238, +0.3797747790813446, +0.4031670093536377, +0.41543155908584595, +0.17687509953975677, +0.8566246032714844, +0.7995546460151672, +0.16920752823352814, +0.5094504952430725, +0.5566217303276062, +0.9119957685470581, +0.06757303327322006, +0.9166528582572937, +0.8375165462493896, +0.5670667886734009, +0.9835124015808105, +0.40304744243621826, +0.8206666707992554, +0.8637899160385132, +0.5692679286003113, +0.5469880104064941, +0.07329145073890686, +0.6616841554641724, +0.0053036026656627655, +0.30492308735847473, +0.5144152641296387, +0.42543190717697144, +0.9231418967247009, +0.8205293416976929, +0.1230384111404419, +0.4082365036010742, +0.6981847286224365, +0.9310054779052734, +0.6789525151252747, +0.4334551692008972, +0.9427131414413452, +0.9081960916519165, +0.43045109510421753, +0.3143662214279175, +0.14900188148021698, +0.48896536231040955 +], +"Nominal|weight|||": [ +0.9494823813438416, +0.9372847080230713, +1.0530201196670532, +0.8307824730873108, +0.7875718474388123, +0.9881952404975891, +1.1243109703063965, +0.8947939276695251, +1.147519588470459, +0.9854246377944946, +1.0099457502365112, +1.0278699398040771, +0.9449285864830017, +0.9643053412437439, +1.1232000589370728, +0.9313398599624634, +1.1177494525909424, +0.8396081328392029, +-0.9139974117279053, +1.1024152040481567, +0.9671667218208313, +1.1764037609100342, +1.046190857887268, +0.9842233061790466, +0.9381262063980103, +0.9626825451850891, +1.0543346405029297, +0.8990470170974731, +0.9631853699684143, +1.0924707651138306, +0.9990642666816711, +-1.0101550817489624, +0.96263188123703, +0.8378050327301025, +-0.930020272731781, +0.9301207065582275, +-0.8909806609153748, +0.9212744235992432, +1.0566165447235107, +1.1076772212982178, +0.9027279019355774, +0.9403557181358337, +1.0949410200119019, +0.8846907019615173, +1.04593825340271, +1.0472041368484497, +1.1532429456710815, +1.0286507606506348, +1.0516579151153564, +0.9983264803886414, +0.8906401991844177, +0.20391416549682617, +0.17348848283290863, +0.18768863379955292, +0.19343066215515137, +0.18370799720287323, +0.1995968371629715, +-0.19693467020988464, +0.1606905162334442, +0.21965041756629944, +0.18951117992401123, +0.21865180134773254, +0.1924424022436142, +0.20269913971424103, +0.18684372305870056, +0.21740800142288208, +0.1581016480922699, +-0.20877572894096375, +0.20118173956871033, +0.19431014358997345, +0.20911788940429688, +0.20109477639198303, +0.22656312584877014, +0.20740433037281036, +-0.2374478280544281, +0.17533200979232788, +0.20741203427314758, +0.20118026435375214, +0.223631352186203, +0.1778668463230133, +0.2198658436536789, +0.20273740589618683, +0.1921517699956894, +0.22386951744556427, +0.22580164670944214, +0.22038567066192627, +0.20992939174175262, +0.1686086803674698, +0.1847061961889267, +0.16083478927612305, +0.19604340195655823, +0.19140754640102386, +0.18526603281497955, +0.17736861109733582, +0.18002699315547943, +0.20820677280426025, +0.18234014511108398, +0.2315472811460495, +0.22908997535705566, +0.18625368177890778, +0.2156238555908203, +0.2802457809448242, +0.2521091401576996, +0.2783283591270447, +0.23234347999095917, +0.23148562014102936, +0.2243501842021942, +0.22129346430301666, +0.20161083340644836, +0.25270843505859375, +0.13000693917274475, +0.17342032492160797, +0.11208534985780716, +0.18016885221004486, +0.2757919728755951, +0.2526308000087738, +0.22979560494422913, +0.28031110763549805, +0.17136524617671967, +0.22221054136753082, +0.2568708062171936, +0.15224607288837433, +0.25352272391319275, +0.19610841572284698, +0.1957683265209198, +0.2613263428211212, +0.2808445692062378, +0.265921026468277, +0.22610682249069214, +0.10555463284254074, +0.10871081054210663 +] +}, +"fold0_validation.feather": { +"Event|event|||": [ +5.0, +69.0, +93.0, +95.0, +111.0, +149.0, +183.0, +195.0, +217.0, +241.0, +243.0, +267.0, +287.0, +303.0, +309.0, +333.0, +343.0, +359.0, +365.0, +375.0, +421.0, +447.0, +501.0, +503.0, +507.0, +519.0, +525.0, +541.0, +555.0, +577.0, +593.0, +625.0, +627.0, +641.0, +679.0, +689.0, +695.0, +699.0, +717.0, +739.0, +773.0, +777.0, +791.0, +113.0, +381.0, +409.0, +579.0, +741.0, +11.0, +25.0, +57.0, +69.0, +91.0, +97.0, +99.0, +109.0, +143.0, +155.0, +171.0, +187.0, +191.0, +195.0, +225.0, +239.0, +241.0, +249.0, +315.0, +333.0, +359.0, +373.0, +377.0, +417.0, +419.0, +443.0, +449.0, +455.0, +487.0, +497.0, +513.0, +525.0, +553.0, +563.0, +569.0, +603.0, +605.0, +633.0, +641.0, +649.0, +651.0, +657.0, +659.0, +669.0, +745.0, +773.0, +15.0, +29.0, +37.0, +81.0, +101.0, +113.0, +125.0, +143.0, +149.0, +159.0, +185.0, +197.0, +231.0, +271.0, +273.0, +295.0, +321.0, +365.0, +385.0, +465.0, +515.0, +545.0, +575.0, +585.0, +617.0, +629.0, +637.0, +665.0, +689.0, +723.0, +725.0, +743.0, +765.0, +771.0 +], +"Event|id|||": [ +2.0, +10.0, +18.0, +19.0, +22.0, +30.0, +34.0, +38.0, +43.0, +46.0, +47.0, +50.0, +54.0, +59.0, +63.0, +70.0, +74.0, +78.0, +79.0, +83.0, +91.0, +95.0, +102.0, +103.0, +106.0, +111.0, +114.0, +118.0, +122.0, +127.0, +131.0, +134.0, +135.0, +139.0, +147.0, +151.0, +154.0, +155.0, +158.0, +163.0, +170.0, +171.0, +174.0, +7.0, +18.0, +22.0, +31.0, +39.0, +2.0, +7.0, +14.0, +15.0, +19.0, +22.0, +23.0, +26.0, +35.0, +39.0, +42.0, +46.0, +47.0, +50.0, +59.0, +62.0, +63.0, +66.0, +79.0, +82.0, +86.0, +90.0, +91.0, +98.0, +99.0, +106.0, +107.0, +110.0, +115.0, +118.0, +122.0, +123.0, +131.0, +134.0, +135.0, +146.0, +147.0, +154.0, +158.0, +162.0, +163.0, +166.0, +167.0, +170.0, +183.0, +191.0, +2.0, +6.0, +7.0, +10.0, +14.0, +15.0, +18.0, +22.0, +23.0, +27.0, +30.0, +31.0, +38.0, +42.0, +43.0, +46.0, +51.0, +55.0, +59.0, +70.0, +82.0, +86.0, +91.0, +95.0, +99.0, +102.0, +103.0, +107.0, +111.0, +114.0, +115.0, +118.0, +122.0, +123.0 +], +"Labels|is_HH|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_Z|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_jetFakes|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|class_weight|||": [ +1.1845577955245972, +1.15827476978302, +1.2010626792907715, +1.348946213722229, +1.5215657949447632, +1.3363399505615234, +-1.4046111106872559, +1.1026256084442139, +1.3136916160583496, +1.5330488681793213, +1.169093132019043, +1.5065038204193115, +1.4672478437423706, +1.3282512426376343, +1.2278237342834473, +1.323686957359314, +1.3813972473144531, +1.4656234979629517, +1.2596831321716309, +1.3942092657089233, +1.2840518951416016, +1.2987631559371948, +1.3959732055664062, +1.2571744918823242, +1.2710822820663452, +1.271852970123291, +-1.435961365699768, +1.3355042934417725, +1.2743515968322754, +1.3315205574035645, +1.0254859924316406, +1.490836262702942, +1.2660773992538452, +1.4079248905181885, +1.2989705801010132, +1.2295541763305664, +-1.3024036884307861, +1.3368446826934814, +1.2533621788024902, +1.2499797344207764, +1.37913978099823, +1.361519455909729, +1.3116965293884277, +1.326505184173584, +1.2513700723648071, +1.2388859987258911, +1.2223241329193115, +1.3758232593536377, +1.6965867280960083, +1.7839301824569702, +1.2077150344848633, +1.4230341911315918, +1.5822765827178955, +-1.6892483234405518, +-1.3801543712615967, +1.8398473262786865, +1.629982590675354, +1.652287244796753, +1.3481371402740479, +-1.4495432376861572, +1.7675670385360718, +1.507153868675232, +1.7129335403442383, +1.4123929738998413, +1.6934372186660767, +1.6399037837982178, +1.7120361328125, +-1.611506700515747, +1.620983600616455, +1.5945154428482056, +1.632743239402771, +1.2582234144210815, +1.6510004997253418, +1.5022401809692383, +1.8078234195709229, +-1.7259347438812256, +1.6602964401245117, +1.706524133682251, +1.6177088022232056, +1.2957546710968018, +1.8616492748260498, +-1.529437780380249, +1.5312225818634033, +1.7636773586273193, +1.7149333953857422, +1.5888473987579346, +1.8418115377426147, +1.527786135673523, +1.678566575050354, +1.484443187713623, +1.5678141117095947, +1.4843159914016724, +1.6698131561279297, +1.5411399602890015, +2.2708780765533447, +1.526987075805664, +1.124316930770874, +1.2784078121185303, +1.4193212985992432, +1.9557504653930664, +1.1653919219970703, +2.4323439598083496, +1.5798184871673584, +1.5445146560668945, +1.0145646333694458, +1.1296863555908203, +2.0983645915985107, +1.0509307384490967, +1.8786962032318115, +1.559518814086914, +1.9447277784347534, +2.40787935256958, +1.673048734664917, +1.9309929609298706, +1.4458460807800293, +1.894646167755127, +2.0788838863372803, +1.04446280002594, +1.9513635635375977, +1.9512789249420166, +2.1058356761932373, +1.4942721128463745, +1.4466699361801147, +1.2285174131393433, +1.478330135345459, +1.1293938159942627, +1.1969192028045654, +1.394670844078064 +], +"Nominal|cut|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|variables|m_vis||": [ +55.10929489135742, +97.41753387451172, +41.54464340209961, +60.2873649597168, +71.15959167480469, +47.30316925048828, +134.31195068359375, +110.9936752319336, +108.32662200927734, +52.33747100830078, +24.047170639038086, +178.6932830810547, +196.35423278808594, +31.8718204498291, +116.39935302734375, +94.18435668945312, +47.244850158691406, +190.9456329345703, +116.57389068603516, +25.702062606811523, +115.60578155517578, +89.62925720214844, +39.585533142089844, +186.66580200195312, +120.26956176757812, +168.51129150390625, +20.972179412841797, +25.18712043762207, +80.41912078857422, +169.6871795654297, +159.3090362548828, +24.534893035888672, +37.45365524291992, +16.549219131469727, +156.25991821289062, +121.72319030761719, +87.8974380493164, +171.7176513671875, +24.459325790405273, +25.120956420898438, +3.348132371902466, +85.80735778808594, +135.18458557128906, +164.84934997558594, +125.12049865722656, +119.23509979248047, +24.283987045288086, +95.35750579833984, +108.78137969970703, +0.7061734795570374, +42.019100189208984, +34.87803649902344, +53.012210845947266, +89.95378112792969, +63.58363723754883, +9.347379684448242, +28.033048629760742, +69.62303161621094, +3.703937292098999, +58.514957427978516, +38.98493194580078, +126.66663360595703, +158.07675170898438, +173.27488708496094, +101.54903411865234, +183.59603881835938, +199.25901794433594, +156.0376434326172, +72.98412322998047, +106.72281646728516, +162.1681671142578, +193.57089233398438, +131.78594970703125, +60.3992919921875, +94.59500885009766, +141.63783264160156, +85.15866088867188, +154.47607421875, +101.9181900024414, +37.424095153808594, +177.7661590576172, +116.04412078857422, +38.319923400878906, +156.97067260742188, +12.030562400817871, +96.15202331542969, +83.19038391113281, +97.79571533203125, +141.5839385986328, +116.93480682373047, +173.1746368408203, +170.97726440429688, +182.02777099609375, +168.6168670654297, +26.34201431274414, +99.72830963134766, +34.53087615966797, +118.05786895751953, +136.69822692871094, +91.07957458496094, +184.13099670410156, +20.81389808654785, +166.1655731201172, +82.14822387695312, +198.44699096679688, +6.751111030578613, +16.74203109741211, +150.9921875, +40.383846282958984, +161.20887756347656, +164.66915893554688, +82.55097198486328, +59.05020523071289, +171.51942443847656, +95.75508117675781, +87.66871643066406, +111.02153015136719, +193.480712890625, +14.831422805786133, +102.70748901367188, +170.85028076171875, +66.8148422241211, +142.08721923828125, +96.49951934814453, +124.74366760253906, +13.357159614562988, +135.5469207763672, +132.27371215820312 +], +"Nominal|variables|score||": [ +0.4347307085990906, +0.40611791610717773, +0.673903226852417, +0.9514822959899902, +0.4977148175239563, +0.7100719809532166, +0.7767874598503113, +0.26277080178260803, +0.23628748953342438, +0.8563485741615295, +0.7230667471885681, +0.5556129813194275, +0.7097959518432617, +0.9149446487426758, +0.5485535264015198, +0.2728501260280609, +0.9773766994476318, +0.6876230835914612, +0.811919629573822, +0.5304697155952454, +0.36268240213394165, +0.9102192521095276, +0.3357153534889221, +0.11187803000211716, +0.006591710727661848, +0.39859193563461304, +0.4345611333847046, +0.3671662211418152, +0.2430853247642517, +0.9664534330368042, +0.5373026132583618, +0.34925004839897156, +0.7275139689445496, +0.2087317705154419, +0.32390296459198, +0.9172378778457642, +0.7735388875007629, +0.6639648079872131, +0.5517899394035339, +0.31557807326316833, +0.6919049024581909, +0.22562840580940247, +0.2850974202156067, +0.6150316596031189, +0.370372474193573, +0.3928617537021637, +0.4091460704803467, +0.5178007483482361, +0.44172045588493347, +0.3219858407974243, +0.34253814816474915, +0.7126178741455078, +0.01419280469417572, +0.609367311000824, +0.48502036929130554, +0.6846621632575989, +0.17876386642456055, +0.7516078352928162, +0.05499085411429405, +0.8945565223693848, +0.2752549648284912, +0.9036421179771423, +0.1612733006477356, +0.20094236731529236, +0.2177913933992386, +0.2753584384918213, +0.7324953079223633, +0.9284521341323853, +0.6660018563270569, +0.8753789663314819, +0.46786582469940186, +0.4195736050605774, +0.8657265901565552, +0.286350816488266, +0.37636756896972656, +0.14077213406562805, +0.17040470242500305, +0.06563004106283188, +0.9635827541351318, +0.5112373232841492, +0.6194670796394348, +0.5390298366546631, +0.10461564362049103, +0.14735586941242218, +0.08066675812005997, +0.6235045790672302, +0.4202961027622223, +0.05235562101006508, +0.9947258234024048, +0.43593743443489075, +0.5281477570533752, +0.9334966540336609, +0.18672071397304535, +0.6840742230415344, +0.5667415857315063, +0.8188878893852234, +0.3815905749797821, +0.3959242105484009, +0.11842425912618637, +0.4554402828216553, +0.05859396234154701, +0.6200941205024719, +0.848947286605835, +0.07414238899946213, +0.8688294887542725, +0.8087661266326904, +0.04112844914197922, +0.09203371405601501, +0.8954766988754272, +0.6550143361091614, +0.15782006084918976, +0.32564592361450195, +0.04968304932117462, +0.9628732204437256, +0.38979974389076233, +0.7832086086273193, +0.8953193426132202, +0.6698293089866638, +0.29817962646484375, +0.899118185043335, +0.5350125432014465, +0.6206655502319336, +0.7615513801574707, +0.6214949488639832, +0.6223618388175964, +0.027562055736780167, +0.7648707628250122, +0.3490409553050995 +], +"Nominal|weight|||": [ +0.8982539772987366, +0.878323495388031, +0.9107697010040283, +1.022910237312317, +1.1538082361221313, +1.0133508443832397, +-1.0651211738586426, +0.8361245393753052, +0.996176540851593, +1.1625158786773682, +0.8865271210670471, +1.1423866748809814, +1.1126188039779663, +1.0072171688079834, +0.9310626983642578, +1.003756046295166, +1.047518014907837, +1.111387014389038, +0.9552217721939087, +1.0572333335876465, +0.9737007021903992, +0.9848563075065613, +1.0585709810256958, +0.9533194303512573, +0.9638657569885254, +0.9644501805305481, +-1.0888941287994385, +1.0127172470092773, +0.966344952583313, +1.009696364402771, +0.7776293754577637, +1.130505919456482, +0.9600705504417419, +1.0676339864730835, +0.9850135445594788, +0.932374894618988, +-0.9876169562339783, +1.0137336254119873, +0.9504285454750061, +0.9478636980056763, +1.0458061695098877, +1.0324445962905884, +0.9946637153625488, +1.0058931112289429, +0.9489179253578186, +0.9394512176513672, +0.9268923401832581, +1.0432912111282349, +0.21294505894184113, +0.22390787303447723, +0.1515849083662033, +0.1786104440689087, +0.19859756529331207, +-0.21202398836612701, +-0.1732284277677536, +0.2309262454509735, +0.20458532869815826, +0.2073848694562912, +0.169209823012352, +-0.18193769454956055, +0.2218540757894516, +0.18916861712932587, +0.2149968147277832, +0.17727482318878174, +0.21254976093769073, +0.20583057403564453, +0.2148841768503189, +-0.20226633548736572, +0.2034558206796646, +0.20013371109962463, +0.2049318253993988, +0.15792441368103027, +0.20722335577011108, +0.1885518878698349, +0.22690680623054504, +-0.21662864089012146, +0.20839013159275055, +0.21419234573841095, +0.20304478704929352, +0.16263510286808014, +0.2336626946926117, +-0.19196556508541107, +0.19218957424163818, +0.22136585414409637, +0.21524782478809357, +0.19942228496074677, +0.23117278516292572, +0.19175826013088226, +0.21068328619003296, +0.18631811439990997, +0.19678232073783875, +0.18630215525627136, +0.20958460867404938, +0.19343434274196625, +0.26383736729621887, +0.17740988731384277, +0.13062648475170135, +0.14852921664714813, +0.16490095853805542, +0.2272249013185501, +0.13539870083332062, +0.2825969457626343, +0.1835480034351349, +0.1794462949037552, +0.11787513643503189, +0.1312503218650818, +0.24379421770572662, +0.12210024893283844, +0.21827250719070435, +0.18118952214717865, +0.22594425082206726, +0.2797545790672302, +0.1943797767162323, +0.2243485003709793, +0.16798269748687744, +0.22012561559677124, +0.2415308952331543, +0.1213487908244133, +0.22671522200107574, +0.2267053872346878, +0.24466224014759064, +0.17360897362232208, +0.16807840764522552, +0.14273279905319214, +0.1717567890882492, +0.13121633231639862, +0.13906162977218628, +0.16203700006008148 +] +}, +"fold1.feather": { +"Event|event|||": [ +2.0, +10.0, +16.0, +44.0, +46.0, +72.0, +74.0, +78.0, +80.0, +86.0, +100.0, +114.0, +126.0, +128.0, +130.0, +136.0, +140.0, +162.0, +184.0, +188.0, +190.0, +200.0, +216.0, +230.0, +260.0, +272.0, +276.0, +278.0, +290.0, +296.0, +298.0, +300.0, +306.0, +308.0, +310.0, +318.0, +322.0, +330.0, +336.0, +340.0, +348.0, +350.0, +356.0, +370.0, +374.0, +378.0, +382.0, +384.0, +390.0, +408.0, +418.0, +420.0, +444.0, +448.0, +456.0, +464.0, +472.0, +500.0, +504.0, +506.0, +514.0, +516.0, +518.0, +520.0, +522.0, +528.0, +538.0, +548.0, +552.0, +554.0, +558.0, +572.0, +582.0, +586.0, +610.0, +638.0, +650.0, +652.0, +654.0, +668.0, +682.0, +684.0, +690.0, +704.0, +722.0, +734.0, +736.0, +748.0, +754.0, +792.0, +18.0, +28.0, +30.0, +50.0, +68.0, +84.0, +102.0, +174.0, +214.0, +236.0, +240.0, +250.0, +252.0, +254.0, +262.0, +386.0, +392.0, +402.0, +416.0, +486.0, +496.0, +510.0, +544.0, +562.0, +596.0, +600.0, +624.0, +700.0, +776.0, +796.0, +6.0, +10.0, +14.0, +18.0, +20.0, +36.0, +40.0, +48.0, +56.0, +82.0, +88.0, +94.0, +110.0, +124.0, +126.0, +132.0, +142.0, +150.0, +152.0, +172.0, +192.0, +196.0, +206.0, +214.0, +216.0, +222.0, +248.0, +252.0, +254.0, +258.0, +270.0, +276.0, +280.0, +288.0, +300.0, +306.0, +322.0, +346.0, +352.0, +364.0, +372.0, +390.0, +392.0, +394.0, +396.0, +420.0, +430.0, +432.0, +436.0, +454.0, +458.0, +470.0, +474.0, +484.0, +488.0, +494.0, +500.0, +532.0, +538.0, +540.0, +546.0, +556.0, +562.0, +570.0, +574.0, +576.0, +582.0, +586.0, +592.0, +598.0, +608.0, +614.0, +616.0, +618.0, +632.0, +634.0, +640.0, +642.0, +646.0, +648.0, +654.0, +660.0, +668.0, +670.0, +678.0, +680.0, +690.0, +702.0, +704.0, +708.0, +716.0, +740.0, +750.0, +754.0, +758.0, +760.0, +770.0, +774.0, +782.0, +790.0, +8.0, +16.0, +28.0, +50.0, +82.0, +114.0, +134.0, +150.0, +154.0, +156.0, +160.0, +198.0, +204.0, +206.0, +214.0, +220.0, +234.0, +252.0, +278.0, +288.0, +296.0, +300.0, +304.0, +364.0, +384.0, +394.0, +398.0, +404.0, +408.0, +412.0, +446.0, +448.0, +466.0, +472.0, +474.0, +478.0, +486.0, +490.0, +504.0, +520.0, +536.0, +546.0, +554.0, +578.0, +582.0, +584.0, +594.0, +606.0, +610.0, +618.0, +622.0, +646.0, +648.0, +670.0, +682.0, +688.0, +702.0, +742.0, +746.0, +748.0, +798.0 +], +"Event|id|||": [ +1.0, +3.0, +4.0, +6.0, +7.0, +11.0, +12.0, +14.0, +15.0, +17.0, +21.0, +23.0, +25.0, +26.0, +27.0, +28.0, +29.0, +31.0, +35.0, +36.0, +37.0, +39.0, +42.0, +44.0, +48.0, +51.0, +52.0, +53.0, +55.0, +56.0, +57.0, +58.0, +60.0, +62.0, +64.0, +66.0, +67.0, +69.0, +71.0, +73.0, +75.0, +76.0, +77.0, +81.0, +82.0, +84.0, +85.0, +86.0, +87.0, +88.0, +89.0, +90.0, +94.0, +96.0, +97.0, +98.0, +99.0, +101.0, +104.0, +105.0, +107.0, +108.0, +110.0, +112.0, +113.0, +115.0, +117.0, +119.0, +120.0, +121.0, +123.0, +126.0, +128.0, +130.0, +133.0, +138.0, +141.0, +142.0, +143.0, +146.0, +149.0, +150.0, +152.0, +156.0, +159.0, +161.0, +162.0, +166.0, +167.0, +175.0, +0.0, +1.0, +2.0, +3.0, +4.0, +5.0, +6.0, +9.0, +10.0, +11.0, +12.0, +13.0, +14.0, +15.0, +16.0, +19.0, +20.0, +21.0, +23.0, +26.0, +27.0, +28.0, +29.0, +30.0, +33.0, +34.0, +35.0, +38.0, +40.0, +41.0, +0.0, +1.0, +3.0, +5.0, +6.0, +9.0, +10.0, +11.0, +13.0, +17.0, +18.0, +20.0, +27.0, +30.0, +31.0, +33.0, +34.0, +37.0, +38.0, +43.0, +48.0, +51.0, +53.0, +54.0, +55.0, +58.0, +65.0, +67.0, +69.0, +70.0, +71.0, +73.0, +74.0, +75.0, +76.0, +78.0, +80.0, +83.0, +84.0, +87.0, +89.0, +92.0, +93.0, +94.0, +95.0, +100.0, +102.0, +103.0, +104.0, +109.0, +111.0, +112.0, +113.0, +114.0, +116.0, +117.0, +119.0, +124.0, +126.0, +127.0, +130.0, +132.0, +133.0, +136.0, +138.0, +139.0, +141.0, +142.0, +143.0, +145.0, +148.0, +149.0, +150.0, +151.0, +153.0, +155.0, +157.0, +159.0, +160.0, +161.0, +165.0, +168.0, +169.0, +171.0, +174.0, +175.0, +176.0, +177.0, +178.0, +179.0, +180.0, +182.0, +184.0, +186.0, +187.0, +189.0, +190.0, +192.0, +194.0, +195.0, +1.0, +3.0, +5.0, +8.0, +11.0, +16.0, +19.0, +24.0, +25.0, +26.0, +28.0, +32.0, +33.0, +34.0, +35.0, +36.0, +39.0, +41.0, +44.0, +45.0, +47.0, +49.0, +50.0, +54.0, +58.0, +60.0, +61.0, +62.0, +63.0, +65.0, +66.0, +67.0, +71.0, +72.0, +74.0, +75.0, +78.0, +79.0, +80.0, +83.0, +85.0, +87.0, +90.0, +92.0, +93.0, +94.0, +96.0, +97.0, +98.0, +100.0, +101.0, +104.0, +106.0, +108.0, +109.0, +110.0, +112.0, +117.0, +119.0, +120.0, +124.0 +], +"Labels|is_HH|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_Z|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_jetFakes|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|class_weight|||": [ +1.157373309135437, +1.2119472026824951, +-1.2977581024169922, +1.2540711164474487, +0.9935109615325928, +1.2852479219436646, +-1.3591357469558716, +1.045016884803772, +1.1537375450134277, +1.2426363229751587, +1.4046697616577148, +-1.3394960165023804, +1.3418837785720825, +1.3650429248809814, +1.5014784336090088, +-1.2731389999389648, +-1.5024272203445435, +1.1447640657424927, +1.3487533330917358, +0.9770246148109436, +1.33726966381073, +1.3880302906036377, +1.2644087076187134, +1.0779235363006592, +1.5990893840789795, +1.2082599401474, +1.2766965627670288, +1.1314359903335571, +1.4175692796707153, +1.433040738105774, +1.3477596044540405, +1.2005558013916016, +1.4161180257797241, +1.2393509149551392, +1.1726692914962769, +1.202541470527649, +1.2749735116958618, +1.4604045152664185, +0.9678056836128235, +-1.3792792558670044, +1.1492860317230225, +1.207068920135498, +1.3244925737380981, +1.4019657373428345, +1.406425952911377, +1.2268810272216797, +1.229810118675232, +1.1912204027175903, +1.479757308959961, +1.481244444847107, +1.2295769453048706, +1.3447521924972534, +1.2282345294952393, +1.4592770338058472, +1.4255704879760742, +1.2695999145507812, +1.3147755861282349, +1.3296257257461548, +1.308026909828186, +1.0867060422897339, +1.1441818475723267, +1.295491099357605, +1.226706862449646, +1.3045200109481812, +1.1804991960525513, +1.269754409790039, +1.3022832870483398, +1.0911160707473755, +-1.2029953002929688, +1.317764401435852, +1.5299036502838135, +-1.3706719875335693, +0.8548699021339417, +-1.4236050844192505, +1.5991690158843994, +1.3423207998275757, +1.3391590118408203, +1.1507744789123535, +1.191605806350708, +1.2658032178878784, +1.3615303039550781, +1.435227394104004, +-1.1692107915878296, +1.30879545211792, +1.1984301805496216, +1.3977775573730469, +1.0040044784545898, +1.1570993661880493, +1.3995552062988281, +1.6702444553375244, +1.3384109735488892, +1.3715236186981201, +1.283179521560669, +1.4172604084014893, +1.2267695665359497, +1.4770071506500244, +1.1803020238876343, +1.211395263671875, +1.2167117595672607, +1.3137249946594238, +1.3613579273223877, +1.2566118240356445, +1.4601374864578247, +1.1259064674377441, +1.2575477361679077, +1.3749353885650635, +1.3174272775650024, +1.13132905960083, +1.0864920616149902, +1.0597896575927734, +1.41120445728302, +1.3870201110839844, +1.1837677955627441, +-1.4855841398239136, +1.550632119178772, +1.3086360692977905, +1.6231552362442017, +1.1594514846801758, +1.1251509189605713, +1.1680608987808228, +1.5191649198532104, +-1.4823306798934937, +1.7574336528778076, +1.510159969329834, +1.6119451522827148, +1.4429476261138916, +1.6849706172943115, +1.3832899332046509, +1.5738714933395386, +1.3861089944839478, +1.4012752771377563, +1.5458098649978638, +1.8125444650650024, +1.1768600940704346, +1.4930367469787598, +1.4951776266098022, +1.682149052619934, +1.3212958574295044, +1.6495583057403564, +1.7846379280090332, +1.457719087600708, +1.3188714981079102, +1.4217208623886108, +1.4796229600906372, +-1.3426339626312256, +1.3861000537872314, +1.625080943107605, +1.729620337486267, +1.4836221933364868, +-1.7726168632507324, +1.4914427995681763, +1.664206624031067, +1.7107272148132324, +1.5858652591705322, +-1.4383108615875244, +1.6183701753616333, +1.6026723384857178, +1.4214359521865845, +1.5614029169082642, +1.790084958076477, +1.1882963180541992, +1.9151619672775269, +1.5056617259979248, +1.8732274770736694, +1.592201590538025, +1.5513235330581665, +1.4578973054885864, +1.709947109222412, +1.3287034034729004, +1.7092504501342773, +1.3935257196426392, +1.5628492832183838, +1.5707952976226807, +1.5982578992843628, +1.6575801372528076, +1.4043523073196411, +1.4669251441955566, +1.6315743923187256, +1.529054045677185, +1.4497015476226807, +1.2936269044876099, +1.459547519683838, +1.5592116117477417, +1.4594511985778809, +1.7768311500549316, +-1.5458569526672363, +1.7703512907028198, +1.877238392829895, +-1.502070665359497, +1.6206822395324707, +1.4252653121948242, +-1.54280424118042, +1.4658278226852417, +1.6158502101898193, +1.5095781087875366, +1.4180446863174438, +1.807956337928772, +1.268794059753418, +1.5264886617660522, +1.3861262798309326, +1.563451886177063, +1.4841339588165283, +1.8345822095870972, +-1.5622968673706055, +1.6380897760391235, +1.4364099502563477, +-1.5675106048583984, +1.617500901222229, +1.7321304082870483, +1.4001269340515137, +1.656920313835144, +1.639262080192566, +-1.6373659372329712, +1.6946706771850586, +1.602113962173462, +1.8140621185302734, +1.4626528024673462, +1.6458113193511963, +1.5541929006576538, +1.5572654008865356, +1.8917473554611206, +2.551164388656616, +1.118412971496582, +1.3309944868087769, +2.872175931930542, +2.9617576599121094, +1.8213472366333008, +1.1093312501907349, +1.4345191717147827, +1.157771110534668, +1.149962067604065, +1.050312876701355, +2.104215621948242, +1.7106530666351318, +1.9294499158859253, +1.4489213228225708, +1.8513984680175781, +2.509582757949829, +1.7776520252227783, +2.886659860610962, +2.4610342979431152, +1.9818264245986938, +1.6528717279434204, +2.6249401569366455, +1.4363107681274414, +1.4760770797729492, +1.1987619400024414, +2.960566759109497, +2.1958446502685547, +2.907038927078247, +2.15482759475708, +2.2481186389923096, +2.936732530593872, +1.359142780303955, +2.9243600368499756, +2.5546376705169678, +2.960906744003296, +2.1635587215423584, +1.0686336755752563, +1.8030682802200317, +2.881268262863159, +2.853321075439453, +2.223397731781006, +2.1121087074279785, +1.1113388538360596, +2.4001827239990234, +2.2522363662719727, +1.1826295852661133, +1.4975991249084473, +3.0691137313842773, +2.6391353607177734, +2.2671515941619873, +2.7486844062805176, +3.07163143157959, +2.1564791202545166, +1.868475079536438, +1.5321977138519287, +1.319819688796997, +1.8448638916015625, +1.421646237373352, +2.6669726371765137 +], +"Nominal|cut|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|variables|m_vis||": [ +26.80330467224121, +177.39996337890625, +69.60008239746094, +58.776588439941406, +132.78665161132812, +161.45663452148438, +16.251502990722656, +166.8208770751953, +88.3199691772461, +96.68263244628906, +76.46354675292969, +198.55665588378906, +175.02671813964844, +128.52525329589844, +24.38409996032715, +85.9190902709961, +153.71408081054688, +41.733985900878906, +168.7863311767578, +101.51437377929688, +129.3607177734375, +5.373172283172607, +79.01731872558594, +12.480319023132324, +54.79035949707031, +34.584075927734375, +31.03596305847168, +68.0808334350586, +58.03786849975586, +4.994962215423584, +187.90643310546875, +56.63726043701172, +130.25636291503906, +21.335712432861328, +160.59983825683594, +127.8777084350586, +15.709589958190918, +144.4632568359375, +140.5970001220703, +72.35379791259766, +124.36853790283203, +3.286137104034424, +58.42359161376953, +72.238037109375, +20.386240005493164, +23.1721248626709, +39.56154251098633, +67.5693359375, +120.49568939208984, +30.75895118713379, +30.352828979492188, +76.98511505126953, +41.82572937011719, +91.64057159423828, +101.28191375732422, +125.09959411621094, +124.07845306396484, +103.1474609375, +22.801513671875, +125.58702087402344, +37.447593688964844, +153.87936401367188, +48.223846435546875, +66.37504577636719, +34.996734619140625, +74.44880676269531, +190.42420959472656, +114.96017456054688, +16.231496810913086, +121.86991119384766, +142.38516235351562, +47.917755126953125, +133.9928436279297, +13.282011985778809, +88.65616607666016, +65.84884643554688, +111.30828857421875, +193.79042053222656, +199.13584899902344, +139.85687255859375, +162.60855102539062, +43.27293395996094, +171.35328674316406, +97.30050659179688, +159.83876037597656, +45.2013053894043, +170.06982421875, +169.51889038085938, +87.3871841430664, +95.11083221435547, +48.95226287841797, +187.81167602539062, +142.52914428710938, +93.99632263183594, +126.24661254882812, +193.9843292236328, +35.58858108520508, +14.20363712310791, +42.91796112060547, +175.06375122070312, +126.16552734375, +41.61675262451172, +65.14846801757812, +59.53611755371094, +169.78607177734375, +56.22067642211914, +126.89501953125, +189.36129760742188, +29.6226749420166, +54.76347732543945, +57.92788314819336, +188.5936737060547, +39.54636001586914, +143.38906860351562, +163.03997802734375, +67.04854583740234, +73.93669891357422, +10.471158981323242, +165.47776794433594, +194.39039611816406, +117.40336608886719, +154.37542724609375, +21.307165145874023, +186.7339630126953, +138.7624969482422, +58.43132781982422, +51.06290054321289, +90.94524383544922, +14.441919326782227, +117.69449615478516, +137.70529174804688, +107.34788513183594, +179.6765899658203, +38.37153625488281, +24.81209373474121, +109.19165802001953, +169.071044921875, +33.99671173095703, +38.691490173339844, +91.73976135253906, +59.26572799682617, +85.75554656982422, +19.928600311279297, +119.02982330322266, +145.85606384277344, +123.3671646118164, +90.2484130859375, +67.83518981933594, +180.80258178710938, +70.92623138427734, +36.85908889770508, +45.578041076660156, +152.36300659179688, +142.0673370361328, +74.77783966064453, +0.3831160068511963, +101.66165924072266, +119.24246978759766, +126.31178283691406, +183.7803192138672, +120.24192810058594, +115.06739807128906, +87.82251739501953, +22.4056339263916, +165.45420837402344, +179.08424377441406, +95.80024719238281, +64.04161071777344, +164.67526245117188, +96.89202880859375, +62.64473342895508, +135.9277801513672, +73.30065155029297, +46.06732940673828, +113.26183319091797, +42.42523956298828, +139.06887817382812, +46.30449295043945, +99.55682373046875, +107.1336669921875, +174.14817810058594, +180.75137329101562, +159.31942749023438, +88.48023986816406, +180.89439392089844, +154.9966278076172, +107.28343963623047, +30.02891731262207, +78.15644836425781, +75.4764175415039, +119.06134033203125, +66.92132568359375, +165.57749938964844, +103.5652084350586, +199.68785095214844, +175.87066650390625, +25.26643180847168, +79.00697326660156, +106.683349609375, +161.8771209716797, +8.533468246459961, +53.087074279785156, +10.053142547607422, +86.89018249511719, +117.18553161621094, +43.4935188293457, +132.5617218017578, +111.6874008178711, +189.30221557617188, +27.85232925415039, +126.43830108642578, +55.86204528808594, +36.8031005859375, +181.620361328125, +130.7058868408203, +130.37301635742188, +185.9418487548828, +128.8524169921875, +111.20378112792969, +118.64521789550781, +90.60865783691406, +104.9479751586914, +194.80599975585938, +39.337074279785156, +51.09850311279297, +39.636680603027344, +148.17645263671875, +192.20220947265625, +29.104759216308594, +96.10906219482422, +39.054908752441406, +145.7895050048828, +69.69924926757812, +111.2662353515625, +23.447240829467773, +77.1119613647461, +191.13124084472656, +197.78199768066406, +95.4758529663086, +70.45530700683594, +128.32861328125, +57.800113677978516, +92.77996063232422, +139.1643829345703, +60.90106201171875, +98.22624206542969, +96.30412292480469, +63.727046966552734, +8.398634910583496, +149.30673217773438, +26.84419059753418, +20.638044357299805, +128.98475646972656, +170.3668670654297, +196.9186248779297, +79.50828552246094, +161.56349182128906, +1.6071723699569702, +100.1857681274414, +197.1742401123047, +96.03150177001953, +82.00614166259766, +50.176998138427734, +92.58466339111328, +17.081335067749023, +88.27510070800781, +78.20187377929688, +120.11915588378906, +193.6826171875, +176.24978637695312, +199.97116088867188, +39.22605514526367, +105.30651092529297, +14.193211555480957, +47.47190856933594, +18.805347442626953, +115.5730972290039, +46.51799774169922, +63.82988357543945, +149.25743103027344, +86.58540344238281 +], +"Nominal|variables|score||": [ +0.18380147218704224, +0.3153839409351349, +0.0657106339931488, +0.5810385942459106, +0.21566520631313324, +0.8281198740005493, +0.7258960008621216, +0.45306679606437683, +0.8136022686958313, +0.48818740248680115, +0.9981449246406555, +0.4397242069244385, +0.792168140411377, +0.374431312084198, +0.2551340162754059, +0.22049133479595184, +0.20561936497688293, +0.114906907081604, +0.2809513807296753, +0.03824852779507637, +0.3985210657119751, +0.2782377600669861, +0.7693548202514648, +0.416835218667984, +0.07374648749828339, +0.9251576662063599, +0.8631162047386169, +0.38664713501930237, +0.3430092930793762, +0.1181039959192276, +0.5357255935668945, +0.12459723651409149, +0.13617244362831116, +0.05229084566235542, +0.8110533952713013, +0.8382680416107178, +0.5464789271354675, +0.06205189600586891, +0.6397573947906494, +0.09390537440776825, +0.12219453603029251, +0.13545595109462738, +0.7868347764015198, +0.06788339465856552, +0.1768016219139099, +0.28283271193504333, +0.18769823014736176, +0.023865222930908203, +0.8461035490036011, +0.9362591505050659, +0.34746864438056946, +0.6084403395652771, +0.7508987188339233, +0.5397198796272278, +0.25453421473503113, +0.2135544717311859, +0.8888869881629944, +0.3591775596141815, +0.13812628388404846, +0.19185109436511993, +0.9264408349990845, +0.9240089058876038, +1.584501842444297e-05, +0.05779328569769859, +0.7144192457199097, +0.24301563203334808, +0.317208468914032, +0.9148272275924683, +0.5505613088607788, +0.44128167629241943, +0.43765443563461304, +0.6038931608200073, +0.6479701399803162, +0.20884491503238678, +0.5743436217308044, +0.8803663849830627, +0.8334317803382874, +0.13710656762123108, +0.29055002331733704, +0.7072717547416687, +0.18227322399616241, +0.10500185936689377, +0.20673245191574097, +0.06711287051439285, +0.12201841920614243, +0.903029203414917, +0.5550564527511597, +0.06141398102045059, +0.7599542737007141, +0.3497273623943329, +0.914438784122467, +0.6207752823829651, +0.6416271924972534, +0.4770227074623108, +0.3822311460971832, +0.44774720072746277, +0.8713236451148987, +0.5151788592338562, +0.9791889190673828, +0.20860441029071808, +0.3767355978488922, +0.121427521109581, +0.9532351493835449, +0.6580941081047058, +0.8022667765617371, +0.037010785192251205, +0.2919143736362457, +0.8279643058776855, +0.7708553671836853, +0.01982990838587284, +0.11773046851158142, +0.6333402991294861, +0.9934048652648926, +0.17896637320518494, +0.4994966685771942, +0.4289625883102417, +0.14722619950771332, +0.10465415567159653, +0.40581220388412476, +0.4269925653934479, +0.22948040068149567, +0.43927186727523804, +0.8013088703155518, +0.11360728740692139, +0.7066764235496521, +0.19556225836277008, +0.4182077646255493, +0.7907805442810059, +0.23227107524871826, +0.2921704947948456, +0.19761565327644348, +0.8211540579795837, +0.9674153327941895, +0.439404159784317, +0.5439074039459229, +0.6097044944763184, +0.9933583736419678, +0.9146286249160767, +0.43053850531578064, +0.40049871802330017, +0.5937615036964417, +0.4387351870536804, +0.7448149919509888, +0.9992443919181824, +0.45742639899253845, +0.9106987118721008, +0.4619135856628418, +0.5806899666786194, +0.051098864525556564, +0.5728711485862732, +0.6422651410102844, +0.1904519647359848, +0.7472096681594849, +0.09802355617284775, +0.2086285650730133, +0.36909863352775574, +0.3601366877555847, +0.5066999197006226, +0.21860456466674805, +0.549820601940155, +0.14100292325019836, +0.5009941458702087, +0.9313254356384277, +0.27699199318885803, +0.712257444858551, +0.875274658203125, +0.05637577176094055, +0.1053273156285286, +0.14609166979789734, +0.12502609193325043, +0.008416766300797462, +0.0327732227742672, +0.2660796344280243, +0.30484843254089355, +0.5639833211898804, +0.5972573757171631, +0.4512498676776886, +0.3327738642692566, +0.47324612736701965, +0.5726225972175598, +0.3736225664615631, +0.97345370054245, +0.17029012739658356, +0.1556982398033142, +0.04050246998667717, +0.8855058550834656, +0.41365087032318115, +0.3559366762638092, +0.8010342121124268, +0.7443293929100037, +0.9804531931877136, +0.6168384552001953, +0.12105574458837509, +0.7523338198661804, +0.9052653312683105, +0.32556256651878357, +0.8899996876716614, +0.5788919925689697, +0.2943020164966583, +0.707003653049469, +0.538987398147583, +0.8433806896209717, +0.6365920305252075, +0.019050385802984238, +0.6144933104515076, +0.8520756959915161, +0.45218151807785034, +0.2185666412115097, +0.6993086338043213, +0.6005285382270813, +0.7706100344657898, +0.7525474429130554, +0.09279157966375351, +0.8055290579795837, +0.07100439816713333, +0.8152603507041931, +0.6538784503936768, +0.12813153862953186, +0.5857759118080139, +0.7818865776062012, +0.7232004404067993, +0.7774686217308044, +0.3850284516811371, +0.4026152789592743, +0.4394591450691223, +0.7478081583976746, +0.17756406962871552, +0.7034117579460144, +0.3253723084926605, +0.3344508111476898, +0.8077350854873657, +0.2491116225719452, +0.5522747039794922, +0.7419191598892212, +0.8022049069404602, +0.3667459189891815, +0.14523351192474365, +0.9963130950927734, +0.4579302668571472, +0.634454071521759, +0.7226244807243347, +0.5177101492881775, +0.6046785116195679, +0.5007396340370178, +0.11928356438875198, +0.3181365728378296, +0.5025277733802795, +0.680793285369873, +0.8901803493499756, +0.38261741399765015, +0.9391036033630371, +0.21081168949604034, +0.05028713867068291, +0.7391632795333862, +0.9226654171943665, +0.07476618885993958, +0.7576629519462585, +0.08296480774879456, +0.791534423828125, +0.022284023463726044, +0.8791269063949585, +0.901630699634552, +0.5044097304344177, +0.4488508403301239, +0.2006138116121292, +0.3732329308986664, +0.5895861387252808, +0.5539212226867676, +0.28670552372932434, +0.6723335981369019, +0.8946037888526917, +0.6552741527557373, +0.3717692792415619, +0.22835677862167358, +0.555237352848053, +0.7350897789001465, +0.7078168988227844, +0.5174217820167542, +0.775078296661377, +0.12459342926740646, +0.3910146951675415 +], +"Nominal|weight|||": [ +0.8971250653266907, +0.939427375793457, +-1.0059428215026855, +0.9720792770385742, +0.7701089978218079, +0.9962456822395325, +-1.0535190105438232, +0.8100332021713257, +0.8943068385124207, +0.9632157683372498, +1.08881413936615, +-1.0382955074310303, +1.0401463508605957, +1.0580978393554688, +1.1638543605804443, +-0.9868595600128174, +-1.164589762687683, +0.8873511552810669, +1.04547119140625, +0.7573297619819641, +1.0365697145462036, +1.0759162902832031, +0.9800923466682434, +0.8355404734611511, +1.2395163774490356, +0.9365692734718323, +0.9896171689033508, +0.877020001411438, +1.0988130569458008, +1.110805630683899, +1.0447008609771729, +0.9305974841117859, +1.0976881980895996, +0.9606691002845764, +0.9089816212654114, +0.9321366548538208, +0.9882816076278687, +1.1320163011550903, +0.7501838207244873, +-1.0691330432891846, +0.8908562660217285, +0.9356460571289062, +1.0266656875610352, +1.086718201637268, +1.0901755094528198, +0.9510031938552856, +0.9532736539840698, +0.9233612418174744, +1.147017478942871, +1.1481702327728271, +0.9530928730964661, +1.0423697233200073, +0.9520523548126221, +1.1311423778533936, +1.1050151586532593, +0.98411625623703, +1.0191336870193481, +1.0306446552276611, +1.0139025449752808, +0.8423481583595276, +0.8868998885154724, +1.0041855573654175, +0.9508682489395142, +1.0111842155456543, +0.9150508046150208, +0.9842360615730286, +1.0094504356384277, +0.845766544342041, +-0.9324884414672852, +1.021450400352478, +1.1858878135681152, +-1.0624611377716064, +0.6626428961753845, +-1.1034916639328003, +1.239578127861023, +1.0404850244522095, +1.038034200668335, +0.8920100331306458, +0.9236599802970886, +0.9811733365058899, +1.055375099182129, +1.112500548362732, +-0.9063007235527039, +1.014498233795166, +0.9289498925209045, +1.0834717750549316, +0.7782428860664368, +0.8969127535820007, +1.0848497152328491, +1.2946714162826538, +1.03745436668396, +1.0631213188171387, +0.9946423768997192, +1.0985736846923828, +0.9509167671203613, +1.1448856592178345, +0.9148980379104614, +0.938999593257904, +0.9431206583976746, +1.0183193683624268, +1.0552414655685425, +0.9740487337112427, +1.1318093538284302, +0.8727338910102844, +0.974774181842804, +1.0657658576965332, +1.0211890935897827, +0.8769371509552002, +0.8421822786331177, +0.8214841485023499, +1.0938794612884521, +1.075133204460144, +0.9175844192504883, +-1.151534080505371, +1.2019553184509277, +1.0143747329711914, +1.2581707239151, +0.8987359404563904, +0.8721482157707214, +0.9054094552993774, +0.1935528665781021, +-0.18885990977287292, +0.22391006350517273, +0.192405566573143, +0.20537376403808594, +0.1838422268629074, +0.21467773616313934, +0.17624138295650482, +0.20052288472652435, +0.17660056054592133, +0.17853285372257233, +0.1969476342201233, +0.2309315949678421, +0.14994069933891296, +0.19022394716739655, +0.19049671292304993, +0.21431826055049896, +0.16834288835525513, +0.21016594767570496, +0.22737610340118408, +0.18572421371936798, +0.16803400218486786, +0.18113777041435242, +0.18851493299007416, +-0.17106151580810547, +0.1765994131565094, +0.20704735815525055, +0.2203664481639862, +0.18902446329593658, +-0.22584451735019684, +0.1900208592414856, +0.2120322585105896, +0.21795932948589325, +0.20205098390579224, +-0.18325145542621613, +0.20619235932826996, +0.20419232547283173, +0.1811014711856842, +0.19893430173397064, +0.22807009518146515, +0.15139774978160858, +0.24400582909584045, +0.19183246791362762, +0.23866306245326996, +0.20285828411579132, +0.19765011966228485, +0.1857469230890274, +0.21785993874073029, +0.16928665339946747, +0.21777117252349854, +0.17754550278186798, +0.19911858439445496, +0.20013095438480377, +0.20362989604473114, +0.21118798851966858, +0.17892488837242126, +0.1868971288204193, +0.20787467062473297, +0.1948128193616867, +0.18470272421836853, +0.16481764614582062, +0.1859571635723114, +0.1986551135778427, +0.18594489991664886, +0.22638145089149475, +-0.19695362448692322, +0.22555586695671082, +0.23917408287525177, +-0.19137492775917053, +0.20648692548274994, +0.18158936500549316, +-0.1965646892786026, +0.18675732612609863, +0.20587128400802612, +0.1923314332962036, +0.1806693971157074, +0.23034703731536865, +0.1616537719964981, +0.19448596239089966, +0.17660276591777802, +0.19919535517692566, +0.18908967077732086, +0.23373936116695404, +-0.19904819130897522, +0.20870476961135864, +0.18300926685333252, +-0.19971247017383575, +0.2060815989971161, +0.22068625688552856, +0.17838655412197113, +0.21110393106937408, +0.20885413885116577, +-0.2086125612258911, +0.21591360867023468, +0.2041211873292923, +0.23112495243549347, +0.18635280430316925, +0.20968855917453766, +0.19801568984985352, +0.1984071582555771, +0.18435776233673096, +0.2486203908920288, +0.10899347066879272, +0.1297103315591812, +0.27990415692329407, +0.28863421082496643, +0.1774970144033432, +0.10810842365026474, +0.13979919254779816, +0.1128290668129921, +0.1120680496096611, +0.10235686600208282, +0.2050635814666748, +0.16670945286750793, +0.18803201615810394, +0.14120273292064667, +0.18042561411857605, +0.2445680946111679, +0.17323875427246094, +0.2813156545162201, +0.23983687162399292, +0.1931363046169281, +0.16107845306396484, +0.25581011176109314, +0.13997378945350647, +0.14384916424751282, +0.11682377755641937, +0.28851816058158875, +0.2139931619167328, +0.2833016812801361, +0.20999591052532196, +0.21908746659755707, +0.28619542717933655, +0.13245348632335663, +0.28498968482017517, +0.24895887076854706, +0.28855130076408386, +0.21084678173065186, +0.10414229333400726, +0.17571565508842468, +0.280790239572525, +0.2780666649341583, +0.21667832136154175, +0.20583279430866241, +0.10830407589673996, +0.23390665650367737, +0.2194887399673462, +0.11525162309408188, +0.14594656229019165, +0.2990964651107788, +0.2571934759616852, +0.22094230353832245, +0.2678694427013397, +0.2993418276309967, +0.21015684306621552, +0.18208979070186615, +0.14931832253932953, +0.12862129509449005, +0.17978879809379578, +0.13854467868804932, +0.2599063217639923 +] +}, +"fold1_training.feather": { +"Event|event|||": [ +2.0, +16.0, +74.0, +86.0, +100.0, +126.0, +136.0, +140.0, +188.0, +190.0, +230.0, +260.0, +276.0, +278.0, +296.0, +298.0, +306.0, +310.0, +330.0, +340.0, +350.0, +356.0, +370.0, +378.0, +382.0, +408.0, +418.0, +448.0, +456.0, +500.0, +504.0, +506.0, +516.0, +520.0, +522.0, +538.0, +552.0, +554.0, +582.0, +610.0, +650.0, +682.0, +690.0, +704.0, +734.0, +18.0, +28.0, +68.0, +84.0, +174.0, +240.0, +250.0, +262.0, +392.0, +402.0, +510.0, +544.0, +596.0, +776.0, +796.0, +6.0, +10.0, +18.0, +36.0, +56.0, +82.0, +94.0, +132.0, +150.0, +192.0, +206.0, +248.0, +254.0, +276.0, +300.0, +322.0, +352.0, +372.0, +390.0, +392.0, +420.0, +436.0, +454.0, +470.0, +474.0, +488.0, +494.0, +532.0, +556.0, +562.0, +570.0, +582.0, +598.0, +608.0, +614.0, +632.0, +640.0, +646.0, +648.0, +654.0, +660.0, +668.0, +690.0, +702.0, +716.0, +750.0, +760.0, +774.0, +8.0, +28.0, +50.0, +114.0, +150.0, +154.0, +160.0, +198.0, +204.0, +220.0, +252.0, +278.0, +288.0, +300.0, +394.0, +398.0, +412.0, +472.0, +504.0, +536.0, +578.0, +582.0, +594.0, +606.0, +618.0, +622.0, +646.0, +670.0, +682.0, +702.0, +742.0, +748.0, +798.0 +], +"Event|id|||": [ +1.0, +4.0, +12.0, +17.0, +21.0, +25.0, +28.0, +29.0, +36.0, +37.0, +44.0, +48.0, +52.0, +53.0, +56.0, +57.0, +60.0, +64.0, +69.0, +73.0, +76.0, +77.0, +81.0, +84.0, +85.0, +88.0, +89.0, +96.0, +97.0, +101.0, +104.0, +105.0, +108.0, +112.0, +113.0, +117.0, +120.0, +121.0, +128.0, +133.0, +141.0, +149.0, +152.0, +156.0, +161.0, +0.0, +1.0, +4.0, +5.0, +9.0, +12.0, +13.0, +16.0, +20.0, +21.0, +28.0, +29.0, +33.0, +40.0, +41.0, +0.0, +1.0, +5.0, +9.0, +13.0, +17.0, +20.0, +33.0, +37.0, +48.0, +53.0, +65.0, +69.0, +73.0, +76.0, +80.0, +84.0, +89.0, +92.0, +93.0, +100.0, +104.0, +109.0, +112.0, +113.0, +116.0, +117.0, +124.0, +132.0, +133.0, +136.0, +141.0, +145.0, +148.0, +149.0, +153.0, +157.0, +160.0, +161.0, +165.0, +168.0, +169.0, +176.0, +177.0, +180.0, +184.0, +189.0, +192.0, +1.0, +5.0, +8.0, +16.0, +24.0, +25.0, +28.0, +32.0, +33.0, +36.0, +41.0, +44.0, +45.0, +49.0, +60.0, +61.0, +65.0, +72.0, +80.0, +85.0, +92.0, +93.0, +96.0, +97.0, +100.0, +101.0, +104.0, +108.0, +109.0, +112.0, +117.0, +120.0, +124.0 +], +"Labels|is_HH|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_Z|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_jetFakes|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|class_weight|||": [ +1.1618704795837402, +-1.3028007745742798, +-1.3644169569015503, +1.247464895248413, +1.410127878189087, +1.3470979928970337, +-1.2780860662460327, +-1.5082651376724243, +0.9808210134506226, +1.342465877532959, +1.0821120738983154, +1.6053029298782349, +1.2816574573516846, +1.1358323097229004, +1.4386091232299805, +1.352996587753296, +1.4216206073760986, +1.177225947380066, +1.4660791158676147, +-1.384638786315918, +1.2117592096328735, +1.3296390771865845, +1.407413363456726, +1.231648325920105, +1.2345887422561646, +1.4870001077651978, +1.2343546152114868, +1.4649473428726196, +1.4311097860336304, +1.3347922563552856, +1.3131095170974731, +1.0909286737442017, +1.3005249500274658, +1.3095890283584595, +1.1850861310958862, +1.307343602180481, +-1.207669734954834, +1.3228847980499268, +0.8581916093826294, +1.6053829193115234, +1.344362497329712, +1.3668208122253418, +-1.1737539768218994, +1.3138809204101562, +1.40320885181427, +1.3436115980148315, +1.3768529891967773, +1.2315363883972168, +1.4827462434768677, +1.2161023616790771, +1.366647720336914, +1.2614946365356445, +1.2624342441558838, +1.322546362876892, +1.1357250213623047, +1.3924095630645752, +1.188367486000061, +1.5566574335098267, +1.1295229196548462, +1.1725996732711792, +1.5358747243881226, +-1.4986354112625122, +1.5267707109451294, +1.4588191509246826, +1.591183066368103, +1.4013553857803345, +1.5628128051757812, +1.5116236209869385, +1.3358293771743774, +1.4737530946731567, +1.4373588562011719, +1.6429558992385864, +1.499941110610962, +1.6825119256973267, +-1.4541313648223877, +1.6203006505966187, +1.5785773992538452, +1.2013667821884155, +1.936227560043335, +1.5222231149673462, +1.5683871507644653, +1.343318223953247, +1.7280511856079102, +1.5800397396087646, +1.5880730152130127, +1.6758124828338623, +1.4197993278503418, +1.649520754814148, +1.4756015539169312, +1.5763620138168335, +1.4755042791366577, +1.7898240089416504, +1.638508677482605, +1.440942406654358, +-1.5597740411758423, +1.5261825323104858, +1.8278427124023438, +1.5432790517807007, +1.4013729095458984, +1.5806488990783691, +1.5004585981369019, +1.8547613620758057, +-1.5847523212432861, +1.635292410850525, +1.6751453876495361, +-1.6553759574890137, +1.8340156078338623, +1.6639142036437988, +1.8102662563323975, +1.07024085521698, +1.2736661434173584, +2.8341891765594482, +1.061550259590149, +1.3727318048477173, +1.1004310846328735, +1.00507390499115, +2.013583183288574, +1.386513590812683, +2.4014902114868164, +1.7010853290557861, +2.7623260021209717, +1.896465539932251, +1.4124997854232788, +1.1471290588378906, +2.781827449798584, +1.3006020784378052, +1.0226056575775146, +2.757166862487793, +2.0211362838745117, +1.0634714365005493, +2.15522837638855, +1.131691575050354, +2.9369213581085205, +2.5254628658294678, +2.169501304626465, +2.939330577850342, +2.0635955333709717, +1.4662030935287476, +1.2629725933074951, +1.3604133129119873, +2.5521011352539062 +], +"Nominal|cut|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|variables|m_vis||": [ +26.80330467224121, +69.60008239746094, +16.251502990722656, +96.68263244628906, +76.46354675292969, +175.02671813964844, +85.9190902709961, +153.71408081054688, +101.51437377929688, +129.3607177734375, +12.480319023132324, +54.79035949707031, +31.03596305847168, +68.0808334350586, +4.994962215423584, +187.90643310546875, +130.25636291503906, +160.59983825683594, +144.4632568359375, +72.35379791259766, +3.286137104034424, +58.42359161376953, +72.238037109375, +23.1721248626709, +39.56154251098633, +30.75895118713379, +30.352828979492188, +91.64057159423828, +101.28191375732422, +103.1474609375, +22.801513671875, +125.58702087402344, +153.87936401367188, +66.37504577636719, +34.996734619140625, +190.42420959472656, +16.231496810913086, +121.86991119384766, +133.9928436279297, +88.65616607666016, +111.30828857421875, +162.60855102539062, +171.35328674316406, +97.30050659179688, +45.2013053894043, +48.95226287841797, +187.81167602539062, +126.24661254882812, +193.9843292236328, +14.20363712310791, +126.16552734375, +41.61675262451172, +169.78607177734375, +126.89501953125, +189.36129760742188, +188.5936737060547, +39.54636001586914, +163.03997802734375, +165.47776794433594, +194.39039611816406, +117.40336608886719, +154.37542724609375, +186.7339630126953, +58.43132781982422, +14.441919326782227, +117.69449615478516, +107.34788513183594, +109.19165802001953, +33.99671173095703, +59.26572799682617, +19.928600311279297, +90.2484130859375, +180.80258178710938, +45.578041076660156, +74.77783966064453, +101.66165924072266, +126.31178283691406, +120.24192810058594, +115.06739807128906, +87.82251739501953, +179.08424377441406, +164.67526245117188, +96.89202880859375, +135.9277801513672, +73.30065155029297, +113.26183319091797, +42.42523956298828, +46.30449295043945, +180.75137329101562, +159.31942749023438, +88.48023986816406, +107.28343963623047, +75.4764175415039, +119.06134033203125, +66.92132568359375, +199.68785095214844, +25.26643180847168, +106.683349609375, +161.8771209716797, +8.533468246459961, +53.087074279785156, +10.053142547607422, +132.5617218017578, +111.6874008178711, +126.43830108642578, +36.8031005859375, +130.37301635742188, +128.8524169921875, +90.60865783691406, +194.80599975585938, +39.337074279785156, +39.636680603027344, +192.20220947265625, +29.104759216308594, +39.054908752441406, +145.7895050048828, +69.69924926757812, +77.1119613647461, +197.78199768066406, +95.4758529663086, +70.45530700683594, +57.800113677978516, +98.22624206542969, +96.30412292480469, +149.30673217773438, +170.3668670654297, +100.1857681274414, +96.03150177001953, +92.58466339111328, +17.081335067749023, +78.20187377929688, +120.11915588378906, +176.24978637695312, +199.97116088867188, +39.22605514526367, +14.193211555480957, +47.47190856933594, +115.5730972290039, +46.51799774169922, +149.25743103027344, +86.58540344238281 +], +"Nominal|variables|score||": [ +0.18380147218704224, +0.0657106339931488, +0.7258960008621216, +0.48818740248680115, +0.9981449246406555, +0.792168140411377, +0.22049133479595184, +0.20561936497688293, +0.03824852779507637, +0.3985210657119751, +0.416835218667984, +0.07374648749828339, +0.8631162047386169, +0.38664713501930237, +0.1181039959192276, +0.5357255935668945, +0.13617244362831116, +0.8110533952713013, +0.06205189600586891, +0.09390537440776825, +0.13545595109462738, +0.7868347764015198, +0.06788339465856552, +0.28283271193504333, +0.18769823014736176, +0.9362591505050659, +0.34746864438056946, +0.5397198796272278, +0.25453421473503113, +0.3591775596141815, +0.13812628388404846, +0.19185109436511993, +0.9240089058876038, +0.05779328569769859, +0.7144192457199097, +0.317208468914032, +0.5505613088607788, +0.44128167629241943, +0.6479701399803162, +0.5743436217308044, +0.8334317803382874, +0.18227322399616241, +0.20673245191574097, +0.06711287051439285, +0.903029203414917, +0.914438784122467, +0.6207752823829651, +0.3822311460971832, +0.44774720072746277, +0.5151788592338562, +0.3767355978488922, +0.121427521109581, +0.8022667765617371, +0.2919143736362457, +0.8279643058776855, +0.6333402991294861, +0.9934048652648926, +0.4994966685771942, +0.40581220388412476, +0.4269925653934479, +0.22948040068149567, +0.43927186727523804, +0.11360728740692139, +0.19556225836277008, +0.23227107524871826, +0.2921704947948456, +0.8211540579795837, +0.6097044944763184, +0.9146286249160767, +0.5937615036964417, +0.7448149919509888, +0.4619135856628418, +0.051098864525556564, +0.1904519647359848, +0.2086285650730133, +0.3601366877555847, +0.21860456466674805, +0.14100292325019836, +0.5009941458702087, +0.9313254356384277, +0.875274658203125, +0.14609166979789734, +0.12502609193325043, +0.0327732227742672, +0.2660796344280243, +0.5639833211898804, +0.5972573757171631, +0.3327738642692566, +0.97345370054245, +0.17029012739658356, +0.1556982398033142, +0.41365087032318115, +0.7443293929100037, +0.9804531931877136, +0.6168384552001953, +0.9052653312683105, +0.8899996876716614, +0.2943020164966583, +0.707003653049469, +0.538987398147583, +0.8433806896209717, +0.6365920305252075, +0.45218151807785034, +0.2185666412115097, +0.7706100344657898, +0.09279157966375351, +0.8152603507041931, +0.12813153862953186, +0.7232004404067993, +0.3850284516811371, +0.4026152789592743, +0.7478081583976746, +0.7034117579460144, +0.3253723084926605, +0.8077350854873657, +0.2491116225719452, +0.5522747039794922, +0.3667459189891815, +0.9963130950927734, +0.4579302668571472, +0.634454071521759, +0.5177101492881775, +0.3181365728378296, +0.5025277733802795, +0.38261741399765015, +0.7391632795333862, +0.791534423828125, +0.8791269063949585, +0.4488508403301239, +0.2006138116121292, +0.5895861387252808, +0.5539212226867676, +0.6723335981369019, +0.8946037888526917, +0.6552741527557373, +0.22835677862167358, +0.555237352848053, +0.7078168988227844, +0.5174217820167542, +0.12459342926740646, +0.3910146951675415 +], +"Nominal|weight|||": [ +0.8971250653266907, +-1.0059428215026855, +-1.0535190105438232, +0.9632157683372498, +1.08881413936615, +1.0401463508605957, +-0.9868595600128174, +-1.164589762687683, +0.7573297619819641, +1.0365697145462036, +0.8355404734611511, +1.2395163774490356, +0.9896171689033508, +0.877020001411438, +1.110805630683899, +1.0447008609771729, +1.0976881980895996, +0.9089816212654114, +1.1320163011550903, +-1.0691330432891846, +0.9356460571289062, +1.0266656875610352, +1.086718201637268, +0.9510031938552856, +0.9532736539840698, +1.1481702327728271, +0.9530928730964661, +1.1311423778533936, +1.1050151586532593, +1.0306446552276611, +1.0139025449752808, +0.8423481583595276, +1.0041855573654175, +1.0111842155456543, +0.9150508046150208, +1.0094504356384277, +-0.9324884414672852, +1.021450400352478, +0.6626428961753845, +1.239578127861023, +1.038034200668335, +1.055375099182129, +-0.9063007235527039, +1.014498233795166, +1.0834717750549316, +1.03745436668396, +1.0631213188171387, +0.9509167671203613, +1.1448856592178345, +0.938999593257904, +1.0552414655685425, +0.9740487337112427, +0.974774181842804, +1.0211890935897827, +0.8769371509552002, +1.075133204460144, +0.9175844192504883, +1.2019553184509277, +0.8721482157707214, +0.9054094552993774, +0.1935528665781021, +-0.18885990977287292, +0.192405566573143, +0.1838422268629074, +0.20052288472652435, +0.17660056054592133, +0.1969476342201233, +0.19049671292304993, +0.16834288835525513, +0.18572421371936798, +0.18113777041435242, +0.20704735815525055, +0.18902446329593658, +0.2120322585105896, +-0.18325145542621613, +0.20419232547283173, +0.19893430173397064, +0.15139774978160858, +0.24400582909584045, +0.19183246791362762, +0.19765011966228485, +0.16928665339946747, +0.21777117252349854, +0.19911858439445496, +0.20013095438480377, +0.21118798851966858, +0.17892488837242126, +0.20787467062473297, +0.1859571635723114, +0.1986551135778427, +0.18594489991664886, +0.22555586695671082, +0.20648692548274994, +0.18158936500549316, +-0.1965646892786026, +0.1923314332962036, +0.23034703731536865, +0.19448596239089966, +0.17660276591777802, +0.19919535517692566, +0.18908967077732086, +0.23373936116695404, +-0.19971247017383575, +0.2060815989971161, +0.21110393106937408, +-0.2086125612258911, +0.23112495243549347, +0.20968855917453766, +0.18435776233673096, +0.10899347066879272, +0.1297103315591812, +0.28863421082496643, +0.10810842365026474, +0.13979919254779816, +0.1120680496096611, +0.10235686600208282, +0.2050635814666748, +0.14120273292064667, +0.2445680946111679, +0.17323875427246094, +0.2813156545162201, +0.1931363046169281, +0.14384916424751282, +0.11682377755641937, +0.2833016812801361, +0.13245348632335663, +0.10414229333400726, +0.280790239572525, +0.20583279430866241, +0.10830407589673996, +0.2194887399673462, +0.11525162309408188, +0.2990964651107788, +0.2571934759616852, +0.22094230353832245, +0.2993418276309967, +0.21015684306621552, +0.14931832253932953, +0.12862129509449005, +0.13854467868804932, +0.2599063217639923 +] +}, +"fold1_validation.feather": { +"Event|event|||": [ +10.0, +44.0, +46.0, +72.0, +78.0, +80.0, +114.0, +128.0, +130.0, +162.0, +184.0, +200.0, +216.0, +272.0, +290.0, +300.0, +308.0, +318.0, +322.0, +336.0, +348.0, +374.0, +384.0, +390.0, +420.0, +444.0, +464.0, +472.0, +514.0, +518.0, +528.0, +548.0, +558.0, +572.0, +586.0, +638.0, +652.0, +654.0, +668.0, +684.0, +722.0, +736.0, +748.0, +754.0, +792.0, +30.0, +50.0, +102.0, +214.0, +236.0, +252.0, +254.0, +386.0, +416.0, +486.0, +496.0, +562.0, +600.0, +624.0, +700.0, +14.0, +20.0, +40.0, +48.0, +88.0, +110.0, +124.0, +126.0, +142.0, +152.0, +172.0, +196.0, +214.0, +216.0, +222.0, +252.0, +258.0, +270.0, +280.0, +288.0, +306.0, +346.0, +364.0, +394.0, +396.0, +430.0, +432.0, +458.0, +484.0, +500.0, +538.0, +540.0, +546.0, +574.0, +576.0, +586.0, +592.0, +616.0, +618.0, +634.0, +642.0, +670.0, +678.0, +680.0, +704.0, +708.0, +740.0, +754.0, +758.0, +770.0, +782.0, +790.0, +16.0, +82.0, +134.0, +156.0, +206.0, +214.0, +234.0, +296.0, +304.0, +364.0, +384.0, +404.0, +408.0, +446.0, +448.0, +466.0, +474.0, +478.0, +486.0, +490.0, +520.0, +546.0, +554.0, +584.0, +610.0, +648.0, +688.0, +746.0 +], +"Event|id|||": [ +3.0, +6.0, +7.0, +11.0, +14.0, +15.0, +23.0, +26.0, +27.0, +31.0, +35.0, +39.0, +42.0, +51.0, +55.0, +58.0, +62.0, +66.0, +67.0, +71.0, +75.0, +82.0, +86.0, +87.0, +90.0, +94.0, +98.0, +99.0, +107.0, +110.0, +115.0, +119.0, +123.0, +126.0, +130.0, +138.0, +142.0, +143.0, +146.0, +150.0, +159.0, +162.0, +166.0, +167.0, +175.0, +2.0, +3.0, +6.0, +10.0, +11.0, +14.0, +15.0, +19.0, +23.0, +26.0, +27.0, +30.0, +34.0, +35.0, +38.0, +3.0, +6.0, +10.0, +11.0, +18.0, +27.0, +30.0, +31.0, +34.0, +38.0, +43.0, +51.0, +54.0, +55.0, +58.0, +67.0, +70.0, +71.0, +74.0, +75.0, +78.0, +83.0, +87.0, +94.0, +95.0, +102.0, +103.0, +111.0, +114.0, +119.0, +126.0, +127.0, +130.0, +138.0, +139.0, +142.0, +143.0, +150.0, +151.0, +155.0, +159.0, +171.0, +174.0, +175.0, +178.0, +179.0, +182.0, +186.0, +187.0, +190.0, +194.0, +195.0, +3.0, +11.0, +19.0, +26.0, +34.0, +35.0, +39.0, +47.0, +50.0, +54.0, +58.0, +62.0, +63.0, +66.0, +67.0, +71.0, +74.0, +75.0, +78.0, +79.0, +83.0, +87.0, +90.0, +94.0, +98.0, +106.0, +110.0, +119.0 +], +"Labels|is_HH|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_Z|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 +], +"Labels|is_jetFakes|||": [ +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|class_weight|||": [ +1.2076560258865356, +1.2496309280395508, +0.9899933338165283, +1.2806973457336426, +1.0413168668746948, +1.1496526002883911, +-1.334753394126892, +1.3602098226547241, +1.4961622953414917, +1.1407108306884766, +1.343977928161621, +1.3831157684326172, +1.2599318027496338, +1.203981876373291, +1.4125500917434692, +1.1963050365447998, +1.234962821006775, +1.1982836723327637, +1.2704592943191528, +0.9643790125846863, +1.1452168226242065, +1.4014463424682617, +1.1870026588439941, +1.474518060684204, +1.3399908542633057, +1.2238857746124268, +1.2651046514511108, +1.3101204633712769, +1.1401307582855225, +1.2223635911941528, +1.2652586698532104, +1.0872528553009033, +1.524486780166626, +-1.3658188581466675, +-1.4185645580291748, +1.3375680446624756, +1.1467000246047974, +1.1873867511749268, +1.2613215446472168, +1.4301457405090332, +1.194187045097351, +1.0004496574401855, +1.1530025005340576, +1.3945999145507812, +1.6643307209014893, +1.2786362171173096, +1.4122424125671387, +1.176123023033142, +1.2124038934707642, +1.309073567390442, +1.4549676179885864, +1.1219199895858765, +1.3700672388076782, +1.0826451778411865, +1.0560373067855835, +1.4062079191207886, +-1.4803242683410645, +1.3040026426315308, +1.6174081563949585, +1.1553462743759155, +1.7400548458099365, +1.5960052013397217, +1.6683083772659302, +1.3696109056472778, +1.387418508529663, +1.7946207523345947, +1.1652225255966187, +1.478272557258606, +1.6655148267745972, +1.6332463026046753, +1.7669901847839355, +1.3058295249938965, +1.4649914503097534, +-1.3293570280075073, +1.372393250465393, +1.7125166654586792, +-1.755087971687317, +1.4766943454742432, +1.6938103437423706, +1.5701830387115479, +1.6023666858673096, +1.4073797464370728, +1.7723833322525024, +1.854703664779663, +1.5764567852020264, +1.4434806108474731, +1.693037986755371, +1.379745602607727, +1.5824531316757202, +1.4524191617965698, +1.5139336585998535, +1.435365915298462, +1.2808345556259155, +1.7592605352401733, +-1.530570387840271, +1.8586748838424683, +-1.4872170686721802, +1.451332688331604, +1.5998715162277222, +1.404021978378296, +1.2562474012374878, +-1.5468477010726929, +1.6218911409378052, +1.4222056865692139, +1.7150019407272339, +1.3862814903259277, +1.6230518817901611, +1.6779125928878784, +1.586271047592163, +1.4481890201568604, +1.5388239622116089, +1.5418660640716553, +2.6611199378967285, +2.995967149734497, +1.8998476266860962, +1.2076711654663086, +1.7843824625015259, +2.0126094818115234, +1.9311939477920532, +2.567105293273926, +1.724110722541809, +2.7380754947662354, +1.4982160329818726, +3.088167667388916, +2.2904858589172363, +2.2477011680603027, +2.345012903213501, +3.0633060932159424, +3.050400495529175, +2.664742946624756, +3.088522434234619, +2.256808280944824, +1.8807806968688965, +2.976299524307251, +2.3192265033721924, +2.5036308765411377, +1.5621458292007446, +2.8671531677246094, +1.9490065574645996, +1.9243777990341187 +], +"Nominal|cut|||": [ +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0, +1.0 +], +"Nominal|variables|m_vis||": [ +177.39996337890625, +58.776588439941406, +132.78665161132812, +161.45663452148438, +166.8208770751953, +88.3199691772461, +198.55665588378906, +128.52525329589844, +24.38409996032715, +41.733985900878906, +168.7863311767578, +5.373172283172607, +79.01731872558594, +34.584075927734375, +58.03786849975586, +56.63726043701172, +21.335712432861328, +127.8777084350586, +15.709589958190918, +140.5970001220703, +124.36853790283203, +20.386240005493164, +67.5693359375, +120.49568939208984, +76.98511505126953, +41.82572937011719, +125.09959411621094, +124.07845306396484, +37.447593688964844, +48.223846435546875, +74.44880676269531, +114.96017456054688, +142.38516235351562, +47.917755126953125, +13.282011985778809, +65.84884643554688, +193.79042053222656, +199.13584899902344, +139.85687255859375, +43.27293395996094, +159.83876037597656, +170.06982421875, +169.51889038085938, +87.3871841430664, +95.11083221435547, +142.52914428710938, +93.99632263183594, +35.58858108520508, +42.91796112060547, +175.06375122070312, +65.14846801757812, +59.53611755371094, +56.22067642211914, +29.6226749420166, +54.76347732543945, +57.92788314819336, +143.38906860351562, +67.04854583740234, +73.93669891357422, +10.471158981323242, +21.307165145874023, +138.7624969482422, +51.06290054321289, +90.94524383544922, +137.70529174804688, +179.6765899658203, +38.37153625488281, +24.81209373474121, +169.071044921875, +38.691490173339844, +91.73976135253906, +85.75554656982422, +119.02982330322266, +145.85606384277344, +123.3671646118164, +67.83518981933594, +70.92623138427734, +36.85908889770508, +152.36300659179688, +142.0673370361328, +0.3831160068511963, +119.24246978759766, +183.7803192138672, +22.4056339263916, +165.45420837402344, +95.80024719238281, +64.04161071777344, +62.64473342895508, +46.06732940673828, +139.06887817382812, +99.55682373046875, +107.1336669921875, +174.14817810058594, +180.89439392089844, +154.9966278076172, +30.02891731262207, +78.15644836425781, +165.57749938964844, +103.5652084350586, +175.87066650390625, +79.00697326660156, +86.89018249511719, +117.18553161621094, +43.4935188293457, +189.30221557617188, +27.85232925415039, +55.86204528808594, +181.620361328125, +130.7058868408203, +185.9418487548828, +111.20378112792969, +118.64521789550781, +104.9479751586914, +51.09850311279297, +148.17645263671875, +96.10906219482422, +111.2662353515625, +23.447240829467773, +191.13124084472656, +128.32861328125, +92.77996063232422, +139.1643829345703, +60.90106201171875, +63.727046966552734, +8.398634910583496, +26.84419059753418, +20.638044357299805, +128.98475646972656, +196.9186248779297, +79.50828552246094, +161.56349182128906, +1.6071723699569702, +197.1742401123047, +82.00614166259766, +50.176998138427734, +88.27510070800781, +193.6826171875, +105.30651092529297, +18.805347442626953, +63.82988357543945 +], +"Nominal|variables|score||": [ +0.3153839409351349, +0.5810385942459106, +0.21566520631313324, +0.8281198740005493, +0.45306679606437683, +0.8136022686958313, +0.4397242069244385, +0.374431312084198, +0.2551340162754059, +0.114906907081604, +0.2809513807296753, +0.2782377600669861, +0.7693548202514648, +0.9251576662063599, +0.3430092930793762, +0.12459723651409149, +0.05229084566235542, +0.8382680416107178, +0.5464789271354675, +0.6397573947906494, +0.12219453603029251, +0.1768016219139099, +0.023865222930908203, +0.8461035490036011, +0.6084403395652771, +0.7508987188339233, +0.2135544717311859, +0.8888869881629944, +0.9264408349990845, +1.584501842444297e-05, +0.24301563203334808, +0.9148272275924683, +0.43765443563461304, +0.6038931608200073, +0.20884491503238678, +0.8803663849830627, +0.13710656762123108, +0.29055002331733704, +0.7072717547416687, +0.10500185936689377, +0.12201841920614243, +0.5550564527511597, +0.06141398102045059, +0.7599542737007141, +0.3497273623943329, +0.6416271924972534, +0.4770227074623108, +0.8713236451148987, +0.9791889190673828, +0.20860441029071808, +0.9532351493835449, +0.6580941081047058, +0.037010785192251205, +0.7708553671836853, +0.01982990838587284, +0.11773046851158142, +0.17896637320518494, +0.4289625883102417, +0.14722619950771332, +0.10465415567159653, +0.8013088703155518, +0.7066764235496521, +0.4182077646255493, +0.7907805442810059, +0.19761565327644348, +0.9674153327941895, +0.439404159784317, +0.5439074039459229, +0.9933583736419678, +0.43053850531578064, +0.40049871802330017, +0.4387351870536804, +0.9992443919181824, +0.45742639899253845, +0.9106987118721008, +0.5806899666786194, +0.5728711485862732, +0.6422651410102844, +0.7472096681594849, +0.09802355617284775, +0.36909863352775574, +0.5066999197006226, +0.549820601940155, +0.27699199318885803, +0.712257444858551, +0.05637577176094055, +0.1053273156285286, +0.008416766300797462, +0.30484843254089355, +0.4512498676776886, +0.47324612736701965, +0.5726225972175598, +0.3736225664615631, +0.04050246998667717, +0.8855058550834656, +0.3559366762638092, +0.8010342121124268, +0.12105574458837509, +0.7523338198661804, +0.32556256651878357, +0.5788919925689697, +0.019050385802984238, +0.6144933104515076, +0.8520756959915161, +0.6993086338043213, +0.6005285382270813, +0.7525474429130554, +0.8055290579795837, +0.07100439816713333, +0.6538784503936768, +0.5857759118080139, +0.7818865776062012, +0.7774686217308044, +0.4394591450691223, +0.17756406962871552, +0.3344508111476898, +0.7419191598892212, +0.8022049069404602, +0.14523351192474365, +0.7226244807243347, +0.6046785116195679, +0.5007396340370178, +0.11928356438875198, +0.680793285369873, +0.8901803493499756, +0.9391036033630371, +0.21081168949604034, +0.05028713867068291, +0.9226654171943665, +0.07476618885993958, +0.7576629519462585, +0.08296480774879456, +0.022284023463726044, +0.901630699634552, +0.5044097304344177, +0.3732329308986664, +0.28670552372932434, +0.3717692792415619, +0.7350897789001465, +0.775078296661377 +], +"Nominal|weight|||": [ +0.939427375793457, +0.9720792770385742, +0.7701089978218079, +0.9962456822395325, +0.8100332021713257, +0.8943068385124207, +-1.0382955074310303, +1.0580978393554688, +1.1638543605804443, +0.8873511552810669, +1.04547119140625, +1.0759162902832031, +0.9800923466682434, +0.9365692734718323, +1.0988130569458008, +0.9305974841117859, +0.9606691002845764, +0.9321366548538208, +0.9882816076278687, +0.7501838207244873, +0.8908562660217285, +1.0901755094528198, +0.9233612418174744, +1.147017478942871, +1.0423697233200073, +0.9520523548126221, +0.98411625623703, +1.0191336870193481, +0.8868998885154724, +0.9508682489395142, +0.9842360615730286, +0.845766544342041, +1.1858878135681152, +-1.0624611377716064, +-1.1034916639328003, +1.0404850244522095, +0.8920100331306458, +0.9236599802970886, +0.9811733365058899, +1.112500548362732, +0.9289498925209045, +0.7782428860664368, +0.8969127535820007, +1.0848497152328491, +1.2946714162826538, +0.9946423768997192, +1.0985736846923828, +0.9148980379104614, +0.9431206583976746, +1.0183193683624268, +1.1318093538284302, +0.8727338910102844, +1.0657658576965332, +0.8421822786331177, +0.8214841485023499, +1.0938794612884521, +-1.151534080505371, +1.0143747329711914, +1.2581707239151, +0.8987359404563904, +0.22391006350517273, +0.20537376403808594, +0.21467773616313934, +0.17624138295650482, +0.17853285372257233, +0.2309315949678421, +0.14994069933891296, +0.19022394716739655, +0.21431826055049896, +0.21016594767570496, +0.22737610340118408, +0.16803400218486786, +0.18851493299007416, +-0.17106151580810547, +0.1765994131565094, +0.2203664481639862, +-0.22584451735019684, +0.1900208592414856, +0.21795932948589325, +0.20205098390579224, +0.20619235932826996, +0.1811014711856842, +0.22807009518146515, +0.23866306245326996, +0.20285828411579132, +0.1857469230890274, +0.21785993874073029, +0.17754550278186798, +0.20362989604473114, +0.1868971288204193, +0.1948128193616867, +0.18470272421836853, +0.16481764614582062, +0.22638145089149475, +-0.19695362448692322, +0.23917408287525177, +-0.19137492775917053, +0.18675732612609863, +0.20587128400802612, +0.1806693971157074, +0.1616537719964981, +-0.19904819130897522, +0.20870476961135864, +0.18300926685333252, +0.22068625688552856, +0.17838655412197113, +0.20885413885116577, +0.21591360867023468, +0.2041211873292923, +0.18635280430316925, +0.19801568984985352, +0.1984071582555771, +0.2486203908920288, +0.27990415692329407, +0.1774970144033432, +0.1128290668129921, +0.16670945286750793, +0.18803201615810394, +0.18042561411857605, +0.23983687162399292, +0.16107845306396484, +0.25581011176109314, +0.13997378945350647, +0.28851816058158875, +0.2139931619167328, +0.20999591052532196, +0.21908746659755707, +0.28619542717933655, +0.28498968482017517, +0.24895887076854706, +0.28855130076408386, +0.21084678173065186, +0.17571565508842468, +0.2780666649341583, +0.21667832136154175, +0.23390665650367737, +0.14594656229019165, +0.2678694427013397, +0.18208979070186615, +0.17978879809379578 +] +} +}, +"shapes_estimate": { +"mt_bkg/HH#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.02429434246197, +6.569141549573978 +], +[ +2.019623944689732, +1.6209246709677294 +] +], +"mt_bkg/HH#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.86895666106682, +7.260629911216364 +], +[ +2.467185890405351, +1.9801322238715748 +] +], +"mt_bkg/HH#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.446625771015965, +6.914885915580271 +], +[ +2.237810533957831, +1.7960384642362093 +] +], +"mt_bkg/ZL#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.38088998931575524, +1.3054898270300042 +], +[ +0.07863882340196186, +0.31870766260202193 +] +], +"mt_bkg/ZL#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.4209836736789353, +1.4429098334882098 +], +[ +0.09606571051776405, +0.38933540797645605 +] +], +"mt_bkg/ZL#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.4009368446124316, +1.374199860401709 +], +[ +0.0871344365877246, +0.35313870096297384 +] +], +"mt_bkg/ZL#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +10.31139839812493, +9.500740241647476 +], +[ +12.16188947108262, +9.073759951329517 +] +], +"mt_bkg/ZL#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +11.396808502317977, +10.50081783316461 +], +[ +14.857044122294846, +11.084564777924376 +] +], +"mt_bkg/ZL#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +10.854103660076499, +10.000779155209484 +], +[ +13.475777775245504, +10.054027540675467 +] +], +"mt_bkg/ZTT#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.6520861520314574, +2.8718258715840808 +], +[ +0.8022587881842259, +1.088717593300315 +] +], +"mt_bkg/ZTT#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +4.03651610762819, +3.174123211977597 +], +[ +0.9800445920547183, +1.3299845650687525 +] +], +"mt_bkg/ZTT#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.8443012473855767, +3.022974655048804 +], +[ +0.8889294202704217, +1.206335330435302 +] +], +"mt_bkg/ZTT#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +42.25250792465663, +33.45390825950118 +], +[ +46.13424648913618, +35.305212782750296 +] +], +"mt_bkg/ZTT#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +46.7001386541662, +36.97537120327292 +], +[ +56.35789787794544, +43.1290801188675 +] +], +"mt_bkg/ZTT#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +44.47632472984159, +35.21464067883315 +], +[ +51.11827993132326, +39.119350256126964 +] +], +"mt_bkg/data#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +5.0738091096282005, +6.439230136573315 +], +[ +1.0722985255803001, +1.4572472373507246 +] +], +"mt_bkg/data#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +34.0, +47.0 +], +[ +34.0, +47.0 +] +], +"mt_bkg/jetFakes#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.8285710176301923, +2.0420556211228016 +], +[ +2.0483623824384463, +3.0167212687490004 +] +], +"mt_sig/HH#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +7.718603349377448, +7.566579239979687 +], +[ +1.6849048807668736, +1.749422936213198 +] +], +"mt_sig/HH#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.531087661278862, +8.363061055929263 +], +[ +2.058290887423747, +2.137106596700711 +] +], +"mt_sig/HH#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.124845724691983, +7.964820356634302 +], +[ +1.866930661035003, +1.9384188225551042 +] +], +"mt_sig/ZL#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +1.2658982190471713, +2.1570686754594144 +], +[ +0.28340747880912415, +0.4538797464005107 +] +], +"mt_sig/ZL#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +1.3991506320207994, +2.3841284296971557 +], +[ +0.34621244262358475, +0.5544624676695689 +] +], +"mt_sig/ZL#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +1.3325244460485755, +2.2705986164231877 +], +[ +0.31402490779566533, +0.5029138532685167 +] +], +"mt_sig/ZL#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.93370816024295, +9.16586168068974 +], +[ +8.963968911606639, +8.456406936897288 +] +], +"mt_sig/ZL#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +9.874098217815092, +10.130688910982421 +], +[ +10.950443371969932, +10.330402289351593 +] +], +"mt_sig/ZL#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +9.403903486436324, +9.648275618619088 +], +[ +9.932375852647471, +9.369980308152385 +] +], +"mt_sig/ZTT#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.5946955235149574, +4.625252672049072 +], +[ +0.8739460516338361, +0.9874055356828372 +] +], +"mt_sig/ZTT#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.9730843862585625, +5.112121183693464 +], +[ +1.06761822179822, +1.2062210709023422 +] +], +"mt_sig/ZTT#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.783890055649397, +4.868687132517687 +], +[ +0.9683612945330983, +1.0940782020763677 +] +], +"mt_sig/ZTT#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +33.68730443179881, +24.93868536076957 +], +[ +44.69843455338169, +33.116321946826176 +] +], +"mt_sig/ZTT#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +37.2333350982851, +27.563809012490815 +], +[ +54.60390123475606, +40.45511599568244 +] +], +"mt_sig/ZTT#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +35.460320868912405, +26.251248169169948 +], +[ +49.527352367675455, +36.69398646031606 +] +], +"mt_sig/data#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +5.324695855379105, +8.20532651990652 +], +[ +1.1092630220570188, +1.786915519225281 +] +], +"mt_sig/data#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +63.0, +55.0 +], +[ +63.0, +55.0 +] +], +"mt_sig/jetFakes#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.2082813536811321, +1.066040770965646 +], +[ +2.391649224385782, +3.3839075745701654 +] +] +}, +"shapes_hist": { +"mt_bkg/HH#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.02429434246197, +6.569141549573978 +], +[ +2.019623944689732, +1.6209246709677294 +] +], +"mt_bkg/HH#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.86895666106682, +7.260629911216364 +], +[ +2.467185890405351, +1.9801322238715748 +] +], +"mt_bkg/HH#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.446625771015965, +6.914885915580271 +], +[ +2.237810533957831, +1.7960384642362093 +] +], +"mt_bkg/ZL#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.38088998931575524, +1.3054898270300042 +], +[ +0.07863882340196186, +0.31870766260202193 +] +], +"mt_bkg/ZL#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.4209836736789353, +1.4429098334882098 +], +[ +0.09606571051776405, +0.38933540797645605 +] +], +"mt_bkg/ZL#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +0.4009368446124316, +1.374199860401709 +], +[ +0.0871344365877246, +0.35313870096297384 +] +], +"mt_bkg/ZL#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +10.31139839812493, +9.500740241647476 +], +[ +12.16188947108262, +9.073759951329517 +] +], +"mt_bkg/ZL#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +11.396808502317977, +10.50081783316461 +], +[ +14.857044122294846, +11.084564777924376 +] +], +"mt_bkg/ZL#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +10.854103660076499, +10.000779155209484 +], +[ +13.475777775245504, +10.054027540675467 +] +], +"mt_bkg/ZTT#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.6520861520314574, +2.8718258715840808 +], +[ +0.8022587881842259, +1.088717593300315 +] +], +"mt_bkg/ZTT#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +4.03651610762819, +3.174123211977597 +], +[ +0.9800445920547183, +1.3299845650687525 +] +], +"mt_bkg/ZTT#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.8443012473855767, +3.022974655048804 +], +[ +0.8889294202704217, +1.206335330435302 +] +], +"mt_bkg/ZTT#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +42.25250792465663, +33.45390825950118 +], +[ +46.13424648913618, +35.305212782750296 +] +], +"mt_bkg/ZTT#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +46.7001386541662, +36.97537120327292 +], +[ +56.35789787794544, +43.1290801188675 +] +], +"mt_bkg/ZTT#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +44.47632472984159, +35.21464067883315 +], +[ +51.11827993132326, +39.119350256126964 +] +], +"mt_bkg/data#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +5.0738091096282005, +6.439230136573315 +], +[ +1.0722985255803001, +1.4572472373507246 +] +], +"mt_bkg/data#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +34.0, +47.0 +], +[ +34.0, +47.0 +] +], +"mt_sig/HH#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +7.718603349377448, +7.566579239979687 +], +[ +1.6849048807668736, +1.749422936213198 +] +], +"mt_sig/HH#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.531087661278862, +8.363061055929263 +], +[ +2.058290887423747, +2.137106596700711 +] +], +"mt_sig/HH#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.124845724691983, +7.964820356634302 +], +[ +1.866930661035003, +1.9384188225551042 +] +], +"mt_sig/ZL#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +1.2658982190471713, +2.1570686754594144 +], +[ +0.28340747880912415, +0.4538797464005107 +] +], +"mt_sig/ZL#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +1.3991506320207994, +2.3841284296971557 +], +[ +0.34621244262358475, +0.5544624676695689 +] +], +"mt_sig/ZL#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +1.3325244460485755, +2.2705986164231877 +], +[ +0.31402490779566533, +0.5029138532685167 +] +], +"mt_sig/ZL#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +8.93370816024295, +9.16586168068974 +], +[ +8.963968911606639, +8.456406936897288 +] +], +"mt_sig/ZL#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +9.874098217815092, +10.130688910982421 +], +[ +10.950443371969932, +10.330402289351593 +] +], +"mt_sig/ZL#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +9.403903486436324, +9.648275618619088 +], +[ +9.932375852647471, +9.369980308152385 +] +], +"mt_sig/ZTT#anti_iso#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.5946955235149574, +4.625252672049072 +], +[ +0.8739460516338361, +0.9874055356828372 +] +], +"mt_sig/ZTT#anti_iso#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.9730843862585625, +5.112121183693464 +], +[ +1.06761822179822, +1.2062210709023422 +] +], +"mt_sig/ZTT#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +3.783890055649397, +4.868687132517687 +], +[ +0.9683612945330983, +1.0940782020763677 +] +], +"mt_sig/ZTT#nominal#CMS_puDown#score": [ +[ +0.0, +0.5, +1.0 +], +[ +33.68730443179881, +24.93868536076957 +], +[ +44.69843455338169, +33.116321946826176 +] +], +"mt_sig/ZTT#nominal#CMS_puUp#score": [ +[ +0.0, +0.5, +1.0 +], +[ +37.2333350982851, +27.563809012490815 +], +[ +54.60390123475606, +40.45511599568244 +] +], +"mt_sig/ZTT#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +35.460320868912405, +26.251248169169948 +], +[ +49.527352367675455, +36.69398646031606 +] +], +"mt_sig/data#anti_iso#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +5.324695855379105, +8.20532651990652 +], +[ +1.1092630220570188, +1.786915519225281 +] +], +"mt_sig/data#nominal#Nominal#score": [ +[ +0.0, +0.5, +1.0 +], +[ +63.0, +55.0 +], +[ +63.0, +55.0 +] +] +}, +"skim_contracts": { +"DATA_A": { +"normalisation": { +"generator_weight": 1.0, +"kind": "data", +"nevents": 1, +"xsec": 1.0 +}, +"required_columns": [ +"cls", +"event", +"fake_factor", +"genWeight", +"gen_match", +"id_loose", +"id_tight", +"m_vis", +"puweight", +"puweight_down", +"puweight_up", +"q_1", +"q_2", +"score", +"trg_wgt", +"veto" +], +"selection": { +"iso_loose": "id_loose > 0.5", +"veto": "veto < 0.5" +} +}, +"SIG_1": { +"normalisation": { +"generator_weight": 1.0, +"kind": "mc", +"nevents": 50, +"xsec": 1.0 +}, +"required_columns": [ +"cls", +"event", +"fake_factor", +"genWeight", +"gen_match", +"id_loose", +"id_tight", +"m_vis", +"puweight", +"puweight_down", +"puweight_up", +"q_1", +"q_2", +"score", +"trg_wgt", +"veto" +], +"selection": { +"iso_loose": "id_loose > 0.5", +"veto": "veto < 0.5" +} +}, +"ZTT_1": { +"normalisation": { +"generator_weight": 1.0, +"kind": "mc", +"nevents": 100, +"xsec": 10.0 +}, +"required_columns": [ +"cls", +"event", +"fake_factor", +"genWeight", +"gen_match", +"id_loose", +"id_tight", +"m_vis", +"puweight", +"puweight_down", +"puweight_up", +"q_1", +"q_2", +"score", +"trg_wgt", +"veto" +], +"selection": { +"iso_loose": "id_loose > 0.5", +"veto": "veto < 0.5" +} +} +} +} \ No newline at end of file diff --git a/tests/test_golden.py b/tests/test_golden.py new file mode 100644 index 0000000..bc691ce --- /dev/null +++ b/tests/test_golden.py @@ -0,0 +1,109 @@ +"""G2: the mini-dataset outputs must stay bitwise identical to the ones frozen with core aa5daa5. + +The reference files in tests/golden/ were written once by make_golden_aa5daa5.py against that core; the script is +kept for the record and does not run against the current API. +""" +import dataclasses +import json +from pathlib import Path + +import numpy as np +import pandas as pd +import pytest +import uproot + +from shapesmith.config import FriendConfig, NtupleConfig, RunConfig +from shapesmith.datacards import run_datacards +from shapesmith.estimators import run_estimate +from shapesmith.histograms import run_hist +from shapesmith.ml_export import run_ml_export +from shapesmith.model import Estimator, Region +from shapesmith.skim import run_skim +from shapesmith.testing import make_mini_dataset +from tests.mini_analysis import build + +GOLDEN = Path(__file__).parent / "golden" + + +def _digest(hset) -> dict: + return {key.path: [h.edges.tolist(), h.values.tolist(), h.variances.tolist()] for key, h in hset.items()} + + +def _abcd_variant(analysis): + channel = analysis.channel("mt") + anti = "(id_tight < 0.5) & (id_loose > 0.5)" + regions = channel.regions + ( + Region("abcd_anti_iso", replace_cuts={"tau_iso": anti}), + Region("abcd_same_sign_anti_iso", replace_cuts={"os": "(q_1 * q_2) > 0", "tau_iso": anti}), + ) + estimator = Estimator("abcd", {"B": "abcd_anti_iso", "C": "same_sign", "D": "abcd_same_sign_anti_iso"}, ("ZTT", "ZL"), "QCD") + return dataclasses.replace(analysis, channels={"mt": dataclasses.replace(channel, regions=regions)}, estimator=estimator) + + +def _produce(tmp: Path) -> tuple[dict, str]: + make_mini_dataset(tmp / "data", n_files=2, n_events=400) + config = RunConfig( + analysis="tests.mini_analysis:build", era="2018", channels=["mt"], switches={"jet_fakes": "ff", "embedding": False}, + ntuples=NtupleConfig(base=str(tmp / "data" / "CROWNRun"), friends=[FriendConfig(base=str(tmp / "data" / "CROWNFriends" / "nn"))]), + skim_dir=tmp / "skims", output_dir=tmp / "out", ml_dir=tmp / "ml", workers=1, + ) + analysis = build(config) + run_skim(config, analysis) + result = {} + control = run_hist(config, analysis, ["mt"], True, None, True, None, tmp / "out" / "control_shapes.root", force=True) + result["control_hist"] = _digest(control) + run_estimate(control, analysis, ["mt"]) + result["control_estimate"] = _digest(control) + regions = run_hist(config, analysis, ["mt"], True, None, True, None, tmp / "out" / "regions.root", force=True, regions=["all"]) + result["control_regions_all"] = _digest(regions) + shapes = run_hist(config, analysis, ["mt"], False, None, True, None, tmp / "out" / "shapes.root", force=True) + result["shapes_hist"] = _digest(shapes) + run_estimate(shapes, analysis, ["mt"]) + result["shapes_estimate"] = _digest(shapes) + card = run_datacards(shapes, analysis, {"mt": ["mt"]}, tmp / "out" / "datacards", True, 1.0)["mt"].read_text() + with uproot.open(tmp / "out" / "datacards" / "mt" / "common" / "htt_input_2018.root") as f: + result["datacard_shapes"] = { + name: [f[name].axis().edges().tolist(), f[name].values().tolist(), f[name].variances().tolist()] + for name, cls in sorted(f.classnames(recursive=True, cycle=False).items()) + if cls.startswith("TH1") + } + abcd = _abcd_variant(analysis) + abcd_hset = run_hist(config, abcd, ["mt"], True, None, False, None, tmp / "out" / "abcd.root", force=True) + run_estimate(abcd_hset, abcd, ["mt"]) + result["abcd_control_estimate"] = _digest(abcd_hset) + result["ml_export"] = {} + for path in run_ml_export(config, analysis, ["mt"]): + frame = pd.read_feather(path) + result["ml_export"][path.name] = {"|".join(column): np.asarray(frame[column]).astype(np.float64).tolist() for column in frame.columns} + return result, card + + +def _bitwise_equal(a, b) -> bool: + return np.asarray(a, dtype=np.float64).tobytes() == np.asarray(b, dtype=np.float64).tobytes() + + +@pytest.fixture(scope="module") +def produced(tmp_path_factory): + return _produce(tmp_path_factory.mktemp("golden")) + + +@pytest.mark.parametrize("part", ["control_hist", "control_estimate", "control_regions_all", "shapes_hist", "shapes_estimate", "datacard_shapes", "abcd_control_estimate"]) +def test_histograms_match_the_golden_outputs(produced, part): + golden = json.loads((GOLDEN / "mini_golden.json").read_text())[part] + result = produced[0][part] + assert sorted(result) == sorted(golden) + different = [name for name in golden if not all(_bitwise_equal(r, g) for r, g in zip(result[name], golden[name]))] + assert not different + + +def test_datacard_text_matches_the_golden_card(produced): + assert produced[1] == (GOLDEN / "datacard_mt.txt").read_text() + + +def test_ml_export_matches_the_golden_frames(produced): + golden = json.loads((GOLDEN / "mini_golden.json").read_text())["ml_export"] + result = produced[0]["ml_export"] + assert sorted(result) == sorted(golden) + for fold, columns in golden.items(): + assert sorted(result[fold]) == sorted(columns) + assert all(_bitwise_equal(result[fold][name], values) for name, values in columns.items()), fold From 3d895f9c17b90a2f04eae19977585f4190fe9930 Mon Sep 17 00:00:00 2001 From: Simon Daigler Date: Wed, 30 Sep 2026 01:07:27 +0200 Subject: [PATCH 02/33] feat(samples)!: sample lists are verbatim KingMaker lists, normalisation by nick read_sample_list reads one nick per line and rejects anything else (the former DBS column included) and duplicates. normalisation(database, nicks) looks up by nick only and reports every missing nick at once. Removed: InventoryEntry, read_inventory, write_inventory, the DBS fallback, database_nick and the inventory command. --- README.md | 1 - src/shapesmith/cli.py | 10 ----- src/shapesmith/samples.py | 92 ++++++++++++++------------------------- tests/test_samples.py | 82 +++++++++++++++++----------------- 4 files changed, 73 insertions(+), 112 deletions(-) diff --git a/README.md b/README.md index 690d918..44e9106 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ shapesmith datacards -c run.yaml [--min-background 1.0] [--no-systematics] shapesmith fit -c run.yaml [--final-states mt,all] [--skip-combine] shapesmith ml-export -c run.yaml # Feather training folds shapesmith inspect output/shapes.root # what a histogram file contains -shapesmith inventory datasets.json nicks.txt inventory.txt # production inventory (nick + DBS path) ``` Two stages: `skim` reads the ntuples once (loose selection, all needed columns, normalisation diff --git a/src/shapesmith/cli.py b/src/shapesmith/cli.py index 455bb38..fca5abd 100644 --- a/src/shapesmith/cli.py +++ b/src/shapesmith/cli.py @@ -53,16 +53,6 @@ def example_config(path: Path = typer.Argument(..., help="where to write the exa typer.echo(f"wrote {path}") -@app.command() -def inventory(database: Path = typer.Argument(..., help="KingMaker datasets.json that still knows the nicks by name"), nicks: Path = typer.Argument(..., help="text file, one produced nick per line"), output: Path = typer.Argument(..., help="inventory to write: nick and DBS path per line")): - """Write a production inventory: for every produced nick its DBS dataset path, the key that survives database renames.""" - from shapesmith.samples import write_inventory - - names = [line.strip() for line in nicks.read_text().splitlines() if line.strip()] - entries = write_inventory(output, database, names) - typer.echo(f"wrote {len(entries)} entries to {output}") - - @app.command() def validate(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption): """Load and validate the analysis; report the columns every channel needs.""" diff --git a/src/shapesmith/samples.py b/src/shapesmith/samples.py index 260c7fb..54eeb31 100644 --- a/src/shapesmith/samples.py +++ b/src/shapesmith/samples.py @@ -1,77 +1,49 @@ -"""Production inventories and the normalisation lookup in the KingMaker sample database (datasets.json). +"""Sample lists and the normalisation lookup in the KingMaker sample database (datasets.json). -The database renames nicks now and then (2026-08: the 2018 v15 nicks gained the campaign suffix -`_mc2018_realistic_v1-v2`) while CROWN output directories keep the nick used at production time. The DBS -dataset path is stable, so an inventory lists `nick dbs` pairs and the lookup goes by nick first, by DBS second. +A sample list is an unchanged copy of the KingMaker sample list a production ran with: one nick per line. The +normalisation of every nick comes from the configured database, looked up by nick. The database renames nicks now +and then, so an older production may need the database checkout it was produced with. """ from __future__ import annotations import json -from dataclasses import dataclass from pathlib import Path -FIELDS = ("sample_type", "xsec", "nevents", "generator_weight") +from shapesmith.model import AnalysisError - -@dataclass(frozen=True) -class InventoryEntry: - nick: str # directory name in the CROWN output - dbs: str # DBS dataset path, stable across database versions +FIELDS = ("xsec", "nevents", "generator_weight") def kind_of(sample_type: str) -> str: - if sample_type == "data": - return "data" - if "embedding" in sample_type: - return "embedding" - return "mc" + """The sample kind of a database `sample_type`: data, embedding, or mc for every simulated type.""" + return sample_type if sample_type in ("data", "embedding") else "mc" -def read_inventory(path: Path) -> list[InventoryEntry]: - """` ` per line; blank lines and `#` comments are ignored.""" - entries = [] - for line in Path(path).read_text().splitlines(): - line = line.split("#", 1)[0].strip() - if not line: +def read_sample_list(path: Path) -> tuple[str, ...]: + """The nicks of a sample list in file order; blank lines are skipped, every other line is exactly one nick.""" + nicks: list[str] = [] + for number, line in enumerate(Path(path).read_text().splitlines(), start=1): + tokens = line.split() + if not tokens: continue - parts = line.split() - if len(parts) != 2: - raise ValueError(f"{path}: expected ' ', got {line!r}") - entries.append(InventoryEntry(*parts)) - return entries - - -def write_inventory(path: Path, database: Path, nicks: list[str]) -> list[InventoryEntry]: - """Create an inventory for nicks that the given database version still knows by name.""" + if len(tokens) != 1: + raise ValueError( + f"{path}:{number}: expected one nick per line (an unchanged KingMaker sample list), got {line!r};" + " the former DBS column is no longer supported" + ) + if tokens[0] in nicks: + raise ValueError(f"{path}:{number}: duplicate nick {tokens[0]}") + nicks.append(tokens[0]) + return tuple(nicks) + + +def normalisation(database: Path, nicks: tuple[str, ...] | list[str]) -> dict[str, dict]: + """nick -> {kind, xsec, nevents, generator_weight} from the database; every missing nick is reported at once.""" db = json.loads(Path(database).read_text()) missing = [nick for nick in nicks if nick not in db] if missing: - raise KeyError(f"nicks not in {database}: {', '.join(missing)}") - entries = [InventoryEntry(nick, db[nick]["dbs"]) for nick in nicks] - Path(path).parent.mkdir(parents=True, exist_ok=True) - Path(path).write_text("".join(f"{entry.nick} {entry.dbs}\n" for entry in entries)) - return entries - - -def normalisation(database: Path, inventory: list[InventoryEntry]) -> dict[str, dict]: - """nick -> {kind, sample_type, xsec, nevents, generator_weight, database_nick} for every inventory entry.""" - db = json.loads(Path(database).read_text()) - by_dbs: dict[str, list[str]] = {} - for key, entry in db.items(): - by_dbs.setdefault(entry["dbs"], []).append(key) - result, unresolved = {}, [] - for item in inventory: - if item.nick in db: - key = item.nick - else: - candidates = by_dbs.get(item.dbs, []) - values = {tuple(db[c][field] for field in FIELDS) for c in candidates} - if len(values) != 1: - unresolved.append(f"{item.nick} ({len(candidates)} entries for {item.dbs})") - continue - key = candidates[0] - entry = db[key] - result[item.nick] = {"kind": kind_of(entry["sample_type"]), "database_nick": key, **{field: entry[field] for field in FIELDS}} - if unresolved: - raise KeyError(f"not resolvable in {database}: " + "; ".join(unresolved)) - return result + raise AnalysisError( + f"{len(missing)} nicks are not in {database} (the database may have renamed them, see the git log of the" + " sample database):\n" + "\n".join(missing) + ) + return {nick: {"kind": kind_of(db[nick]["sample_type"]), **{field: db[nick][field] for field in FIELDS}} for nick in nicks} diff --git a/tests/test_samples.py b/tests/test_samples.py index b378bfe..7d630d8 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -2,54 +2,54 @@ import pytest -from shapesmith.samples import InventoryEntry, kind_of, normalisation, read_inventory, write_inventory +from shapesmith.model import AnalysisError +from shapesmith.samples import kind_of, normalisation, read_sample_list DB = { - "TT_old": {"nick": "TT_old", "dbs": "/TT/campaign-v2/NANOAODSIM", "sample_type": "ttbar", "xsec": 88.5, "nevents": 1000, "generator_weight": 0.99, "era": "2018"}, + "TT_1": {"nick": "TT_1", "dbs": "/TT/campaign-v2/NANOAODSIM", "sample_type": "ttbar", "xsec": 88.5, "nevents": 1000, "generator_weight": 0.99, "era": "2018"}, "DATA_A": {"nick": "DATA_A", "dbs": "/SingleMuon/Run2018A/NANOAOD", "sample_type": "data", "xsec": 1.0, "nevents": 1, "generator_weight": 1.0, "era": "2018"}, + "EMB_A": {"nick": "EMB_A", "dbs": "/EmbeddingRun2018A/MuTau/USER", "sample_type": "embedding", "xsec": 1.0, "nevents": 5000, "generator_weight": 1.0, "era": "2018"}, } -RENAMED = { - "TT_new": {**DB["TT_old"], "nick": "TT_new"}, - "DATA_A_v2": {**DB["DATA_A"], "nick": "DATA_A_v2"}, - "DATA_A": DB["DATA_A"], # the old name kept as a duplicate with identical values -} -def _write(tmp_path, name, db): - path = tmp_path / name - path.write_text(json.dumps(db)) +@pytest.fixture +def database(tmp_path): + path = tmp_path / "datasets.json" + path.write_text(json.dumps(DB)) + return path + + +def _list(tmp_path, text): + path = tmp_path / "sample_list.txt" + path.write_text(text) return path def test_kind_of(): - assert kind_of("data") == "data" and kind_of("embedding") == "embedding" and kind_of("ttbar") == "mc" - - -def test_inventory_roundtrip(tmp_path): - database = _write(tmp_path, "old.json", DB) - entries = write_inventory(tmp_path / "inv.txt", database, ["TT_old", "DATA_A"]) - assert entries == [InventoryEntry("TT_old", "/TT/campaign-v2/NANOAODSIM"), InventoryEntry("DATA_A", "/SingleMuon/Run2018A/NANOAOD")] - (tmp_path / "inv.txt").write_text("# comment\n" + (tmp_path / "inv.txt").read_text() + "\n") - assert read_inventory(tmp_path / "inv.txt") == entries - with pytest.raises(KeyError, match="NOPE"): - write_inventory(tmp_path / "x.txt", database, ["NOPE"]) - (tmp_path / "bad.txt").write_text("only_one_column\n") - with pytest.raises(ValueError, match="only_one_column"): - read_inventory(tmp_path / "bad.txt") - - -def test_normalisation_by_nick_and_by_dbs(tmp_path): - inventory = [InventoryEntry("TT_old", "/TT/campaign-v2/NANOAODSIM"), InventoryEntry("DATA_A", "/SingleMuon/Run2018A/NANOAOD")] - same = normalisation(_write(tmp_path, "old.json", DB), inventory) - assert same["TT_old"] == {"kind": "mc", "database_nick": "TT_old", "sample_type": "ttbar", "xsec": 88.5, "nevents": 1000, "generator_weight": 0.99} - renamed = normalisation(_write(tmp_path, "new.json", RENAMED), inventory) - assert renamed["TT_old"]["database_nick"] == "TT_new" and renamed["TT_old"]["xsec"] == 88.5 - assert renamed["DATA_A"]["database_nick"] == "DATA_A" and renamed["DATA_A"]["kind"] == "data" - - -def test_normalisation_rejects_ambiguous_and_missing(tmp_path): - conflicting = {"TT_a": {**DB["TT_old"], "nick": "TT_a"}, "TT_b": {**DB["TT_old"], "nick": "TT_b", "nevents": 2000}} - with pytest.raises(KeyError, match="TT_old"): - normalisation(_write(tmp_path, "conflict.json", conflicting), [InventoryEntry("TT_old", "/TT/campaign-v2/NANOAODSIM")]) - with pytest.raises(KeyError, match="GONE"): - normalisation(_write(tmp_path, "old.json", DB), [InventoryEntry("GONE", "/nowhere")]) + assert (kind_of("data"), kind_of("embedding"), kind_of("ttbar"), kind_of("dy")) == ("data", "embedding", "mc", "mc") + + +def test_sample_list_is_read_in_order_and_blank_lines_are_skipped(tmp_path): + assert read_sample_list(_list(tmp_path, "TT_1\n\nDATA_A\n \nEMB_A")) == ("TT_1", "DATA_A", "EMB_A") + + +@pytest.mark.parametrize("line", ["TT_1 /TT/campaign-v2/NANOAODSIM", "# a comment"]) +def test_a_line_with_more_than_one_token_raises(tmp_path, line): + with pytest.raises(ValueError, match=r"sample_list.txt:2: expected one nick per line.*DBS column"): + read_sample_list(_list(tmp_path, f"DATA_A\n{line}\n")) + + +def test_a_duplicate_nick_raises(tmp_path): + with pytest.raises(ValueError, match="sample_list.txt:3: duplicate nick TT_1"): + read_sample_list(_list(tmp_path, "TT_1\nDATA_A\nTT_1\n")) + + +def test_normalisation_by_nick(database): + values = normalisation(database, ("TT_1", "DATA_A", "EMB_A")) + assert values["TT_1"] == {"kind": "mc", "xsec": 88.5, "nevents": 1000, "generator_weight": 0.99} + assert values["DATA_A"]["kind"] == "data" and values["EMB_A"] == {"kind": "embedding", "xsec": 1.0, "nevents": 5000, "generator_weight": 1.0} + + +def test_normalisation_lists_every_missing_nick(database): + with pytest.raises(AnalysisError, match=r"2 nicks are not in .*renamed.*\nGONE_1\nGONE_2"): + normalisation(database, ("GONE_1", "TT_1", "GONE_2")) From 69ad361608a002ca6ac7151b57552d80262002a6 Mon Sep 17 00:00:00 2001 From: Simon Daigler Date: Wed, 30 Sep 2026 01:31:53 +0200 Subject: [PATCH 03/33] refactor!: rebuild the core around Channel and one event rule Everything that differs by channel lives in Channel (samples, cuts, processes, regions, categories, variables, variations, estimators). A process has a role (data, signal, background, auxiliary) and owns its whole weight set; the core weight and cut rule has no branches on sample kind and lives in one place, events.select. Regions replace cuts, replace weights where a process carries them and add weights. Column variations (SW core): - ColumnVariation(name, suffix | derived, applies_to, regions): a CROWN shift read from `c + suffix`, or a shift computed from nominal columns (derived). A name ending in Up/Down needs its partner; other names are templates that datacards never turn into shape lines. - skim: shifted branches are read, an event is kept if the skim cuts pass nominally or under any variation of its kind, and per file every declared shift must have a branch and every shifted branch of a needed column must be declared (checked for kinds that declare shifts). - skim reuse: rows and columns must be a superset of the needed ones (skim cuts, normalisation, sample cut equal; recorded column variations and friends contain the current ones; the Parquet schema holds the needed columns). The v4 manifests stay reusable. Incompatible skims are listed together. - fill: a variation is filled where it applies; a column variation only where it changes an expression of the histogram. Hist re-applies the (varied) skim cuts and always refills the requested scopes (no --force). - estimates: DataMinus propagates every column variation of its inputs with a nominal fallback; ABCD stays nominal; TemplateShift replaces the hard-coded embedding ttbar contamination and reads an auxiliary process. Module layout: validate, events, fill, estimates, shapes (sync), store, ntuples, provenance (versions/.json), cmssw + limits (was fit). Deleted: io/, estimators/, histograms.py, sync.py, the kind taxonomy, Process.key, Sample.channels, the Selection-or-map, Channel.baseline/skim weights, example-config. The mini-dataset outputs stay bitwise identical to aa5daa5 (G2). --- src/shapesmith/cli.py | 114 ++++--- src/shapesmith/cmssw.py | 33 +++ src/shapesmith/config.py | 69 +---- src/shapesmith/datacards.py | 169 ++++++----- src/shapesmith/estimates.py | 116 ++++++++ src/shapesmith/estimators/__init__.py | 42 --- src/shapesmith/estimators/abcd.py | 51 ---- src/shapesmith/estimators/embedding.py | 27 -- src/shapesmith/estimators/fake_factors.py | 20 -- src/shapesmith/events.py | 74 +++++ src/shapesmith/expressions.py | 69 ++--- src/shapesmith/fill.py | 167 +++++++++++ src/shapesmith/histogram.py | 80 ++++- src/shapesmith/histograms.py | 273 ----------------- src/shapesmith/io/__init__.py | 0 src/shapesmith/io/discovery.py | 61 ---- src/shapesmith/io/ntuples.py | 80 ----- src/shapesmith/{fit.py => limits.py} | 39 +-- src/shapesmith/ml_export.py | 47 +-- src/shapesmith/model.py | 213 +++++++------- src/shapesmith/ntuples.py | 113 +++++++ src/shapesmith/plotting/stack.py | 34 +-- src/shapesmith/plotting/style.py | 14 +- src/shapesmith/provenance.py | 45 +++ src/shapesmith/shapes.py | 44 +++ src/shapesmith/skim.py | 343 +++++++++++----------- src/shapesmith/{io/skims.py => store.py} | 32 +- src/shapesmith/sync.py | 34 --- src/shapesmith/testing.py | 35 ++- src/shapesmith/validate.py | 97 ++++++ tests/mini_analysis.py | 86 ++++-- tests/test_cli.py | 8 +- tests/test_config.py | 11 +- tests/test_datacards.py | 42 +-- tests/test_estimates.py | 87 ++++++ tests/test_estimators.py | 65 ---- tests/test_events.py | 55 ++++ tests/test_expressions.py | 37 +-- tests/test_fill.py | 151 ++++++++++ tests/test_golden.py | 42 ++- tests/test_histograms.py | 157 ---------- tests/{test_fit.py => test_limits.py} | 26 +- tests/test_model.py | 62 ---- tests/{test_io.py => test_ntuples.py} | 24 +- tests/test_plotting.py | 26 +- tests/test_shapes.py | 35 +++ tests/test_skim.py | 143 ++++----- tests/test_sync.py | 34 --- tests/test_validate.py | 97 ++++++ tests/test_variations.py | 171 +++++++++++ 50 files changed, 2167 insertions(+), 1727 deletions(-) create mode 100644 src/shapesmith/cmssw.py create mode 100644 src/shapesmith/estimates.py delete mode 100644 src/shapesmith/estimators/__init__.py delete mode 100644 src/shapesmith/estimators/abcd.py delete mode 100644 src/shapesmith/estimators/embedding.py delete mode 100644 src/shapesmith/estimators/fake_factors.py create mode 100644 src/shapesmith/events.py create mode 100644 src/shapesmith/fill.py delete mode 100644 src/shapesmith/histograms.py delete mode 100644 src/shapesmith/io/__init__.py delete mode 100644 src/shapesmith/io/discovery.py delete mode 100644 src/shapesmith/io/ntuples.py rename src/shapesmith/{fit.py => limits.py} (72%) create mode 100644 src/shapesmith/ntuples.py create mode 100644 src/shapesmith/provenance.py create mode 100644 src/shapesmith/shapes.py rename src/shapesmith/{io/skims.py => store.py} (61%) delete mode 100644 src/shapesmith/sync.py create mode 100644 src/shapesmith/validate.py create mode 100644 tests/test_estimates.py delete mode 100644 tests/test_estimators.py create mode 100644 tests/test_events.py create mode 100644 tests/test_fill.py delete mode 100644 tests/test_histograms.py rename tests/{test_fit.py => test_limits.py} (66%) delete mode 100644 tests/test_model.py rename tests/{test_io.py => test_ntuples.py} (76%) create mode 100644 tests/test_shapes.py delete mode 100644 tests/test_sync.py create mode 100644 tests/test_validate.py create mode 100644 tests/test_variations.py diff --git a/src/shapesmith/cli.py b/src/shapesmith/cli.py index fca5abd..3554b5e 100644 --- a/src/shapesmith/cli.py +++ b/src/shapesmith/cli.py @@ -1,4 +1,4 @@ -"""Command-line interface: one sub-command per analysis step (Spec §13).""" +"""Command-line interface: one sub-command per analysis step.""" from __future__ import annotations import logging @@ -11,13 +11,13 @@ from rich.table import Table from shapesmith import __version__ -from shapesmith.config import RunConfig, load_analysis, load_config, write_example_config, write_versions +from shapesmith.config import RunConfig, load_analysis, load_config +from shapesmith.provenance import write_versions -app = typer.Typer(help=f"ShapeSmith {__version__}: CROWN ntuples -> skims -> histograms -> datacards, fits, plots, ML folds.", no_args_is_help=True) +app = typer.Typer(help=f"ShapeSmith {__version__}: CROWN ntuples -> skims -> histograms -> datacards, fits, plots, ML folds, measurements.", no_args_is_help=True) ConfigOption = typer.Option(..., "--config", "-c", help="run configuration YAML") ChannelsOption = typer.Option(None, "--channels", help="comma separated subset of the configured channels") -ForceOption = typer.Option(False, "--force", help="recreate existing outputs") WorkersOption = typer.Option(None, "--workers", help="override `workers` of the configuration (1 = inline, best for debugging)") SetOption = typer.Option(None, "--set", "-s", help="override a configuration entry, e.g. -s switches.jet_fakes=ff -s workers=4 (repeatable, values parsed as YAML)") @@ -46,81 +46,69 @@ def _final_states(channels: list[str]) -> dict[str, list[str]]: return states -@app.command("example-config") -def example_config(path: Path = typer.Argument(..., help="where to write the example YAML")): - """Write an example run configuration.""" - write_example_config(path) - typer.echo(f"wrote {path}") +def _split(value: Optional[str]) -> Optional[list[str]]: + return value.split(",") if value else None @app.command() def validate(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption): - """Load and validate the analysis; report the columns every channel needs.""" - from shapesmith.skim import required_columns + """Load and validate the analysis; report processes, selections and the columns every channel needs.""" + from shapesmith.skim import needed_columns cfg, analysis, selected = _setup(config, channels, overrides=overrides) console = Console() console.print(f"[bold]{analysis.name}[/bold] era {analysis.era}, {analysis.lumi_pb:g} pb^-1, switches {dict(cfg.switches)}") - console.print(f"channels: {', '.join(selected)} samples: {len(analysis.samples)} ({', '.join(f'{kind} {sum(s.kind == kind for s in analysis.samples)}' for kind in sorted({s.kind for s in analysis.samples}))})") - table = Table(title="processes", show_edge=False) - for column in ("key", "name", "kind", "group", "plot group", *[f"samples {c}" for c in selected]): - table.add_column(column) - for process in analysis.processes: - table.add_row(process.key, process.name, process.kind, process.group, process.plot_group, *[str(len(analysis.samples_for(process.group, c))) for c in selected]) - console.print(table) - for channel in selected: - ch = analysis.channel(channel) - console.print(f"{channel}: baseline cuts {list(ch.baseline.cuts)}, weights {list(ch.baseline.weights)}, regions {[r.name for r in ch.regions]}") - console.print(f"categories: {[c.name for c in analysis.categories] or 'none'} control variables: {len(analysis.control_variables)}") - console.print(f"systematics: {len(analysis.weight_variations)} weight variations, {len(analysis.lnn)} lnN estimator: {analysis.estimator.name + ' -> ' + analysis.estimator.output if analysis.estimator else 'none'}") - for channel in selected: - typer.echo(f"{channel}: {len(required_columns(analysis, channel))} columns required") + for name in selected: + channel = analysis.channel(name) + kinds = sorted({s.kind for s in channel.samples}) + console.print(f"[bold]{name}[/bold]: samples {len(channel.samples)} ({', '.join(f'{k} {sum(s.kind == k for s in channel.samples)}' for k in kinds)})") + table = Table(show_edge=False) + for column in ("process", "role", "group", "plot group", "samples"): + table.add_column(column) + for process in channel.processes: + table.add_row(process.name, process.role, process.group, process.plot_group, str(len(channel.samples_of(process.group)))) + console.print(table) + console.print(f" cuts {list(channel.cuts)}, regions {[r.name for r in channel.regions]}") + console.print(f" categories {[c.name for c in channel.categories] or 'none'}, control variables {len(channel.variables)}, variations {len(channel.variations)}") + console.print(f" estimators {[type(e).__name__ for e in channel.estimators] or 'none'}, backgrounds {list(channel.backgrounds())}") + columns = set().union(*(needed_columns(channel, s) for s in channel.samples)) + typer.echo(f"{name}: {len(columns)} columns required") typer.echo(f"analysis {analysis.name} is valid") @app.command() -def skim(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, force: bool = ForceOption, samples: Optional[str] = typer.Option(None, "--samples", help="comma separated sample groups or nick prefixes (default: all)"), workers: Optional[int] = WorkersOption): +def skim(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, force: bool = typer.Option(False, "--force", help="skim again, ignoring stored skims"), samples: Optional[str] = typer.Option(None, "--samples", help="comma separated sample groups or nick prefixes (default: all)"), workers: Optional[int] = WorkersOption): """Stage 1: ntuples (+ friends) -> Parquet skims.""" from shapesmith.skim import run_skim cfg, analysis, selected = _setup(config, channels, workers=workers, overrides=overrides) - write_versions(cfg, cfg.skim_dir) - results = run_skim(cfg, analysis, selected, force=force, samples=samples.split(",") if samples else None) + write_versions(cfg, analysis.name, cfg.skim_dir) + results = run_skim(cfg, analysis, selected, force=force, samples=_split(samples)) typer.echo(f"{sum(1 for r in results if not r.skipped)} files skimmed, {sum(1 for r in results if r.skipped)} reused, {sum(r.n_out for r in results)} events kept") @app.command() -def hist(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, control: bool = typer.Option(False, "--control", help="control variables instead of NN categories"), variables: Optional[str] = typer.Option(None, help="comma separated control variables"), regions: Optional[str] = typer.Option(None, "--regions", help="comma separated regions, or 'all' (default: nominal plus estimator regions)"), skip_systematics: bool = typer.Option(False, "--skip-systematics"), processes: Optional[str] = typer.Option(None, help="comma separated process keys"), force: bool = ForceOption, workers: Optional[int] = WorkersOption): - """Stage 2: skims -> histograms (control_shapes.root or shapes.root).""" - from shapesmith.histograms import run_hist +def hist(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, control: bool = typer.Option(False, "--control", help="control variables instead of NN categories"), variables: Optional[str] = typer.Option(None, help="comma separated control variables"), regions: Optional[str] = typer.Option(None, "--regions", help="comma separated regions, or 'all' (default: nominal plus estimator regions)"), skip_systematics: bool = typer.Option(False, "--skip-systematics", help="no weight or column variations"), processes: Optional[str] = typer.Option(None, help="comma separated process names"), workers: Optional[int] = WorkersOption): + """Stage 2: skims -> histograms (control_shapes.root or shapes.root); other histograms in the file are kept.""" + from shapesmith.fill import run_hist cfg, analysis, selected = _setup(config, channels, workers=workers, overrides=overrides) - write_versions(cfg, cfg.output_dir) - hset = run_hist( - cfg, - analysis, - selected, - control, - variables.split(",") if variables else None, - not skip_systematics, - processes.split(",") if processes else None, - _shapes_path(cfg, control), - force, - regions.split(",") if regions else None, - ) - typer.echo(f"{len(hset)} histograms in {_shapes_path(cfg, control)}") + write_versions(cfg, analysis.name, cfg.output_dir) + output = _shapes_path(cfg, control) + hset = run_hist(cfg, analysis, selected, control, _split(variables), not skip_systematics, _split(processes), output, _split(regions)) + typer.echo(f"{len(hset)} histograms in {output}") @app.command() def estimate(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, control: bool = typer.Option(False, "--control")): - """Add the estimated jet-fake process (and embedding variations) to the histogram file.""" - from shapesmith.estimators import run_estimate - from shapesmith.histograms import HistogramSet + """Stage 3: add the estimated processes and variations of every channel to the histogram file.""" + from shapesmith.estimates import run_estimates + from shapesmith.histogram import HistogramSet cfg, analysis, selected = _setup(config, channels, overrides=overrides) path = _shapes_path(cfg, control) hset = HistogramSet.load(path) - added = run_estimate(hset, analysis, selected) + added = run_estimates(hset, analysis, selected) hset.save(path) typer.echo(f"{len(added)} histograms added to {path}") @@ -128,8 +116,8 @@ def estimate(config: Path = ConfigOption, channels: Optional[str] = ChannelsOpti @app.command() def sync(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption): """Write combine-style shape files per channel.""" - from shapesmith.histograms import HistogramSet - from shapesmith.sync import run_sync + from shapesmith.histogram import HistogramSet + from shapesmith.shapes import run_sync cfg, analysis, selected = _setup(config, channels, overrides=overrides) for path in run_sync(HistogramSet.load(_shapes_path(cfg, False)), analysis, selected, cfg.output_dir): @@ -140,7 +128,7 @@ def sync(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, def datacards(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, systematics: bool = typer.Option(True, "--systematics/--no-systematics"), min_background: Optional[float] = typer.Option(1.0, help="merge bins below this background yield; negative disables")): """Write text datacards and their shapes file per final state (each channel and the combination).""" from shapesmith.datacards import run_datacards - from shapesmith.histograms import HistogramSet + from shapesmith.histogram import HistogramSet cfg, analysis, selected = _setup(config, channels, overrides=overrides) threshold = None if min_background is None or min_background < 0 else min_background @@ -151,11 +139,11 @@ def datacards(config: Path = ConfigOption, channels: Optional[str] = ChannelsOpt @app.command() def fit(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, final_states: Optional[str] = typer.Option(None, help="comma separated; default: each channel and 'all'"), skip_combine: bool = typer.Option(False, "--skip-combine", help="only collect existing combine outputs")): """Run combine (expected limits, significance, best fit) and summarise the results.""" - from shapesmith.fit import run_fit + from shapesmith.limits import run_limits cfg, _, selected = _setup(config, channels, overrides=overrides) - states = final_states.split(",") if final_states else list(_final_states(selected)) - results = run_fit(cfg, cfg.output_dir / "datacards", states, skip_combine) + states = _split(final_states) or list(_final_states(selected)) + results = run_limits(cfg, cfg.output_dir / "datacards", states, skip_combine) typer.echo((cfg.output_dir / "datacards" / "limits.md").read_text()) typer.echo(f"{len(results)} final states summarised") @@ -163,11 +151,11 @@ def fit(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, o @app.command() def plot(config: Path = ConfigOption, channels: Optional[str] = ChannelsOption, overrides: Optional[list[str]] = SetOption, control: bool = typer.Option(False, "--control"), category: Optional[str] = typer.Option(None), variables: Optional[str] = typer.Option(None), region: str = typer.Option("nominal", "--region", help="histogram region to plot"), blind: bool = typer.Option(False, "--blind"), log: bool = typer.Option(False, "--log"), signal_scale: Optional[float] = typer.Option(None), normalize_by_bin_width: bool = typer.Option(False, "--normalize-by-bin-width")): """Prefit stack plots of control variables (--control) or NN categories.""" - from shapesmith.histograms import HistogramSet + from shapesmith.histogram import HistogramSet from shapesmith.plotting.stack import run_plot cfg, analysis, selected = _setup(config, channels, overrides=overrides) - files = run_plot(HistogramSet.load(_shapes_path(cfg, control)), analysis, selected, control, category, variables.split(",") if variables else None, cfg.output_dir / "plots", region=region, blind=blind, log=log, signal_scale=signal_scale, normalize_by_bin_width=normalize_by_bin_width) + files = run_plot(HistogramSet.load(_shapes_path(cfg, control)), analysis, selected, control, category, _split(variables), cfg.output_dir / "plots", region=region, blind=blind, log=log, signal_scale=signal_scale, normalize_by_bin_width=normalize_by_bin_width) typer.echo(f"{len(files)} files written to {cfg.output_dir / 'plots'}") @@ -178,19 +166,23 @@ def ml_export(config: Path = ConfigOption, channels: Optional[str] = ChannelsOpt cfg, analysis, selected = _setup(config, channels, workers=workers, overrides=overrides) if cfg.ml_dir is not None: - write_versions(cfg, cfg.ml_dir) + write_versions(cfg, analysis.name, cfg.ml_dir) for path in run_ml_export(cfg, analysis, selected): typer.echo(f"wrote {path}") @app.command() -def inspect(shapes: Path = typer.Argument(..., help="a shapes ROOT file written by `hist`")): +def inspect(shapes: Path = typer.Argument(..., help="a shapes ROOT file written by `hist`"), unchanged: bool = typer.Option(False, "--unchanged", help="list the variations that are bitwise equal to their nominal")): """List the processes, regions, variations and variables in a histogram file.""" - from shapesmith.histograms import HistogramSet + from shapesmith.histogram import HistogramSet, unchanged_variations hset = HistogramSet.load(shapes) + if unchanged: + for key in unchanged_variations(hset): + typer.echo(key.path) + return for field in ("channel", "category", "process", "region", "variation", "variable"): - values = sorted({getattr(key, field) for key in hset.keys()}) + values = sorted({getattr(key, field) for key in hset}) typer.echo(f"{field:10s} ({len(values)}): {', '.join(values[:40])}{' ...' if len(values) > 40 else ''}") typer.echo(f"{len(hset)} histograms") diff --git a/src/shapesmith/cmssw.py b/src/shapesmith/cmssw.py new file mode 100644 index 0000000..f1d40d7 --- /dev/null +++ b/src/shapesmith/cmssw.py @@ -0,0 +1,33 @@ +"""Run commands inside a CMSSW environment (combine, CombineHarvester) in a bash subshell.""" +from __future__ import annotations + +import logging +import subprocess +from pathlib import Path +from typing import Sequence + +from shapesmith.config import CombineConfig + +logger = logging.getLogger(__name__) + + +def script(combine: CombineConfig, cwd: Path, commands: Sequence[str]) -> str: + """The bash script: CMSSW environment of `combine.cmssw_dir`, then the commands in `cwd`, stopping at the first failure.""" + return "\n".join( + [ + "set -e", + f"export SCRAM_ARCH={combine.scram_arch}", + "source /cvmfs/cms.cern.ch/cmsset_default.sh", + f"cd {combine.cmssw_dir}/src", + "eval $(scramv1 runtime -sh)", + f"cd {Path(cwd).resolve()}", + *commands, + ] + ) + + +def run(commands: Sequence[str], combine: CombineConfig | None, cwd: Path) -> None: + if combine is None: + raise ValueError("the run configuration needs `combine` (cmssw_dir) to run CMSSW commands") + logger.info(f"running {len(commands)} CMSSW commands in {cwd}") + subprocess.run(["bash", "-c", script(combine, cwd, commands)], check=True) diff --git a/src/shapesmith/config.py b/src/shapesmith/config.py index a727fa3..7182d53 100644 --- a/src/shapesmith/config.py +++ b/src/shapesmith/config.py @@ -1,22 +1,16 @@ -"""Run configuration (YAML -> pydantic) and loading of the analysis object (Spec §13).""" +"""Run configuration (YAML -> pydantic) and loading of the analysis object.""" from __future__ import annotations import importlib -import json import os -import subprocess -from datetime import datetime, timezone from pathlib import Path -from typing import Any, Iterable, Literal +from typing import Any, Iterable import yaml - -from shapesmith import __version__ from pydantic import BaseModel, ConfigDict, Field -from shapesmith.model import Analysis - -SampleKind = Literal["data", "mc", "embedding"] +from shapesmith.model import Analysis, SampleKind +from shapesmith.validate import validate class FriendConfig(BaseModel): @@ -88,58 +82,7 @@ def load_analysis(config: RunConfig) -> Analysis: module_name, _, function_name = config.analysis.partition(":") if not function_name: raise ValueError(f"analysis must be 'module:function', got {config.analysis!r}") - module = importlib.import_module(module_name) - build = getattr(module, function_name) + build = getattr(importlib.import_module(module_name), function_name) analysis = build(config) - analysis.validate() + validate(analysis) return analysis - - -def git_hash(path: Path) -> str | None: - """HEAD commit of the git checkout containing `path`, or None if there is none (or git is missing).""" - path = Path(path) - directory = path.parent if path.is_file() else path - try: - return subprocess.run(["git", "-C", str(directory), "rev-parse", "HEAD"], capture_output=True, text=True, check=True).stdout.strip() - except (OSError, subprocess.CalledProcessError): - return None - - -def write_versions(config: RunConfig, directory: Path) -> Path: - """Record what produced the contents of `directory`: versions, git hashes and the full run configuration.""" - module = importlib.import_module(config.analysis.partition(":")[0]) - record = { - "written": datetime.now(timezone.utc).isoformat(timespec="seconds"), - "shapesmith": {"version": __version__, "git": git_hash(Path(__file__))}, - "analysis": {"module": config.analysis, "git": git_hash(Path(module.__file__))}, - "sample_database": {"path": str(config.sample_database), "git": git_hash(config.sample_database)} if config.sample_database else None, - "config": json.loads(config.model_dump_json()), - } - directory = Path(directory) - directory.mkdir(parents=True, exist_ok=True) - path = directory / "versions.json" - path.write_text(json.dumps(record, indent=2)) - return path - - -EXAMPLE = """\ -analysis: my_analysis.analysis:build # module:function returning an Analysis -era: "2018" -channels: [et, mt, tt] -switches: {jet_fakes: mc, embedding: false} -ntuples: - server: root://cmsdcache-kit-disk.gridka.de - base: /store/user/USER/CROWN/ntuples/TAG/CROWNRun - friends: - - {base: /store/user/USER/CROWN/ntuples/TAG/CROWNFriends/nn_v1, applies_to: [mc, data, embedding]} -skim_dir: /ceph/USER/shapesmith/TAG -output_dir: output/TAG_v1 -ml_dir: /ceph/USER/shapesmith_ml/v1 -sample_database: ../../KingMaker_sample_database/nanoAOD_v15/datasets.json # relative paths: relative to this file -workers: 16 -combine: {cmssw_dir: /work/USER/CMSSW_14_1_9, scram_arch: el9_amd64_gcc12} -""" - - -def write_example_config(path: str | Path) -> None: - Path(path).write_text(EXAMPLE) diff --git a/src/shapesmith/datacards.py b/src/shapesmith/datacards.py index 9fdbfa0..80596cd 100644 --- a/src/shapesmith/datacards.py +++ b/src/shapesmith/datacards.py @@ -1,31 +1,32 @@ -"""Native combine datacards: text card + shapes file, optional rebinning (Spec §10.2). +"""Native combine datacards: text card + shapes file, optional rebinning. -One card per final state lists every bin (channel x category); processes with a non-positive -rate in a bin are left out of that bin. Systematics: lnN from Analysis.lnn, `shape` for every -weight variation present, `* autoMCStats 0`. +One card per final state lists every bin (channel x category); processes with a non-positive rate in a bin are left +out of that bin. Systematics: lnN from Analysis.lnn, `shape` for every Up/Down pair of variations present (names +without a direction are templates and never become shape lines), `* autoMCStats 0`. """ from __future__ import annotations +from dataclasses import dataclass from pathlib import Path -import uproot +from shapesmith.histogram import NOMINAL_VARIATION, HistKey, Histogram, HistogramSet +from shapesmith.model import NOMINAL, Analysis, Category, LnN +from shapesmith.shapes import shape_name, write_shapes -from shapesmith.histogram import Histogram -from shapesmith.histograms import NOMINAL_REGION, NOMINAL_VARIATION, HistKey, HistogramSet -from shapesmith.model import Analysis, LnN + +@dataclass +class Bin: + channel: str + name: str + data: Histogram + processes: dict[str, Histogram] # the processes with a positive rate, rebinned, in card order + variations: dict[str, dict[str, Histogram]] # process -> variation -> rebinned histogram def bin_name(analysis: Analysis, channel: str, category_index: int) -> str: return f"htt_{channel}_{category_index + 1}_{analysis.era}" -def shape_processes(analysis: Analysis) -> tuple[str, ...]: - """Processes that carry shape systematics: simulated backgrounds and the signal.""" - excluded = {analysis.estimator.output} if analysis.estimator else set() - excluded |= {p.name for p in analysis.processes_of_kind("embedding")} - return (*(p for p in analysis.backgrounds() if p not in excluded), analysis.signal) - - def rebin_edges(total_background: Histogram, min_background: float | None) -> list[float]: """Merge bins from the right until every bin holds at least `min_background`.""" edges = list(total_background.edges) @@ -44,6 +45,33 @@ def rebin_edges(total_background: Histogram, min_background: float | None) -> li return edges +def collect_bin(hset: HistogramSet, analysis: Analysis, channel_name: str, index: int, category: Category, min_background: float | None) -> Bin | None: + """The rebinned data, processes and variations of one bin; None without data or processes.""" + channel = analysis.channel(channel_name) + variable = category.variable.name + + def key_of(process: str, variation: str = NOMINAL_VARIATION) -> HistKey: + return HistKey(channel_name, category.name, process, NOMINAL, variation, variable) + + nominal = {p: hset[key_of(p)] for p in (analysis.signal, *channel.backgrounds()) if key_of(p) in hset} + if not nominal or key_of(channel.data()) not in hset: + return None + total = None + for process, h in nominal.items(): + if process != analysis.signal: + total = h.copy() if total is None else total.add(h) + edges = rebin_edges(total, min_background) if total is not None else list(hset[key_of(channel.data())].edges) + result = Bin(channel_name, bin_name(analysis, channel_name, index), hset[key_of(channel.data())].rebin(edges), {}, {}) + for process, h in nominal.items(): + rebinned = h.rebin(edges) + if rebinned.sum() <= 0.0: + continue + result.processes[process] = rebinned + keys = hset.select(channel=channel_name, category=category.name, process=process, region=NOMINAL, variable=variable) + result.variations[process] = {key.variation: hset[key].rebin(edges) for key in keys if key.variation != NOMINAL_VARIATION} + return result + + def _value(lnn: LnN) -> str: if isinstance(lnn.value, tuple): down, up = lnn.value @@ -51,91 +79,72 @@ def _value(lnn: LnN) -> str: return f"{lnn.value:g}" -def lnn_lines(analysis: Analysis, bins: list[tuple[str, str]], processes_per_bin: dict[str, list[str]]) -> list[str]: +def lnn_lines(analysis: Analysis, bins: list[Bin]) -> list[str]: """One ` lnN ...` line per concrete nuisance name ($CHANNEL/$ERA expanded), columns = (bin, process) pairs.""" lines = [] for lnn in analysis.lnn: - concrete_names = sorted({lnn.name.replace("$CHANNEL", channel).replace("$ERA", analysis.era) for channel, _ in bins}) + concrete_names = sorted({lnn.name.replace("$CHANNEL", b.channel).replace("$ERA", analysis.era) for b in bins}) for name in concrete_names: columns = [] - for channel, bin_ in bins: - this_name = lnn.name.replace("$CHANNEL", channel).replace("$ERA", analysis.era) - for process in processes_per_bin[bin_]: - applies = this_name == name and (lnn.channels is None or channel in lnn.channels) and ("*" in lnn.processes or process in lnn.processes) + for b in bins: + this_name = lnn.name.replace("$CHANNEL", b.channel).replace("$ERA", analysis.era) + for process in b.processes: + applies = this_name == name and (lnn.channels is None or b.channel in lnn.channels) and ("*" in lnn.processes or process in lnn.processes) columns.append(_value(lnn) if applies else "-") if any(column != "-" for column in columns): lines.append(f"{name} lnN " + " ".join(columns)) return lines -def write_datacard(hset: HistogramSet, analysis: Analysis, channels: list[str], output_dir: Path, systematics: bool = True, min_background: float | None = 1.0) -> Path: - output_dir = Path(output_dir) - (output_dir / "common").mkdir(parents=True, exist_ok=True) - shapes_file = output_dir / "common" / f"htt_input_{analysis.era}.root" - processes = (analysis.signal, *analysis.backgrounds()) - bins: list[tuple[str, str]] = [] - processes_per_bin: dict[str, list[str]] = {} - observations: dict[str, float] = {} - variations_per_bin: dict[str, dict[str, set[str]]] = {} - with uproot.recreate(shapes_file) as f: - for channel in channels: - for index, category in enumerate(analysis.categories): - bin_ = bin_name(analysis, channel, index) - variable = category.variable.name - - def key_of(process, variation=NOMINAL_VARIATION): - return HistKey(channel, category.name, process, NOMINAL_REGION, variation, variable) - - nominal = {p: hset.get(key_of(p)) for p in processes if hset.has(key_of(p))} - if not nominal or not hset.has(key_of("data")): - continue - total = None - for process, h in nominal.items(): - if process == analysis.signal: - continue - total = h.copy() if total is None else total.add(h) - edges = rebin_edges(total, min_background) if total is not None else list(hset.get(key_of("data")).edges) - data = hset.get(key_of("data")).rebin(edges) - f[f"{bin_}/data_obs"] = data.to_root("data_obs") - observations[bin_] = data.sum() - kept = [] - variations_per_bin[bin_] = {} - for process, h in nominal.items(): - rebinned = h.rebin(edges) - if rebinned.sum() <= 0.0: - continue - kept.append(process) - f[f"{bin_}/{process}"] = rebinned.to_root(process) - variations_per_bin[bin_][process] = set() - for key in hset.keys(channel=channel, category=category.name, process=process, region=NOMINAL_REGION, variable=variable): - if key.variation != NOMINAL_VARIATION: - f[f"{bin_}/{process}_{key.variation}"] = hset.get(key).rebin(edges).to_root(f"{process}_{key.variation}") - variations_per_bin[bin_][process].add(key.variation) - bins.append((channel, bin_)) - processes_per_bin[bin_] = kept +def shape_lines(bins: list[Bin]) -> list[str]: + columns = [(b, process) for b in bins for process in b.processes] + names = sorted({v[: -len("Up")] for b in bins for variations in b.variations.values() for v in variations if v.endswith("Up")}) + lines = [] + for name in names: + entries = ["1" if {f"{name}Up", f"{name}Down"} <= set(b.variations[process]) else "-" for b, process in columns] + if "1" in entries: + lines.append(f"{name} shape " + " ".join(entries)) + return lines + + +def card_text(analysis: Analysis, bins: list[Bin], systematics: bool) -> str: + backgrounds = list(dict.fromkeys(p for b in bins for p in analysis.channel(b.channel).backgrounds())) + index = {name: i for i, name in enumerate((analysis.signal, *backgrounds))} + columns = [(b.name, process) for b in bins for process in b.processes] lines = ["imax * number of bins", "jmax * number of processes minus 1", "kmax * number of nuisance parameters", "-" * 60] - for _, bin_ in bins: - lines.append(f"shapes * {bin_} common/htt_input_{analysis.era}.root {bin_}/$PROCESS {bin_}/$PROCESS_$SYSTEMATIC") + lines += [f"shapes * {b.name} common/htt_input_{analysis.era}.root {b.name}/$PROCESS {b.name}/$PROCESS_$SYSTEMATIC" for b in bins] lines.append("-" * 60) - lines.append("bin " + " ".join(bin_ for _, bin_ in bins)) - lines.append("observation " + " ".join(f"{observations[bin_]:.1f}" for _, bin_ in bins)) + lines.append("bin " + " ".join(b.name for b in bins)) + lines.append("observation " + " ".join(f"{b.data.sum():.1f}" for b in bins)) lines.append("-" * 60) - columns = [(bin_, process) for _, bin_ in bins for process in processes_per_bin[bin_]] - lines.append("bin " + " ".join(bin_ for bin_, _ in columns)) + lines.append("bin " + " ".join(name for name, _ in columns)) lines.append("process " + " ".join(process for _, process in columns)) - lines.append("process " + " ".join("0" if process == analysis.signal else str(processes.index(process)) for _, process in columns)) + lines.append("process " + " ".join(str(index[process]) for _, process in columns)) lines.append("rate " + " ".join("-1" for _ in columns)) lines.append("-" * 60) if systematics: - lines += lnn_lines(analysis, bins, processes_per_bin) - systematic_names = sorted({v[: -len("Up")] for per_bin in variations_per_bin.values() for vs in per_bin.values() for v in vs if v.endswith("Up")}) - for name in systematic_names: - entries = ["1" if {f"{name}Up", f"{name}Down"} <= variations_per_bin[bin_].get(process, set()) else "-" for bin_, process in columns] - if any(entry == "1" for entry in entries): - lines.append(f"{name} shape " + " ".join(entries)) + lines += lnn_lines(analysis, bins) + shape_lines(bins) lines.append("* autoMCStats 0") + return "\n".join(lines) + "\n" + + +def write_datacard(hset: HistogramSet, analysis: Analysis, channels: list[str], output_dir: Path, systematics: bool = True, min_background: float | None = 1.0) -> Path: + output_dir = Path(output_dir) + bins = [ + b + for channel in channels + for index, category in enumerate(analysis.channel(channel).categories) + if (b := collect_bin(hset, analysis, channel, index, category, min_background)) is not None + ] + entries = [] + for b in bins: + entries.append((b.name, "data_obs", b.data)) + for process, h in b.processes.items(): + entries.append((b.name, process, h)) + entries += [(b.name, shape_name(process, variation), varied) for variation, varied in b.variations[process].items()] + write_shapes(output_dir / "common" / f"htt_input_{analysis.era}.root", entries) card = output_dir / "combined.txt" - card.write_text("\n".join(lines) + "\n") + card.write_text(card_text(analysis, bins, systematics)) return card diff --git a/src/shapesmith/estimates.py b/src/shapesmith/estimates.py new file mode 100644 index 0000000..548ded7 --- /dev/null +++ b/src/shapesmith/estimates.py @@ -0,0 +1,116 @@ +"""Stage 3: processes estimated from histograms, run per channel in the order of `Channel.estimators`. + +DataMinus: data minus the subtracted processes in its region, for the nominal and every column variation filled on +data or a subtracted process there; an input without that variation contributes its nominal (under the fill rule it +is unchanged). Weight variations are not propagated. +ABCD: (data - MC)(B) * (data - MC)(C).sum() / (data - MC)(D).sum(), nominal only, negative bins clipped. +TemplateShift: `process` +/- `fraction` * `template`, e.g. the ttbar contamination of the embedded sample. +""" +from __future__ import annotations + +import logging + +from shapesmith.histogram import NOMINAL_VARIATION, HistKey, Histogram, HistogramSet +from shapesmith.model import ABCD, NOMINAL, Analysis, Channel, ColumnVariation, DataMinus, TemplateShift + +logger = logging.getLogger(__name__) + + +def data_minus(hset: HistogramSet, channel: Channel, category: str, variable: str, region: str, subtract: tuple[str, ...], variation: str = NOMINAL_VARIATION) -> Histogram | None: + """data[region] - sum of the given processes[region] under `variation` (nominal where an input lacks it); + None if the data histogram is missing.""" + + def get(process: str) -> Histogram | None: + key = HistKey(channel.name, category, process, region, variation, variable) + if key not in hset: + key = HistKey(channel.name, category, process, region, NOMINAL_VARIATION, variable) + return hset.get(key) + + data = get(channel.data()) + if data is None: + return None + result = data.copy() + for process in subtract: + h = get(process) + if h is None: + logger.warning(f"{channel.name}_{category}/{process}#{region}#{variable} missing, not subtracted") + continue + result.add(h, -1.0) + return result + + +def categories_and_variables(hset: HistogramSet, channel: Channel, region: str) -> list[tuple[str, str]]: + return sorted({(k.category, k.variable) for k in hset.select(channel=channel.name, process=channel.data(), region=region, variation=NOMINAL_VARIATION)}) + + +def estimate_data_minus(hset: HistogramSet, channel: Channel, estimator: DataMinus) -> list[HistKey]: + column_variations = {v.name for v in channel.variations if isinstance(v, ColumnVariation)} + inputs = (channel.data(), *estimator.subtract) + added = [] + for category, variable in categories_and_variables(hset, channel, estimator.region): + present = {k.variation for process in inputs for k in hset.select(channel=channel.name, category=category, process=process, region=estimator.region, variable=variable)} + for variation in (NOMINAL_VARIATION, *sorted(present & column_variations)): + h = data_minus(hset, channel, category, variable, estimator.region, estimator.subtract, variation) + key = HistKey(channel.name, category, estimator.output, NOMINAL, variation, variable) + hset[key] = h.scale(estimator.scale) + added.append(key) + return added + + +def clip_negative_bins(h: Histogram) -> Histogram: + """Set negative bins to zero and rescale to the original integral (zero everything if the integral is <= 0).""" + total = h.sum() + positive = float(h.values[h.values > 0].sum()) + h.values[h.values < 0] = 0.0 + if total <= 0.0: + logger.warning(f"integral {total:.3f} <= 0 after subtraction, histogram set to zero") + h.values[:] = 0.0 + h.variances[:] = 0.0 + elif positive > 0.0 and positive != total: + h.scale(total / positive) + return h + + +def estimate_abcd(hset: HistogramSet, channel: Channel, estimator: ABCD) -> list[HistKey]: + added = [] + for category, variable in categories_and_variables(hset, channel, estimator.b): + b, c, d = (data_minus(hset, channel, category, variable, region, estimator.subtract) for region in (estimator.b, estimator.c, estimator.d)) + if b is None or c is None or d is None: + logger.warning(f"{channel.name}/{category}/{variable}: ABCD control region missing, skipped") + continue + yield_c, yield_d = c.sum(), d.sum() + if yield_c <= 0.0 or yield_d <= 0.0: + logger.warning(f"{channel.name}/{category}/{variable}: C={yield_c:.2f}, D={yield_d:.2f}, {estimator.output} set to zero") + factor = 0.0 + else: + factor = yield_c / yield_d + key = HistKey(channel.name, category, estimator.output, NOMINAL, NOMINAL_VARIATION, variable) + hset[key] = clip_negative_bins(b.scale(factor)) + added.append(key) + return added + + +def estimate_template_shift(hset: HistogramSet, channel: Channel, estimator: TemplateShift) -> list[HistKey]: + added = [] + for key in hset.select(channel=channel.name, process=estimator.process, region=NOMINAL, variation=NOMINAL_VARIATION): + template = HistKey(channel.name, key.category, estimator.template, NOMINAL, NOMINAL_VARIATION, key.variable) + if template not in hset: + logger.warning(f"{template.path} missing, no {estimator.name} variation") + continue + for direction, sign in (("Up", 1.0), ("Down", -1.0)): + varied = HistKey(channel.name, key.category, estimator.process, NOMINAL, f"{estimator.name}{direction}", key.variable) + hset[varied] = hset[key].copy().add(hset[template], sign * estimator.fraction) + added.append(varied) + return added + + +ESTIMATES = {DataMinus: estimate_data_minus, ABCD: estimate_abcd, TemplateShift: estimate_template_shift} + + +def run_estimates(hset: HistogramSet, analysis: Analysis, channels: list[str]) -> list[HistKey]: + added: list[HistKey] = [] + for name in channels: + channel = analysis.channel(name) + for estimator in channel.estimators: + added += ESTIMATES[type(estimator)](hset, channel, estimator) + return added diff --git a/src/shapesmith/estimators/__init__.py b/src/shapesmith/estimators/__init__.py deleted file mode 100644 index 3bc6420..0000000 --- a/src/shapesmith/estimators/__init__.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Derived processes computed from histograms of the estimation regions (Spec §9).""" -from __future__ import annotations - -import logging - -from shapesmith.histogram import Histogram -from shapesmith.histograms import HistKey, HistogramSet -from shapesmith.model import Analysis - -logger = logging.getLogger(__name__) - - -def data_minus(hset: HistogramSet, channel: str, category: str, variable: str, region: str, subtract: tuple[str, ...]) -> Histogram | None: - """data[region] - sum of the given processes[region]; None if the data histogram is missing.""" - data_key = HistKey(channel, category, "data", region, "Nominal", variable) - if not hset.has(data_key): - return None - result = hset.get(data_key).copy() - for process in subtract: - key = HistKey(channel, category, process, region, "Nominal", variable) - if not hset.has(key): - logger.warning(f"{key.path} missing, not subtracted") - continue - result.add(hset.get(key), -1.0) - return result - - -def categories_and_variables(hset: HistogramSet, channel: str, region: str) -> list[tuple[str, str]]: - return sorted({(k.category, k.variable) for k in hset.keys(channel=channel, process="data", region=region)}) - - -def run_estimate(hset: HistogramSet, analysis: Analysis, channels: list[str]) -> list[HistKey]: - from shapesmith.estimators import abcd, embedding, fake_factors # local import: the modules import this package - - added: list[HistKey] = [] - for channel in channels: - if analysis.estimator is not None: - estimate = {"fake_factors": fake_factors.estimate, "abcd": abcd.estimate}[analysis.estimator.name] - added += estimate(hset, analysis, channel) - if analysis.processes_of_kind("embedding"): - added += embedding.ttbar_contamination(hset, analysis, channel) - return added diff --git a/src/shapesmith/estimators/abcd.py b/src/shapesmith/estimators/abcd.py deleted file mode 100644 index 744c4b0..0000000 --- a/src/shapesmith/estimators/abcd.py +++ /dev/null @@ -1,51 +0,0 @@ -"""ABCD method: QCD(A) = (data - MC)(B) * (data - MC)(C).sum() / (data - MC)(D).sum(). - -A = signal region (OS, isolated), B = OS anti-isolated, C = SS isolated, D = SS anti-isolated. -""" -from __future__ import annotations - -import logging - -from shapesmith.estimators import categories_and_variables, data_minus -from shapesmith.histogram import Histogram -from shapesmith.histograms import NOMINAL_REGION, NOMINAL_VARIATION, HistKey, HistogramSet -from shapesmith.model import Analysis - -logger = logging.getLogger(__name__) - - -def clip_negative_bins(h: Histogram) -> Histogram: - """Set negative bins to zero and rescale to the original integral (zero everything if the integral is <= 0).""" - total = h.sum() - positive = float(h.values[h.values > 0].sum()) - h.values[h.values < 0] = 0.0 - if total <= 0.0: - logger.warning(f"integral {total:.3f} <= 0 after subtraction, histogram set to zero") - h.values[:] = 0.0 - h.variances[:] = 0.0 - elif positive > 0.0 and positive != total: - h.scale(total / positive) - return h - - -def estimate(hset: HistogramSet, analysis: Analysis, channel: str) -> list[HistKey]: - estimator = analysis.estimator - regions = estimator.regions - added = [] - for category, variable in categories_and_variables(hset, channel, regions["B"]): - b = data_minus(hset, channel, category, variable, regions["B"], estimator.subtract) - c = data_minus(hset, channel, category, variable, regions["C"], estimator.subtract) - d = data_minus(hset, channel, category, variable, regions["D"], estimator.subtract) - if b is None or c is None or d is None: - logger.warning(f"{channel}/{category}/{variable}: ABCD control region missing, skipped") - continue - yield_c, yield_d = c.sum(), d.sum() - if yield_c <= 0.0 or yield_d <= 0.0: - logger.warning(f"{channel}/{category}/{variable}: C={yield_c:.2f}, D={yield_d:.2f}, QCD set to zero") - factor = 0.0 - else: - factor = yield_c / yield_d - key = HistKey(channel, category, estimator.output, NOMINAL_REGION, NOMINAL_VARIATION, variable) - hset.add(key, clip_negative_bins(b.scale(factor))) - added.append(key) - return added diff --git a/src/shapesmith/estimators/embedding.py b/src/shapesmith/estimators/embedding.py deleted file mode 100644 index 199f353..0000000 --- a/src/shapesmith/estimators/embedding.py +++ /dev/null @@ -1,27 +0,0 @@ -"""ttbar contamination variation of the embedded sample: EMB -/+ 10 % of the genuine-tau ttbar histogram.""" -from __future__ import annotations - -import logging - -from shapesmith.histograms import NOMINAL_REGION, NOMINAL_VARIATION, HistKey, HistogramSet -from shapesmith.model import Analysis - -logger = logging.getLogger(__name__) -TTBAR_GENUINE = "TTT" -FRACTION = 0.1 - - -def ttbar_contamination(hset: HistogramSet, analysis: Analysis, channel: str) -> list[HistKey]: - added = [] - for emb in analysis.processes_of_kind("embedding"): - for key in hset.keys(channel=channel, process=emb.name, region=NOMINAL_REGION, variation=NOMINAL_VARIATION): - ttbar_key = HistKey(channel, key.category, TTBAR_GENUINE, NOMINAL_REGION, NOMINAL_VARIATION, key.variable) - if not hset.has(ttbar_key): - logger.warning(f"{ttbar_key.path} missing, no embedding ttbar variation") - continue - for direction, sign in (("Down", -1.0), ("Up", +1.0)): - varied = hset.get(key).copy().add(hset.get(ttbar_key), sign * FRACTION) - new_key = HistKey(channel, key.category, emb.name, NOMINAL_REGION, f"CMS_htt_emb_ttbar_{analysis.era}{direction}", key.variable) - hset.add(new_key, varied) - added.append(new_key) - return added diff --git a/src/shapesmith/estimators/fake_factors.py b/src/shapesmith/estimators/fake_factors.py deleted file mode 100644 index c4ae1ef..0000000 --- a/src/shapesmith/estimators/fake_factors.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Fake-factor method: jetFakes = FF-weighted anti-isolated data minus genuine-tau and lepton-fake MC.""" -from __future__ import annotations - -from shapesmith.estimators import categories_and_variables, data_minus -from shapesmith.histograms import NOMINAL_REGION, NOMINAL_VARIATION, HistKey, HistogramSet -from shapesmith.model import Analysis - - -def estimate(hset: HistogramSet, analysis: Analysis, channel: str) -> list[HistKey]: - estimator = analysis.estimator - region = estimator.regions["anti_iso"] - added = [] - for category, variable in categories_and_variables(hset, channel, region): - h = data_minus(hset, channel, category, variable, region, estimator.subtract) - if h is None: - continue - key = HistKey(channel, category, estimator.output, NOMINAL_REGION, NOMINAL_VARIATION, variable) - hset.add(key, h) - added.append(key) - return added diff --git a/src/shapesmith/events.py b/src/shapesmith/events.py new file mode 100644 index 0000000..da89cb3 --- /dev/null +++ b/src/shapesmith/events.py @@ -0,0 +1,74 @@ +"""The one rule that turns a process in a region under a variation into cuts and weights, and loads its events. + +Cuts: the channel cuts with the region's replacements, the process cuts and the skim cuts. The skim cuts are a no-op +on nominal rows; under a variation they keep out the events a wider skim stored for other variations. +Weights, in order: the process weights, with the region's replacements where the process carries the name, then the +region's added weights. A weight variation replaces weights in place and does not apply to a process lacking one of +them; a column variation rewrites every cut and weight (expressions.shift). +Event weight: (norm_weight * lumi) * product of the weights, with lumi only for simulated (mc) processes. +""" +from __future__ import annotations + +from dataclasses import dataclass +from typing import Iterable + +import numpy as np +import pandas as pd + +from shapesmith.config import RunConfig +from shapesmith.expressions import columns_of, mask, product, shift +from shapesmith.model import NOMINAL, Analysis, Channel, ColumnVariation, Process, Region, Variation, WeightVariation +from shapesmith.store import SKIM_COLUMNS, read_skims, schema + + +@dataclass(frozen=True) +class Query: + channel: str + process: str + region: str = NOMINAL + variation: Variation | None = None + + +@dataclass +class Events: + frame: pd.DataFrame + weights: np.ndarray + + +def select(channel: Channel, process: Process, region: Region, variation: Variation | None = None, available: set[str] = frozenset()) -> tuple[list[str], list[str]] | None: + """Cut and weight expressions of `process` in `region` under `variation`; None if the variation does not apply.""" + weights = {name: region.replace_weights.get(name, expr) for name, expr in process.selection.weights.items()} + weights.update(region.add_weights) + if isinstance(variation, WeightVariation): + if any(name not in weights for name in variation.replace_weights): + return None + weights.update(variation.replace_weights) + cuts = [*{**channel.cuts, **region.replace_cuts}.values(), *process.selection.cuts.values(), *channel.skim.values()] + weights = list(weights.values()) + if isinstance(variation, ColumnVariation): + cuts = [shift(expr, variation, available) for expr in cuts] + weights = [shift(expr, variation, available) for expr in weights] + return cuts, weights + + +def lumi(analysis: Analysis, channel: Channel, process: Process) -> float: + return analysis.lumi_pb if channel.kind_of(process) == "mc" else 1.0 + + +def event_weights(frame: pd.DataFrame, weights: Iterable[str], lumi_pb: float) -> np.ndarray: + return frame["norm_weight"].to_numpy() * lumi_pb * product(frame, weights) + + +def load(config: RunConfig, analysis: Analysis, query: Query, columns: Iterable[str] = ()) -> Events: + """The selected events of a query (one frame, in sample order) with their weights; `columns` are read in addition.""" + channel = analysis.channel(query.channel) + process = channel.process(query.process) + nicks = [s.nick for s in channel.samples_of(process.group)] + available = schema(config.skim_dir, channel.name, nicks) if isinstance(query.variation, ColumnVariation) else set() + selection = select(channel, process, channel.region(query.region), query.variation, available) + if selection is None: + raise ValueError(f"{query.channel}/{query.process}: variation {query.variation.name} does not apply") + cuts, weights = selection + frame = read_skims(config.skim_dir, channel.name, nicks, set(SKIM_COLUMNS) | columns_of(cuts + weights) | set(columns)) + selected = frame[mask(frame, cuts)].reset_index(drop=True) + return Events(selected, event_weights(selected, weights, lumi(analysis, channel, process))) diff --git a/src/shapesmith/expressions.py b/src/shapesmith/expressions.py index cd5c79b..9ec17f0 100644 --- a/src/shapesmith/expressions.py +++ b/src/shapesmith/expressions.py @@ -1,15 +1,14 @@ -"""Evaluation of cut and weight expressions (pandas.eval syntax, numexpr engine), Spec §6.""" +"""Evaluation of cut and weight expressions (pandas.eval syntax, numexpr engine) and their column variations.""" from __future__ import annotations -import re -from typing import Mapping - import logging +import re +from typing import Iterable import numpy as np import pandas as pd -from shapesmith.model import Region, Selection, WeightVariation +from shapesmith.model import ColumnVariation FUNCTIONS = frozenset( "abs sqrt exp log log10 sin cos tan arctan2 arcsin arccos arctan sinh cosh tanh expm1 log1p".split() @@ -17,7 +16,6 @@ KEYWORDS = frozenset({"and", "or", "not", "True", "False", "inf", "nan"}) _IDENTIFIER = re.compile(r"(? set[str]: return {token for token in _IDENTIFIER.findall(expr) if token not in FUNCTIONS and token not in KEYWORDS} +def columns_of(exprs: Iterable[str]) -> set[str]: + columns: set[str] = set() + for expr in exprs: + columns |= columns_in(expr) + return columns + + def evaluate(frame: pd.DataFrame, expr: str) -> np.ndarray: """Evaluate `expr` on `frame`; scalars are broadcast to one value per row.""" missing = sorted(columns_in(expr) - set(frame.columns)) @@ -50,57 +55,31 @@ def evaluate(frame: pd.DataFrame, expr: str) -> np.ndarray: return np.asarray(result) -def mask(frame: pd.DataFrame, cuts: Mapping[str, str]) -> np.ndarray: - """Logical AND of all cuts (all True for an empty mapping).""" +def mask(frame: pd.DataFrame, cuts: Iterable[str]) -> np.ndarray: + """Logical AND of all cuts (all True for none).""" result = np.ones(len(frame), dtype=bool) - for expr in cuts.values(): + for expr in cuts: result &= evaluate(frame, expr).astype(bool) return result -def weight(frame: pd.DataFrame, weights: Mapping[str, str]) -> np.ndarray: - """Product of all weights as float64 (all 1.0 for an empty mapping).""" +def product(frame: pd.DataFrame, weights: Iterable[str]) -> np.ndarray: + """Product of all weights as float64, in the given order (all 1.0 for none).""" result = np.ones(len(frame), dtype=np.float64) - for expr in weights.values(): + for expr in weights: result *= evaluate(frame, expr).astype(np.float64) return result -def apply_region(selection: Selection, region: Region) -> Selection: - """Replace the named cuts of `selection` and append the region weights.""" - cuts = dict(selection.cuts) - for name, expr in region.replace_cuts.items(): - if name not in cuts: - raise KeyError(f"region {region.name}: cut {name!r} not in selection {sorted(cuts)}") - cuts[name] = expr - weights = dict(selection.weights) - weights.update(region.add_weights) - return Selection(cuts=cuts, weights=weights) - - -def apply_weight_variation(selection: Selection, variation: WeightVariation) -> Selection: - """Replace the named weights of `selection` (weights not present are an error).""" - weights = dict(selection.weights) - for name, expr in variation.replace_weights.items(): - if name not in weights: - raise KeyError(f"variation {variation.name}: weight {name!r} not in selection {sorted(weights)}") - weights[name] = expr - return Selection(cuts=dict(selection.cuts), weights=weights) - - -def apply_column_variation(expr: str, suffix: str, available: set[str]) -> str: - """Rename every column `c` in `expr` to `c + suffix` if that shifted column exists.""" +def shift(expr: str, variation: ColumnVariation, available: set[str]) -> str: + """`expr` under a column variation: a derived column becomes its expression, a column `c` whose shifted branch + `c + suffix` is in `available` is read shifted, and every other column stays nominal.""" def rename(match: re.Match) -> str: name = match.group(0) - shifted = name + suffix - return shifted if name in available and shifted in available else name + if name in variation.derived: + return f"({variation.derived[name]})" + shifted = name + variation.suffix + return shifted if variation.suffix and shifted in available else name return _IDENTIFIER.sub(rename, expr) - - -def selection_columns(selection: Selection) -> set[str]: - columns: set[str] = set() - for expr in list(selection.cuts.values()) + list(selection.weights.values()): - columns |= columns_in(expr) - return columns diff --git a/src/shapesmith/fill.py b/src/shapesmith/fill.py new file mode 100644 index 0000000..0494ebe --- /dev/null +++ b/src/shapesmith/fill.py @@ -0,0 +1,167 @@ +"""Stage 2: skims -> histograms per process, region, category, variable and variation. + +Bookings: the signal in the nominal region, auxiliary processes in the nominal region without variations, every +other process in the nominal region and the estimator regions (or the explicitly requested regions). A variation is +filled for the processes whose sample kind it applies to, in its regions; a column variation only where it changes +an expression of the histogram (elsewhere it equals the nominal, and consumers fall back to that). +""" +from __future__ import annotations + +import logging +from dataclasses import dataclass +from pathlib import Path + +import numpy as np + +from shapesmith.config import RunConfig +from shapesmith.events import event_weights, lumi, select +from shapesmith.expressions import columns_of, evaluate, mask, shift +from shapesmith.histogram import INCLUSIVE, NOMINAL_VARIATION, HistKey, Histogram, HistogramSet +from shapesmith.model import ABCD, NOMINAL, Analysis, Channel, ColumnVariation, DataMinus, Process, Variable, Variation +from shapesmith.parallel import run_jobs +from shapesmith.store import SKIM_COLUMNS, read_skims, schema + +logger = logging.getLogger(__name__) + + +@dataclass(frozen=True) +class Booking: + process: Process + regions: tuple[str, ...] + variations: tuple[Variation, ...] + + +@dataclass(frozen=True) +class Target: + category: str + cut: str | None + variable: Variable + + +def estimator_regions(channel: Channel) -> tuple[str, ...]: + regions = [] + for estimator in channel.estimators: + if isinstance(estimator, DataMinus): + regions.append(estimator.region) + elif isinstance(estimator, ABCD): + regions += [estimator.b, estimator.c, estimator.d] + return tuple(dict.fromkeys(regions)) + + +def resolve_regions(channel: Channel, regions: list[str] | None) -> tuple[str, ...] | None: + """An explicit region request; `all` expands to the nominal and every region of the channel.""" + if regions is None: + return None + names = (NOMINAL, *(region.name for region in channel.regions)) if "all" in regions else tuple(regions) + resolved = tuple(dict.fromkeys(names)) + for name in resolved: + channel.region(name) # validates with a channel-specific error + return resolved + + +def bookings(channel: Channel, systematics: bool, regions: list[str] | None = None) -> list[Booking]: + requested = resolve_regions(channel, regions) + result = [] + for process in channel.processes: + if process.role == "auxiliary": + if requested is None or NOMINAL in requested: + result.append(Booking(process, (NOMINAL,), ())) + continue + if requested is not None: + process_regions = requested + elif process.role == "signal": + process_regions = (NOMINAL,) + else: + process_regions = tuple(dict.fromkeys((NOMINAL, *estimator_regions(channel)))) + kind = channel.kind_of(process) + variations = tuple(v for v in channel.variations if kind in v.applies_to) if systematics else () + result.append(Booking(process, process_regions, variations)) + return result + + +def targets(channel: Channel, control: bool, variables: list[str] | None) -> list[Target]: + if control: + names = variables or list(channel.variables) + return [Target(INCLUSIVE, None, channel.variables[name]) for name in names] # KeyError for unknown variables + return [Target(c.name, c.cut, c.variable) for c in channel.categories] + + +def _target_exprs(target: Target, variation: Variation | None, available: set[str]) -> tuple[str | None, str]: + if not isinstance(variation, ColumnVariation): + return target.cut, target.variable.expr + return (shift(target.cut, variation, available) if target.cut else None), shift(target.variable.expr, variation, available) + + +def fill_booking(config: RunConfig, analysis: Analysis, channel_name: str, booking: Booking, targets_: list[Target]) -> dict[HistKey, Histogram]: + """All histograms of one booking, from one frame of the process's skims.""" + channel = analysis.channel(channel_name) + process = booking.process + nicks = [s.nick for s in channel.samples_of(process.group)] + available = schema(config.skim_dir, channel_name, nicks) + plan = [] # (region, variation, cuts, weights, [(target, cut, expression)]) + for region_name in booking.regions: + region = channel.region(region_name) + nominal = select(channel, process, region) + for variation in (None, *(v for v in booking.variations if v.regions is None or region_name in v.regions)): + selection = select(channel, process, region, variation, available) + if selection is None: + logger.debug(f"{process.name}: variation {variation.name} not applicable, skipped") + continue + exprs = [(target, *_target_exprs(target, variation, available)) for target in targets_] + if isinstance(variation, ColumnVariation): + unchanged = selection == nominal + exprs = [(target, cut, expr) for target, cut, expr in exprs if not unchanged or (cut, expr) != (target.cut, target.variable.expr)] + if exprs: + plan.append((region_name, variation, *selection, exprs)) + read = [] + for _, _, cuts, weights, exprs in plan: + read += cuts + weights + [e for _, cut, expr in exprs for e in (cut, expr) if e] + frame = read_skims(config.skim_dir, channel_name, nicks, set(SKIM_COLUMNS) | columns_of(read)) + lumi_pb = lumi(analysis, channel, process) + result: dict[HistKey, Histogram] = {} + for region_name, variation, cuts, weights, exprs in plan: + selected = frame[mask(frame, cuts)] + w = event_weights(selected, weights, lumi_pb) + for target, cut, expr in exprs: + in_category = mask(selected, [cut]) if cut else np.ones(len(selected), dtype=bool) + values = evaluate(selected, expr).astype(np.float64) + finite = np.isfinite(values) & np.isfinite(w) + if (in_category & ~finite).any(): + logger.warning(f"{process.name}/{region_name}/{target.variable.name}: {(in_category & ~finite).sum()} events with NaN/inf skipped") + keep = in_category & finite + key = HistKey(channel_name, target.category, process.name, region_name, variation.name if variation else NOMINAL_VARIATION, target.variable.name) + result[key] = Histogram.fill(target.variable.edges, values[keep], w[keep]) + return result + + +def _fill_job(args) -> dict[HistKey, Histogram]: + return fill_booking(*args) + + +def run_hist(config: RunConfig, analysis: Analysis, channels: list[str] | None, control: bool, variables: list[str] | None, systematics: bool, processes: list[str] | None, output: Path, regions: list[str] | None = None) -> HistogramSet: + """Fill every booked histogram of the requested channels into `output` (+ .json index). + + The requested scopes (channel, process, region, category, variable) are always filled; histograms of other + scopes already in `output` are kept.""" + output = Path(output) + jobs, scopes = [], set() + for channel_name in channels or config.channels: + channel = analysis.channel(channel_name) + targets_ = targets(channel, control, variables) + for booking in bookings(channel, systematics, regions): + if processes and booking.process.name not in processes: + continue + jobs.append((config, analysis, channel_name, booking, targets_)) + scopes |= {(channel_name, booking.process.name, region, t.category, t.variable.name) for region in booking.regions for t in targets_} + hset = HistogramSet() + if output.exists(): + previous = HistogramSet.load(output) + hset.update((key, h) for key, h in previous.items() if (key.channel, key.process, key.region, key.category, key.variable) not in scopes) + logger.info(f"{output}: filling {len(scopes)} histogram scopes, keeping {len(hset)} other histograms") + logger.info(f"filling {len(jobs)} process bookings with {config.workers} workers") + for job, result, error in run_jobs(_fill_job, jobs, config.workers): + if error is not None: + raise RuntimeError(f"{job[2]}/{job[3].process.name}: {error}") from error + hset.update(result) + hset.save(output) + return hset diff --git a/src/shapesmith/histogram.py b/src/shapesmith/histogram.py index 991b1bc..d051ddf 100644 --- a/src/shapesmith/histogram.py +++ b/src/shapesmith/histogram.py @@ -1,4 +1,5 @@ -"""A minimal weighted 1D histogram on numpy arrays with ROOT TH1D conversion through uproot. +"""A minimal weighted 1D histogram on numpy arrays with ROOT TH1D conversion through uproot, and the keyed set +of histograms the stages exchange (one ROOT file plus a JSON index). boost-histogram/hist are deliberately not used: in LCG_108 (boost_histogram 1.3.2, numpy 2.1) the axis `edges` property returns constant values, and uproot writes exactly those corrupted edges. numpy plus @@ -6,11 +7,17 @@ """ from __future__ import annotations -from dataclasses import dataclass +import json +from dataclasses import asdict, dataclass +from pathlib import Path import numpy as np +import uproot from uproot.writing.identify import to_TAxis, to_TH1x +NOMINAL_VARIATION = "Nominal" +INCLUSIVE = "inclusive" # the category of control-variable histograms + @dataclass class Histogram: @@ -76,3 +83,72 @@ def to_root(self, name: str): @classmethod def from_root(cls, th) -> "Histogram": return cls(th.axis().edges(), th.values(), th.variances()) + + +@dataclass(frozen=True, order=True) +class HistKey: + channel: str + category: str + process: str + region: str + variation: str + variable: str + + @property + def directory(self) -> str: + return f"{self.channel}_{self.category}" + + @property + def object_name(self) -> str: + return f"{self.process}#{self.region}#{self.variation}#{self.variable}" + + @property + def path(self) -> str: + return f"{self.directory}/{self.object_name}" + + @classmethod + def parse(cls, path: str) -> "HistKey": + directory, name = path.split("/", 1) + channel, category = directory.split("_", 1) + process, region, variation, variable = name.split("#") + return cls(channel, category, process, region, variation, variable) + + +class HistogramSet(dict): + """HistKey -> Histogram, saved as one ROOT file (`_/###`) + plus a JSON index next to it.""" + + def select(self, **fields) -> list[HistKey]: + """The keys whose fields equal the given values, sorted.""" + return sorted(key for key in self if all(getattr(key, name) == value for name, value in fields.items())) + + def save(self, path: Path) -> None: + path = Path(path) + path.parent.mkdir(parents=True, exist_ok=True) + items = sorted(self.items()) + with uproot.recreate(path) as f: + for key, h in items: + f[key.path] = h.to_root(key.object_name) + index = [{**asdict(key), "sum": h.sum(), "bins": len(h.values)} for key, h in items] + path.with_suffix(".json").write_text(json.dumps(index, indent=1)) + + @classmethod + def load(cls, path: Path) -> "HistogramSet": + hset = cls() + with uproot.open(path) as f: + for name, classname in f.classnames(recursive=True, cycle=False).items(): + if classname.startswith("TH1"): + hset[HistKey.parse(name)] = Histogram.from_root(f[name]) + return hset + + +def unchanged_variations(hset: HistogramSet) -> list[HistKey]: + """The variation histograms that are bitwise equal to their nominal (a declared variation that has no effect).""" + result = [] + for key in hset.select(): + if key.variation == NOMINAL_VARIATION: + continue + nominal = hset.get(HistKey(key.channel, key.category, key.process, key.region, NOMINAL_VARIATION, key.variable)) + if nominal is not None and np.array_equal(hset[key].values, nominal.values) and np.array_equal(hset[key].variances, nominal.variances): + result.append(key) + return result diff --git a/src/shapesmith/histograms.py b/src/shapesmith/histograms.py deleted file mode 100644 index 29f5d02..0000000 --- a/src/shapesmith/histograms.py +++ /dev/null @@ -1,273 +0,0 @@ -"""Stage 2: skims -> histograms per process, region, category, variable and variation (Spec §8). - -Weight rules: - * MC: norm_weight * lumi_pb * baseline weights * process weights * region weights - * embedding: norm_weight (=1) * process weights * region weights - * data: region weights only (e.g. the fake factor in the anti-isolated region) -A weight variation naming a weight the process does not carry is skipped for that process. -""" -from __future__ import annotations - -import json -import logging -from dataclasses import asdict, dataclass -from pathlib import Path -from typing import Iterator - -import numpy as np -import uproot - -from shapesmith.config import RunConfig -from shapesmith.expressions import apply_region, columns_in, evaluate, mask, weight -from shapesmith.histogram import Histogram -from shapesmith.io.skims import read_skims -from shapesmith.parallel import run_jobs -from shapesmith.model import Analysis, Process, Variable, WeightVariation -from shapesmith.skim import SKIM_COLUMNS - -logger = logging.getLogger(__name__) - -NOMINAL_REGION = "nominal" -NOMINAL_VARIATION = "Nominal" -INCLUSIVE = "inclusive" - - -@dataclass(frozen=True, order=True) -class HistKey: - channel: str - category: str - process: str - region: str - variation: str - variable: str - - @property - def directory(self) -> str: - return f"{self.channel}_{self.category}" - - @property - def object_name(self) -> str: - return f"{self.process}#{self.region}#{self.variation}#{self.variable}" - - @property - def path(self) -> str: - return f"{self.directory}/{self.object_name}" - - @classmethod - def parse(cls, path: str) -> "HistKey": - directory, name = path.split("/", 1) - channel, category = directory.split("_", 1) - process, region, variation, variable = name.split("#") - return cls(channel, category, process, region, variation, variable) - - -class HistogramSet: - """HistKey -> Histogram with ROOT persistence (uproot) and a JSON index.""" - - def __init__(self): - self._hists: dict[HistKey, Histogram] = {} - - def add(self, key: HistKey, h: Histogram) -> None: - self._hists[key] = h - - def get(self, key: HistKey) -> Histogram: - return self._hists[key] - - def has(self, key: HistKey) -> bool: - return key in self._hists - - def keys(self, **filters) -> list[HistKey]: - return sorted(k for k in self._hists if all(getattr(k, name) == value for name, value in filters.items())) - - def items(self) -> Iterator[tuple[HistKey, Histogram]]: - return iter(sorted(self._hists.items(), key=lambda kv: kv[0])) - - def update(self, other: "HistogramSet") -> None: - self._hists.update(other._hists) - - def __len__(self) -> int: - return len(self._hists) - - def save(self, path: Path) -> None: - path = Path(path) - path.parent.mkdir(parents=True, exist_ok=True) - with uproot.recreate(path) as f: - for key, h in self.items(): - f[key.path] = h.to_root(key.object_name) - index = [{**asdict(key), "sum": h.sum(), "bins": len(h.values)} for key, h in self.items()] - path.with_suffix(".json").write_text(json.dumps(index, indent=1)) - - @classmethod - def load(cls, path: Path) -> "HistogramSet": - hset = cls() - with uproot.open(path) as f: - for name, classname in f.classnames(recursive=True, cycle=False).items(): - if classname.startswith("TH1"): - hset.add(HistKey.parse(name), Histogram.from_root(f[name])) - return hset - - -@dataclass(frozen=True) -class Booking: - process: Process - regions: tuple[str, ...] - variations: tuple[WeightVariation, ...] - - -@dataclass(frozen=True) -class Target: - category: str - cut: str | None - variable: Variable - - -def resolve_regions(analysis: Analysis, channel_name: str, regions: list[str] | None) -> tuple[str, ...] | None: - """Resolve an explicit region request for one channel. - - ``None`` retains the historical process-dependent booking. ``all`` is - expanded per channel because channels need not define the same regions. - """ - if regions is None: - return None - channel = analysis.channel(channel_name) - names = (NOMINAL_REGION, *(region.name for region in channel.regions)) if "all" in regions else tuple(regions) - resolved = tuple(dict.fromkeys(names)) - for name in resolved: - channel.region(name) # validates with a channel-specific error - return resolved - - -def bookings(analysis: Analysis, channel_name: str, systematics: bool, regions: list[str] | None = None) -> list[Booking]: - requested_regions = resolve_regions(analysis, channel_name, regions) - estimator_regions = tuple(analysis.estimator.regions.values()) if analysis.estimator else () - result = [] - for process in analysis.processes: - if not analysis.samples_for(process.group, channel_name): - continue - process_regions = requested_regions - if process_regions is None: - process_regions = (NOMINAL_REGION,) if process.kind == "signal" else tuple(dict.fromkeys((NOMINAL_REGION, *estimator_regions))) - variations = analysis.weight_variations if systematics and process.kind not in ("data", "embedding") else () - result.append(Booking(process, process_regions, tuple(variations))) - return result - - -def targets(analysis: Analysis, control: bool, variables: list[str] | None) -> list[Target]: - if control: - names = variables or list(analysis.control_variables) - return [Target(INCLUSIVE, None, analysis.control_variables[name]) for name in names] # KeyError for unknown variables - return [Target(c.name, c.cut, c.variable) for c in analysis.categories] - - -def _needed_columns(analysis: Analysis, channel_name: str, booking: Booking, targets_: list[Target], kinds: set[str]) -> set[str]: - """Columns to read for this process: cuts always, weights only for the sample kinds that use them.""" - channel = analysis.channel(channel_name) - process_selection = booking.process.selection_for(channel_name) - columns = set(SKIM_COLUMNS) - for expr in list(channel.baseline.cuts.values()) + list(process_selection.cuts.values()): - columns |= columns_in(expr) - if kinds == {"mc"}: - for expr in channel.baseline.weights.values(): - columns |= columns_in(expr) - for variation in booking.variations: - for expr in variation.replace_weights.values(): - columns |= columns_in(expr) - if kinds <= {"mc", "embedding"}: - for expr in process_selection.weights.values(): - columns |= columns_in(expr) - for region_name in booking.regions: - region = channel.region(region_name) - region_weights = [expr for name, expr in region.add_weights.items() if kinds == {"mc"} or name not in channel.baseline.weights] - for expr in list(region.replace_cuts.values()) + region_weights: - columns |= columns_in(expr) - for target in targets_: - columns |= columns_in(target.variable.expr) | (columns_in(target.cut) if target.cut else set()) - return columns - - -def _varied(weights: dict[str, str], variation: WeightVariation | None) -> dict[str, str] | None: - """Weights with the variation applied, or None if the variation names a weight not present.""" - if variation is None: - return weights - if any(name not in weights for name in variation.replace_weights): - return None - return {**weights, **variation.replace_weights} - - -def fill_booking(config: RunConfig, analysis: Analysis, channel_name: str, booking: Booking, targets_: list[Target]) -> dict[HistKey, Histogram]: - channel = analysis.channel(channel_name) - process = booking.process - samples = analysis.samples_for(process.group, channel_name) - kinds = {s.kind for s in samples} - frame = read_skims(config.skim_dir, channel_name, [s.nick for s in samples], _needed_columns(analysis, channel_name, booking, targets_, kinds)) - lumi = analysis.lumi_pb if kinds == {"mc"} else 1.0 - process_selection = process.selection_for(channel_name) - process_mask = mask(frame, process_selection.cuts) - result: dict[HistKey, Histogram] = {} - for region_name in booking.regions: - region = channel.region(region_name) - cuts = apply_region(channel.baseline, region).cuts - selected = frame[process_mask & mask(frame, cuts)] - weights: dict[str, str] = {} - if kinds == {"mc"}: - weights.update(channel.baseline.weights) - if kinds <= {"mc", "embedding"}: - weights.update(process_selection.weights) - weights.update({name: expr for name, expr in region.add_weights.items() if kinds == {"mc"} or name not in channel.baseline.weights}) - for variation in (None, *booking.variations): - varied = _varied(weights, variation) - if varied is None: - logger.debug(f"{process.name}: variation {variation.name} not applicable, skipped") - continue - w = selected["norm_weight"].to_numpy() * lumi * weight(selected, varied) - for target in targets_: - in_category = mask(selected, {"category": target.cut}) if target.cut else np.ones(len(selected), dtype=bool) - values = evaluate(selected, target.variable.expr).astype(np.float64) - finite = np.isfinite(values) & np.isfinite(w) - if (in_category & ~finite).any(): - logger.warning(f"{process.name}/{region_name}/{target.variable.name}: {(in_category & ~finite).sum()} events with NaN/inf skipped") - keep = in_category & finite - key = HistKey(channel_name, target.category, process.name, region_name, variation.name if variation else NOMINAL_VARIATION, target.variable.name) - result[key] = Histogram.fill(target.variable.edges, values[keep], w[keep]) - return result - - -def _fill_job(args) -> dict[HistKey, Histogram]: - return fill_booking(*args) - - -def run_hist(config: RunConfig, analysis: Analysis, channels: list[str] | None, control: bool, variables: list[str] | None, systematics: bool, processes: list[str] | None, output: Path, force: bool = False, regions: list[str] | None = None) -> HistogramSet: - """Fill every booked histogram of the requested channels and save them to `output` (+ .json index).""" - output = Path(output) - selected_channels = list(channels or config.channels) - targets_ = targets(analysis, control, variables) - jobs = [] - refill_scope: set[tuple[str, str, str, str, str]] = set() - for channel_name in selected_channels: - for booking in bookings(analysis, channel_name, systematics, regions): - if processes and booking.process.key not in processes: - continue - jobs.append((config, analysis, channel_name, booking, targets_)) - refill_scope.update( - (channel_name, booking.process.name, region, target.category, target.variable.name) - for region in booking.regions - for target in targets_ - ) - hset = HistogramSet() - if output.exists(): - if not force: - logger.info(f"{output} exists, loading (use --force to refill)") - return HistogramSet.load(output) - for key, h in HistogramSet.load(output).items(): # keep what this call does not refill - scope = (key.channel, key.process, key.region, key.category, key.variable) - if scope not in refill_scope: - hset.add(key, h) - logger.info(f"{output}: refilling {len(refill_scope)} histogram scopes, keeping {len(hset)} unrelated histograms") - logger.info(f"filling {len(jobs)} process bookings with {config.workers} workers") - for job, result, error in run_jobs(_fill_job, jobs, config.workers): - if error is not None: - raise RuntimeError(f"{job[2]}/{job[3].process.name}: {error}") from error - for key, h in result.items(): - hset.add(key, h) - hset.save(output) - return hset diff --git a/src/shapesmith/io/__init__.py b/src/shapesmith/io/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/shapesmith/io/discovery.py b/src/shapesmith/io/discovery.py deleted file mode 100644 index 8a956a5..0000000 --- a/src/shapesmith/io/discovery.py +++ /dev/null @@ -1,61 +0,0 @@ -"""Locate CROWN ntuples and their friend trees (Spec §7 step 1).""" -from __future__ import annotations - -import os -from dataclasses import dataclass - -from shapesmith.config import NtupleConfig - - -@dataclass(frozen=True) -class NtupleFile: - path: str # full path or xrootd URL of the main ntuple - friends: tuple[str, ...] # full paths/URLs of the friend files, same order as the config - nick: str - channel: str - basename: str - - -def join_url(server: str, path: str) -> str: - """'root://server' + '/store/...' -> 'root://server//store/...'; local paths pass through.""" - if not server: - return path - return f"{server.rstrip('/')}/{path}" - - -def list_root_files(server: str, directory: str) -> list[str]: - """Sorted basenames of the .root files in `directory` (xrootd when `server` is set).""" - if server: - from XRootD import client # optional dependency, only needed for remote access - from XRootD.client.flags import DirListFlags - - status, listing = client.FileSystem(server).dirlist(directory, DirListFlags.STAT) - if not status.ok or listing is None: - raise FileNotFoundError(f"cannot list {join_url(server, directory)}: {status.message}") - names = [entry.name for entry in listing] - else: - if not os.path.isdir(directory): - raise FileNotFoundError(f"cannot list {directory}") - names = os.listdir(directory) - return sorted(name for name in names if name.endswith(".root")) - - -def discover(ntuples: NtupleConfig, era: str, nick: str, channel: str, kind: str) -> list[NtupleFile]: - """Main files of one sample and channel with their friend files; missing friends are an error.""" - main_dir = f"{ntuples.base.rstrip('/')}/{era}/{nick}/{channel}" - basenames = list_root_files(ntuples.server, main_dir) - friend_dirs = [f"{f.base.rstrip('/')}/{era}/{nick}/{channel}" for f in ntuples.friends if kind in f.applies_to] - friend_listings = [set(list_root_files(ntuples.server, directory)) for directory in friend_dirs] - missing = [f"{directory}/{name}" for directory, names in zip(friend_dirs, friend_listings) for name in basenames if name not in names] - if missing: - raise FileNotFoundError("missing friend files:\n" + "\n".join(missing)) - return [ - NtupleFile( - path=join_url(ntuples.server, f"{main_dir}/{name}"), - friends=tuple(join_url(ntuples.server, f"{directory}/{name}") for directory in friend_dirs), - nick=nick, - channel=channel, - basename=name, - ) - for name in basenames - ] diff --git a/src/shapesmith/io/ntuples.py b/src/shapesmith/io/ntuples.py deleted file mode 100644 index aaff31a..0000000 --- a/src/shapesmith/io/ntuples.py +++ /dev/null @@ -1,80 +0,0 @@ -"""Read columns from a CROWN ntuple and its friend trees with uproot (Spec §7 steps 2-3).""" -from __future__ import annotations - -import json - -import pandas as pd -import uproot - -from shapesmith.io.discovery import NtupleFile - -TREE = "ntuple" - - -class MissingColumnsError(ValueError): - def __init__(self, missing: list[str], path: str): - self.missing = sorted(missing) - self.path = path - super().__init__(f"{path}: missing columns: {', '.join(self.missing)}") - - def __reduce__(self): # picklable with its two arguments, so that worker processes can hand it back - return (MissingColumnsError, (self.missing, self.path)) - - -def available_columns(ntuple: NtupleFile) -> dict[str, str]: - """column name -> file that provides it (the main file wins over friends).""" - result: dict[str, str] = {} - for path in (*ntuple.friends, ntuple.path): # main file last so that it overrides - with uproot.open(path) as handle: - for name in handle[TREE].keys(): - result[name] = path - return result - - -def read_ntuple(ntuple: NtupleFile, columns: set[str], optional: set[str] = frozenset()) -> tuple[pd.DataFrame, dict]: - """The requested columns of one ntuple (+ friends) and the CROWN metadata of the main file, opening every file once. - - Remote opens cost seconds, so columns are listed and read from the same handle. Columns in `optional` may be - absent (they are left out); any other missing column raises MissingColumnsError. - """ - paths = (*ntuple.friends, ntuple.path) # main file last so that it overrides friends - handles = [uproot.open(path) for path in paths] - try: - sources: dict[str, int] = {} - for index, handle in enumerate(handles): - for name in handle[TREE].keys(): - sources[name] = index - missing = set(columns) - set(sources) - if missing - set(optional): - raise MissingColumnsError(sorted(missing - set(optional)), ntuple.path) - by_handle: dict[int, list[str]] = {} - for column in sorted(set(columns) & set(sources)): - by_handle.setdefault(sources[column], []).append(column) - frames = [pd.DataFrame(handles[index][TREE].arrays(names, library="np")) for index, names in by_handle.items()] - main = handles[-1] - metadata = json.loads(str(main["metadata"])) if "metadata" in main else {} - finally: - for handle in handles: - handle.close() - lengths = {len(frame) for frame in frames} - if len(lengths) > 1: - raise ValueError(f"{ntuple.path}: friend trees have different numbers of entries {sorted(lengths)}") - return (pd.concat(frames, axis=1) if frames else pd.DataFrame()), metadata - - -def read_columns(ntuple: NtupleFile, columns: set[str]) -> pd.DataFrame: - """The requested columns of one ntuple (+ friends) as a DataFrame; dtypes as stored.""" - return read_ntuple(ntuple, columns)[0] - - -def read_metadata(path: str) -> dict: - """The CROWN `metadata` JSON block (empty dict when absent).""" - with uproot.open(path) as handle: - if "metadata" not in handle: - return {} - return json.loads(str(handle["metadata"])) - - -def num_entries(path: str) -> int: - with uproot.open(path) as handle: - return handle[TREE].num_entries diff --git a/src/shapesmith/fit.py b/src/shapesmith/limits.py similarity index 72% rename from src/shapesmith/fit.py rename to src/shapesmith/limits.py index 5dd4b4a..3557029 100644 --- a/src/shapesmith/fit.py +++ b/src/shapesmith/limits.py @@ -1,9 +1,8 @@ -"""Run combine inside the CMSSW environment and collect expected limits, significance and best-fit r (Spec §10.3).""" +"""The limit chain: combine on the datacards (expected limits, significance, best-fit r) and its summary.""" from __future__ import annotations import json import logging -import subprocess from pathlib import Path import matplotlib @@ -12,6 +11,7 @@ import matplotlib.pyplot as plt # noqa: E402 import uproot # noqa: E402 +from shapesmith import cmssw # noqa: E402 from shapesmith.config import RunConfig # noqa: E402 logger = logging.getLogger(__name__) @@ -20,29 +20,14 @@ COMMON = "-m {mass} --setParameterRanges r=-40,40 -t -1" -def combine_script(cmssw_dir: str, scram_arch: str, card_dir: Path, mass: str = "125") -> str: - return "\n".join( - [ - "set -e", - f"export SCRAM_ARCH={scram_arch}", - "source /cvmfs/cms.cern.ch/cmsset_default.sh", - f"cd {cmssw_dir}/src", - "eval $(scramv1 runtime -sh)", - f"cd {Path(card_dir).resolve()}", - f"text2workspace.py combined.txt -o workspace.root -m {mass}", - f"combine -M AsymptoticLimits -d workspace.root {COMMON.format(mass=mass)} --expectSignal 0 -n .Limit", - f"combine -M Significance -d workspace.root {COMMON.format(mass=mass)} --expectSignal 1 -n .Significance", - f"combine -M MultiDimFit --algo singles -d workspace.root {COMMON.format(mass=mass)} --expectSignal 1 -n .Fit", - ] - ) - - -def run_combine(config: RunConfig, card_dir: Path) -> None: - if config.combine is None: - raise ValueError("RunConfig.combine (cmssw_dir) is required to run combine") - script = combine_script(config.combine.cmssw_dir, config.combine.scram_arch, card_dir) - logger.info(f"running combine in {card_dir}") - subprocess.run(["bash", "-c", script], check=True) +def limit_commands(mass: str = "125") -> list[str]: + common = COMMON.format(mass=mass) + return [ + f"text2workspace.py combined.txt -o workspace.root -m {mass}", + f"combine -M AsymptoticLimits -d workspace.root {common} --expectSignal 0 -n .Limit", + f"combine -M Significance -d workspace.root {common} --expectSignal 1 -n .Significance", + f"combine -M MultiDimFit --algo singles -d workspace.root {common} --expectSignal 1 -n .Fit", + ] def _read(path: Path) -> list[tuple[float, float, float | None]]: @@ -107,13 +92,13 @@ def write_summary(results: dict[str, dict], output_dir: Path) -> tuple[Path, Pat return json_path, md_path, pdf_path -def run_fit(config: RunConfig, datacard_dir: Path, final_states: list[str], skip_combine: bool = False) -> dict: +def run_limits(config: RunConfig, datacard_dir: Path, final_states: list[str], skip_combine: bool = False) -> dict: datacard_dir = Path(datacard_dir) results = {} for name in final_states: card_dir = datacard_dir / name if not skip_combine: - run_combine(config, card_dir) + cmssw.run(limit_commands(), config.combine, card_dir) results[name] = collect(card_dir) write_summary(results, datacard_dir) return results diff --git a/src/shapesmith/ml_export.py b/src/shapesmith/ml_export.py index 2a2953f..bbf43ea 100644 --- a/src/shapesmith/ml_export.py +++ b/src/shapesmith/ml_export.py @@ -1,4 +1,4 @@ -"""Training folds from the skims, in the Feather layout of the previous smhtt_ul export (Spec §12). +"""Training folds from the skims, in the Feather layout of the previous smhtt_ul export. Columns are 5-level tuples: ("Event","id"), ("Event","event"), ("Labels",