Source code for pyhf.optimize.opt_scipy

from scipy.optimize import minimize
import logging

log = logging.getLogger(__name__)


[docs]class scipy_optimizer(object):
[docs] def __init__(self, **kwargs): self.maxiter = kwargs.get('maxiter', 100000)
[docs] def unconstrained_bestfit(self, objective, data, pdf, init_pars, par_bounds): # The Global Fit result = minimize( objective, init_pars, method='SLSQP', args=(data, pdf), bounds=par_bounds, options=dict(maxiter=self.maxiter), ) try: assert result.success except AssertionError: log.error(result) raise return result.x
[docs] def constrained_bestfit( self, objective, constrained_mu, data, pdf, init_pars, par_bounds ): # The Fit Conditions on a specific POI value cons = {'type': 'eq', 'fun': lambda v: v[pdf.config.poi_index] - constrained_mu} result = minimize( objective, init_pars, constraints=cons, method='SLSQP', args=(data, pdf), bounds=par_bounds, options=dict(maxiter=self.maxiter), ) try: assert result.success except AssertionError: log.error(result) raise return result.x