zfit: Scalable Pythonic Model Fitting for High Energy Physics

0.28.0 · active · verified Sun Apr 12

zfit is a modern, scalable Python library for statistical model fitting, primarily designed for High Energy Physics but applicable broadly. It leverages TensorFlow (and optionally JAX) for accelerated computations on CPUs and GPUs, offering a user-friendly API for defining, manipulating, and fitting complex probability density functions. The current version is 0.28.0, with a release cadence of typically a few months between minor versions, often driven by new feature development and backend compatibility updates.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates defining parameters, an observable space, creating a Gaussian Probability Density Function (PDF), generating data from it, setting up an unbinned negative log-likelihood loss, and performing a fit using the Minuit minimizer. It's a fundamental workflow for zfit.

import zfit
from zfit import z

# Define parameters
mu = zfit.Parameter('mu', 0.0, -1.0, 1.0)
sigma = zfit.Parameter('sigma', 1.0, 0.1, 10.0)

# Define the observable space
obs = zfit.Space('x', limits=(-5, 5))

# Create a Gaussian PDF
gauss = zfit.pdf.Gauss(mu=mu, sigma=sigma, obs=obs)

# Generate some data
data = gauss.sample(n=1000)

# Create a likelihood loss function
nll = zfit.loss.UnbinnedNLL(model=gauss, data=data)

# Create a minimizer
minimizer = zfit.minimize.Minuit()

# Perform the fit
result = minimizer.minimize(nll)

# Print the fit results
print(result.params)

view raw JSON →