This release adopts the `pyhf` 0.7 API (301, 367) and adds support for Python 3.10 (334). Yield tables are now returned (338) and can be saved in various customizable formats (351). They also include per-sample uncertainties now, which are calculated automatically (356). New keyword arguments are available for configuring the optimizer via the `fit` API (330, 360).
When building workspaces, specification of the POI is now optional (348). New `poi_name` keyword arguments in the `fit` API allow setting the POI for ranking, limit and significance (348, 364, 365). The automatic creation of `staterror` modifiers can be disabled per sample (359). A new visualization utility has been added to visualize the modifier structure of models (333). See below for the full list of additions.
The new features result in a few breaking changes, which are listed next.
**Breaking changes:**
- `fit.limit` keyword arguments `tolerance` and `maxiter` have been renamed to `poi_tolerance` and `maxsteps` (see 360).
- This was required to support the optimizer configuration across the `fit` API with the same names used in `pyhf` (which include `tolerance` and `maxiter`).
- `model_utils.ModelPrediction` uncertainty structure now supports per-sample uncertainties, the shapes have changed accordingly.
- `model_utils.yield_stdev` and `model_utils.prediction` return this new structure (see 356).
- `tabulate.yields` now returns a dictionary with yield tables, it previously returned `None` (see 338).
**Full list of changes:**
- chore: updating version to 0.5.0 (368)
- build: Update lower bound of pyhf to v0.7.0 (367)
- fix: compatibility with matplotlib 3.6 (366)
- feat: customizable POI for significance (365)
- fix: set POI for limit calculations via dedicated pyhf API (364)
- feat: post-fit Asimov data generation (363)
- feat: minimizer configuration for general inference (360)
- build: Update lower bound of pyhf to v0.7.0rc2 (361)
- feat: support disabling staterror per sample in workspace creation (359)
- feat: restore optimizer settings after fits (362)
- feat: rename model prediction variable in examples (358)
- feat: yield uncertainties per sample (356)
- feat: add suggested optional mypy checks (355)
- fix: remove unnecessary dependencies for mypy (353)
- feat: visualization of modifier structure in models (333)
- test: disallow calling functions without type annotations (352)
- feat: minimizer configuration for fit.fit (330)
- feat: save yield tables (351)
- feat: return yield tables (338)
- feat: add version to command line interface (350)
- fix: avoid mixing different versions of awkward in uproot5 tests (349)
- feat: make POI optional in config and allow POI customization for inference (348)
- feat: add Python 3.10 support (334)
- fix: pyhf 0.7 compatibility (301)
- docs: add conda-forge badge (345)
- feat: explicitly set post-fit parameter errors to 0 for fixed parameters (346)
- ci: update versions of GitHub actions and pre-commit (343)
- ci: update GitHub actions (337)
- fix: correct link to flake8 (336)
- fix: bump black to 22.3.0 due to click 8.1 release (335)
- build: remove wheel from build-system requirements (331)