Skip to main content

Symbolic Fitting; fitting as it should be.

Project description


This project aims to marry the power of scipy.optimize with the readability of SymPy to create a highly readable and easy to use fitting package which works for projects of any scale.

symfit is designed to be very readable:

x = variables('x')
A, sig, x0 = parameters('A, sig, x0')

# Gaussian distribution
gaussian = A * exp(-(x - x0)**2 / (2 * sig**2))

fit = Fit(gaussian, xdata, ydata)
fit_result = fit.execute()

You can also name dependent variables, allowing for sexy assignment of data:

x, y = variables('x, y')
model = {y: a * x**2}

fit = Fit(model, x=xdata, y=ydata, sigma_y=sigma)

Constraint maximization has never been this easy:

x, y = parameters('x, y')
model = 2*x*y + 2*x - x**2 -2*y**2
constraints = [
    Eq(x**3 - y, 0),
    Ge(y - 1, 0),

fit = Maximize(model, constraints=constraints)
fit_result = fit.execute()

And evaluating a model with the best fit parameters is easy since symfit expressions are callable:

y = gaussian(x=xdata, **fit_result.params)
Gaussian Data

For many more features such as bounds on Parameter’s, maximum-likelihood fitting, and much more check the docs at

You can find symfit on github at

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for symfit, version 0.3.2
Filename, size File type Python version Upload date Hashes
Filename, size symfit-0.3.2-py2.py3-none-any.whl (46.4 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size symfit-0.3.2.tar.gz (39.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page