CI status Documentation Status codecov PyPI version Python version Code style: black

DOI Scikit-HEP

cabinetry is a Python package to build and steer (profile likelihood) template fits. It interfaces libraries developed within IRIS-HEP and the wider HEP Python ecosystem to make it easier for an analyzer to run their statistical inference pipeline. The code can be found on GitHub: scikit-hep/cabinetry, while documentation is provided on readthedocs. An example notebook runs through Binder to see cabinetry in action.

Many analyses at the LHC use the ROOT implementation of HistFactory or the newer pythonic implementation pyhf to construct their statistical model. These models are built from template histograms. It is the responsibility of the analyzers to define the event selection and variables of interest to fill the multitude of histograms required, including various systematic variations. This task is well suited for automation, and tools like HistFitter and TRExFitter have been developed to address this need. Those tools were designed to work with the ROOT implementation of HistFactory, and while they don’t have a shared declarative specification, there are many commonalities.

The cabinetry effort is a point of convergence for projects in the Analysis Systems focus area, and brings together many of the tools IRIS-HEP is developing. Analyzers can use the cabinetry library to construct their statistical models and to perform inference with them. Models are built from a declarative specification, which concisely summarizes the information needed to create all required template histograms and assemble them into a statistical model. The execution of the required steps to construct a model is steered by cabinetry and makes use of libraries such as uproot and awkward-array. cabinetry also provides functionality to perform inference and study fit results, including common types of associated visualizations. Inference in cabinetry is performed via pyhf.

cabinetry in the IRIS-HEP ecosystem

The following image shows the final stages of an analysis: processing of columnar data to construct a statistical model, inference, and possible reuse and preservation. It shows examples of connections to other packages developed in IRIS-HEP and the wider ecosystem.

The poster below provides another look at final stages of an analysis. It describes the steps involved in the chain, and how they connect to other IRIS-HEP focus areas.