Skip to content

Commit 81640a2

Browse files
authored
fix: Step sizes for fixed parameters in minuit should be 0.0 (#1054)
* Step sizes are set to 0.0 for fixed parameters in a fit for minuit - The step size acts as the uncertainty for fixed parameters * Add test for step sizes for fixed parameters
1 parent 0f094a4 commit 81640a2

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/pyhf/optimize/opt_minuit.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def _get_minimizer(
4444
for index, val in fixed_vals:
4545
fixed_bools[index] = True
4646
init_pars[index] = val
47+
step_sizes[index] = 0.0
4748

4849
# Minuit requires jac=callable
4950
if do_grad:

tests/test_optim.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,3 +454,15 @@ def test_init_pars_sync_fixed_values_minuit(mocker):
454454
opt._get_minimizer(None, [9, 9, 9], [(0, 10)] * 3, fixed_vals=[(0, 1)])
455455
assert minimizer.Minuit.from_array_func.call_args[1]['start'] == [1, 9, 9]
456456
assert minimizer.Minuit.from_array_func.call_args[1]['fix'] == [True, False, False]
457+
458+
459+
def test_step_sizes_fixed_parameters_minuit(mocker):
460+
opt = pyhf.optimize.minuit_optimizer()
461+
462+
# patch all we need
463+
from pyhf.optimize import opt_minuit
464+
465+
minimizer = mocker.patch.object(opt_minuit, 'iminuit')
466+
opt._get_minimizer(None, [9, 9, 9], [(0, 10)] * 3, fixed_vals=[(0, 1)])
467+
assert minimizer.Minuit.from_array_func.call_args[1]['fix'] == [True, False, False]
468+
assert minimizer.Minuit.from_array_func.call_args[1]['error'] == [0.0, 0.01, 0.01]

0 commit comments

Comments
 (0)