zfit-interface
zfit-interface provides an abstraction layer to fit zfit models using external minimizers, currently supporting `iminuit`. It aims to offer a flexible interface for High Energy Physics (HEP) data fitting. This is an early-stage library, currently at version 0.0.3, with an irregular release cadence.
Warnings
- breaking As a 0.x.x version library, the API of `zfit-interface` is still under active development and may introduce breaking changes without strict adherence to semantic versioning until a 1.0.0 release.
- gotcha This library is an 'interface' for `zfit` models, not a standalone fitting library. It requires `zfit` for model definition and `iminuit` (or other supported minimizers) for the actual minimization process. Users must install these dependencies separately.
- gotcha The documentation for `zfit-interface` is currently minimal. Users should be prepared to consult the source code and examples on the GitHub repository for detailed usage patterns and functionality.
Install
-
pip install zfit-interface
Imports
- Iminuit
from zfit_interface.minimizer import Iminuit
- ZfitMinuitFitter
from zfit_interface.fit import ZfitMinuitFitter
Quickstart
import zfit
from zfit.models import Gauss
from zfit.spaces import Space
from zfit_interface.minimizer import Iminuit
from zfit_interface.fit import ZfitMinuitFitter
# 1. Define a zfit model and data
obs = Space('x', limits=(-10, 10))
mu = zfit.Parameter('mu', 0., -1., 1.)
sigma = zfit.Parameter('sigma', 1., 0.1, 10.)
gauss = Gauss(mu=mu, sigma=sigma, obs=obs)
data = gauss.sample(n=1000)
# 2. Instantiate the iminuit minimizer from zfit-interface
minimizer = Iminuit()
# 3. Create the zfit-interface fitter
fitter = ZfitMinuitFitter(minimizer=minimizer)
# 4. Perform the fit
result = fitter.fit(model=gauss, data=data)
print(f"Fit result: {result.params}")
print(f"Minimizer status: {result.info['minuit_minos_status']}")