Skip to content

Commit

Permalink
docs: Add v0.7.2 failing example to v0.7.3 release notes (#2294)
Browse files Browse the repository at this point in the history
* As the bug that was fixed in PR #2278 was subtle add an example to
the pyhf v0.7.3 release notes that people can use to see if they
were affected by it.
* Amends PR #2290
  • Loading branch information
matthewfeickert committed Aug 17, 2023
1 parent 6dace15 commit dc76ad1
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions docs/release-notes/v0.7.3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,55 @@ Fixes
are correctly handled.
(PRs :pr:`2277`, :pr:`2278`)

The fixed bug was subtle and only occurred for specific configurations of
settings and arguments where ``do_grad=False`` was used (either explicitly
by provided kwarg or implicitly through defaults).
To determine if you might have been affected by it, check your code for
setups like the following.

.. code:: python
# Bug is backend independent. JAX is selected as an example where
# do_grad=False might be selected in response to the backend's value of
# pyhf.tensorlib.default_do_grad being True.
pyhf.set_backend("jax", pyhf.optimize.minuit_optimizer(strategy=0))
...
fit_result, opt_result = pyhf.infer.mle.fit(
data, model, return_result_obj=True, do_grad=False
)
assert opt_result.minuit.strategy.strategy == 0 # fails for pyhf v0.7.2
Full example that fails in ``pyhf`` ``v0.7.2``:

.. code:: python
import pyhf
pyhf.set_backend("jax", pyhf.optimize.minuit_optimizer(strategy=0))
model = pyhf.simplemodels.uncorrelated_background(
signal=[12.0, 11.0], bkg=[50.0, 52.0], bkg_uncertainty=[3.0, 7.0]
)
data = [51, 48] + model.config.auxdata
# passing with strategy kwarg explicitly given
fit_result, opt_result = pyhf.infer.mle.fit(
data, model, return_result_obj=True, do_grad=False, strategy=0
)
minuit_strategy = opt_result.minuit.strategy.strategy
print(f"# Minuit minimization strategy: {minuit_strategy}")
assert minuit_strategy == 0
# strategy kwarg not given
fit_result, opt_result = pyhf.infer.mle.fit(
data, model, return_result_obj=True, do_grad=False
)
minuit_strategy = opt_result.minuit.strategy.strategy
print(f"# Minuit minimization strategy: {minuit_strategy}")
assert minuit_strategy == 0 # fails for pyhf v0.7.2
Contributors
------------

Expand Down

0 comments on commit dc76ad1

Please sign in to comment.