Skip to content

Releases: scikit-hep/cabinetry

v0.2.0

17 Feb 22:13
a65abd1
Compare
Choose a tag to compare

This release adopts the pyhf 0.6 and iminuit v2 APIs, and introduces several breaking changes. It also adds discovery significance calculation and yield tables with yields per channel summed.

The most notable breaking change has occurred in the cabinetry.fit API. workspace function arguments have been replaced by model, data arguments (pdf and data including auxiliary data). model_utils.model_and_data(spec) can be used to obtain model and data:

old:

ws_spec = cabinetry.workspace.load(workspace_path)
fit_results = cabinetry.fit.fit(ws_spec, asimov=False)

new:

ws_spec = cabinetry.workspace.load(workspace_path)
model, data = cabinetry.model_utils.model_and_data(ws_spec, asimov=False)
fit_results = cabinetry.fit.fit(model, data)

This affects fit.fit, fit.ranking, fit.scan, fit.limit as well as the new fit.significance. The asimov keyword argument was removed from these functions, it can instead be used with model_utils.model_and_data.

Breaking changes:

  • Support for Python 3.6 has been dropped, following pyhf 0.6 dropping support for Python 3.6. The last cabinetry version supporting Python 3.6 is v0.1.8.
  • The cabinetry.fit API has changed: fit.fit, fit.ranking, fit.scan and fit.limit require model and data arguments (can be obtained via model_utils.model_and_data) instead of workspace, and these functions no longer support the asimov keyword argument.
  • Instead of using a workspace function argument,visualize.data_MC now requires model and data (similar to the changes in the cabinetry.fit API). The config argument is now an optional keyword argument.
  • The fit_results argument in fit.ranking is now a keyword argument (if not set, the nominal fit will be performed automatically).
  • model_utils.calculate_stdev now returns a tuple: uncertainties for all bins per channel, and uncertainties for total yield in channel.

Full list of changes:

  • chore: updating version to 0.2.0 (#200)
  • feat: discovery significance (#176)
  • fix: pyhf 0.6 compatibility (#156)
  • fix: restrict typeguard version for NamedTuple compatibility (#199)
  • feat: update default bracket in limit calculation for stability (#197)
  • build: drop support for Python 3.6 (#194)
  • test: check yield uncertainties in integration test (#196)
  • feat: mypy check for tabulate package (#195)
  • ci: do not cancel jobs early if another job fails (#193)
  • feat: yields per region (#189)
  • fix: numpy array smoothing and typing (#190)
  • feat: make reference fit results in ranking optional (#186)
  • ci: install ghostscript for pdf conversion (#187)
  • fix: likelihood scan visualization layout for small NLL variations (#185)
  • feat: data/MC plots without configuration file (#184)
  • feat: updated fit API with model and data arguments instead of workspace (#183)
  • docs: change logo location for PyPI rendering (#181)

v0.1.8

20 Jan 14:24
1f5ba53
Compare
Choose a tag to compare

This release fixes yield tables for multiple multi-bin regions. It adds optional systematic template histogram smoothing (see #175 for more details) and improves the efficiency of the limit-finding algorithm.

Full list of changes:

  • chore: updating version to 0.1.8 (#180)
  • feat: horizontal log scale for data/model plots (#179)
  • feat: template smoothing (#175)
  • refactor: string formatting (#177)
  • refactor: remove superfluous lists in limit calculation (#174)
  • feat: take upper bracket default for limit from measurement (#173)
  • feat: root finding for faster limit convergence (#172)
  • docs: logo for cabinetry (#171)
  • feat: more flexibility in parameter exclusion from pull plots (#170)
  • fix: yield tables for multiple multi-bin regions (#169)
  • chore: Simplify install_requires and use compatible release syntax (#168)
  • ci: Uninstall dependencies before installed HEAD versions (#166)

v0.1.7

14 Dec 18:40
0043562
Compare
Choose a tag to compare

This release makes use of the new pyhf version 0.5.4 to avoid uproot namespace collisions. It also completes the package name migrations awkward1 -> awkward>=1.0.0 and uproot4 -> uproot>=4.0.0.

Full list of changes:

  • chore: updating version to 0.1.7 (#165)
  • fix: finalize uproot/awkward name migration and update to pyhf 0.5.4 (#164)

v0.1.6

11 Dec 18:01
65845f2
Compare
Choose a tag to compare

This release restricts iminuit to major version 1. The update to v2 will happen in parallel with pyhf. The release also adds functionality to calculate upper parameter limits, goodness-of-fit, yield tables, and expands the command line interface.

Breaking changes:

  • The custom fit keyword argument (to switch between pyhf.infer and iminuit) is now called custom_fit.
  • The order of arguments for visualize.data_MC changed: the workspace specification is now the second required argument, while the figure output folder is the third function argument and optional. This makes the behavior consistent with similar functions. Example for the new signature: cabinetry.visualize.data_MC(cabinetry_config, ws)
  • fit.ScanResults.scan_values is now called fit.ScanResults.parameter_values

Full list of changes:

  • chore: updating version to 0.1.6 (#162)
  • feat: yield tables (#159)
  • fix: uproot package name migration to uproot3 (#157)
  • feat: command line interface for parameter limits (#155)
  • feat: expansion of fit command line interface (#154)
  • style: move MINOS function to better position (#153)
  • feat: better handling of unknown parameters when running MINOS (#152)
  • feat: goodness of fit test with saturated model (#131)
  • chore: Add pyupgrade to pre-commit hooks (#151)
  • chore: update pre-commit hook versions (#149)
  • fix: iminuit.Minuit type hints (#148)
  • feat: support pyhf.infer fits for ranking and parameter scans (#147)
  • refactor: common entry point for maximum likelihood fits (#146)
  • feat: extend parameter control when using pyhf.infer (#145)
  • feat: default output folder for visualizations (#144)
  • feat: upper parameter limits (#134)
  • feat: support stdin/stdout piping in command line interface (#143)
  • docs: contribution guidelines (#139)

v0.1.5

21 Oct 13:18
a2ef2c3
Compare
Choose a tag to compare

This release makes cabinetry compatible with pyhf version 0.5.3. It also adds MINOS uncertainty calculation and treats initial parameter settings for normalization factors as the nominal setting for Asimov dataset generation.

Full list of changes:

  • chore: updating version to 0.1.5 (#137)
  • fix: pyhf 0.5.3 compatibility (#135)
  • feat: treat initial normalization factor settings as nominal values (#136)
  • style: docstring line length (#133)
  • feat: adding functionality to run MINOS (#132)

v0.1.4

29 Sep 13:47
bb21d2d
Compare
Choose a tag to compare

This release fixes the data/MC visualization of workspaces with three and more channels. It adds small plotting improvements and a command line interface for nuisance parameter ranking and likelihood scans.

Full list of changes:

  • chore: updating version to 0.1.4 (#130)
  • fix: visualization of three and more channels (#129)
  • style: consistent maximum line length (#128)
  • feat: skip ranking for fixed parameters (#126)
  • refactor: sample order for data/MC plot legend (#125)
  • ci: adding sphinx docs building (#124)
  • feat: log scale for data/model plots (#119)
  • ci: Add nightly tests using HEAD of dependencies (#123)
  • feat: command line interface for ranking and scan (#122)

v0.1.3

18 Sep 17:37
7695f7e
Compare
Choose a tag to compare

This release makes awkward1 a core dependency, which was missing from version 0.1.2. It adds nuisance parameter ranking, likelihood scans and their visualization to cabinetry, as well as support for multiple input files per sample.

Breaking changes:

  • SamplePath is renamed to SamplePaths (#117)
  • configuration.read is renamed to configuration.load (#118)
  • due to a change in capitalization of the nominal systematic name, histograms built with earlier versions need to be renamed (#108)

Full list of changes:

  • chore: updating version to 0.1.3 (#121)
  • feat: likelihood scan (#120)
  • feat: nuisance parameter ranking (#116)
  • refactor: configuration loading (#118)
  • feat: support reading multiple input files per sample (#117)
  • fix: close matplotlib figures after saving (#115)
  • fix: make awkward1 core dependency (#114)
  • test: integration test isolation (#109)
  • refactor: capitalization of nominal systematic (#108)
  • refactor: model building and model reuse (#107)

v0.1.2

08 Sep 12:35
Compare
Choose a tag to compare

This release adds pre- and post-fit plots with total model uncertainty bands. It introduces a more flexible method for input file path specification, and systematics templates can be visualized separately for debugging purposes.

Breaking changes:

  • new mandatory config option: InputPath (see #98)
  • visualize.data_MC moved to visualize.data_MC_from_histograms, and visualize.data_MC now draws full model uncertainty bands

Full list of changes:

  • chore: updating version to 0.1.2 (#106)
  • feat: pre- and post-fit plots with full model uncertainty bands (#96)
  • feat: visualization of ntuple creation utility can be disabled (#105)
  • feat: skip fixed parameters in pull plot and correlation matrix (#104)
  • chore: moving metadata to setup.cfg (#103)
  • feat: visualization of systematics templates (#102)
  • style: update to black 20.8 formatting (#99)
  • feat: more flexible input file path handling (#98)
  • feat: ranking plot (#97)
  • feat: Asimov fits (#95)
  • feat: support reading vector branches (#94)
  • feat: removing staterrors from pull plot (#93)
  • feat: set default interpolation method (#92)

v0.1.1

10 Aug 12:32
7da1745
Compare
Choose a tag to compare

This is a patch release to fix observations for workspaces built with multiple regions (see #90).

Full list of changes:

  • chore: updating version to 0.1.1 (#91)
  • fix: observed data in multiple regions (#90)
  • feat: data/MC ratio plot panel (#89)

v0.1.0

09 Aug 15:30
ab630d9
Compare
Choose a tag to compare

This release adds a command-line interface to cabinetry. It also enables users to provide custom functions that can be used for template histogram building. See the documentation for more information on the new functionality.

Breaking changes:

  • new mandatory HistogramFolder option in the config file (see #87)

Full list of changes:

  • chore: updating version to 0.1.0 (#88)
  • feat: adding histogram folder to config (#87)
  • refactor: workspace builder class (#84)
  • docs: NSF badge in readme (#85)
  • feat: command-line interface (#81)
  • feat: always calculate Hessian (#83)
  • feat: user-defined overrides for template histogram handling (#78)
  • feat: support fixed parameters (#82)
  • test: fix issues raised by typeguard (#80)