Skip to content

scikit-hep/cabinetry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 28, 2025
19ce6a1 · Feb 28, 2025
Nov 7, 2024
Oct 18, 2023
Feb 27, 2025
Feb 28, 2025
Feb 28, 2025
Nov 7, 2024
Aug 12, 2022
Feb 2, 2025
May 30, 2024
Feb 28, 2025
Sep 18, 2021
May 7, 2020
Feb 28, 2025
Jun 29, 2020
Oct 8, 2021
Aug 28, 2022
Nov 7, 2024

Repository files navigation

cabinetry logo

CI status Documentation Status Codecov PyPI version Conda version Python version Code style: black

DOI Scikit-HEP

cabinetry is a Python library for building and steering binned template fits. It is written with applications in High Energy Physics in mind. cabinetry interfaces many other powerful libraries to make it easy for an analyzer to run their statistical inference pipeline.

Statistical models in HistFactory format can be built by cabinetry from instructions in a declarative configuration. cabinetry makes heavy use of pyhf for statistical inference, and provides additional utilities to help study and disseminate fit results. This includes commonly used visualizations. Due to its modular approach, analyzers are free to use all of cabinetry's functionality or only some pieces. cabinetry can be used for inference and visualization with any pyhf-compatible model, whether it was built with cabinetry or not.

Installation

cabinetry can be installed with pip:

python -m pip install cabinetry

This will only install the minimum requirements for the core part of cabinetry. The following will install additional optional dependencies needed for ROOT file reading:

python -m pip install cabinetry[contrib]

Hello world

To run the following example, first generate the input files via the script utils/create_ntuples.py.

import cabinetry

config = cabinetry.configuration.load("config_example.yml")

# create template histograms
cabinetry.templates.build(config)

# perform histogram post-processing
cabinetry.templates.postprocess(config)

# build a workspace
ws = cabinetry.workspace.build(config)

# run a fit
model, data = cabinetry.model_utils.model_and_data(ws)
fit_results = cabinetry.fit.fit(model, data)

# visualize the post-fit model prediction and data
prediction_postfit = cabinetry.model_utils.prediction(model, fit_results=fit_results)
cabinetry.visualize.data_mc(prediction_postfit, data, config=config)

The above is an abbreviated version of an example included in example.py, which shows how to use cabinetry. It requires additional dependencies obtained with pip install cabinetry[contrib].

Documentation

Find more information in the documentation and tutorial material in the cabinetry-tutorials repository. cabinetry is also described in a paper submitted to vCHEP 2021: 10.1051/epjconf/202125103067.

Acknowledgements

NSF-1836650 PHY-2323298

This work was supported by the U.S. National Science Foundation (NSF) cooperative agreements OAC-1836650 and PHY-2323298 (IRIS-HEP).