Skip to main content

Symbolic Fitting; fitting as it should be.

Project description

Documentation: http://symfit.readthedocs.org/

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)
fit.execute()

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 http://symfit.readthedocs.org/.

You can find symfit on github at https://github.com/tBuLi/symfit.

Project details


Download files

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

Source Distribution

symfit-0.3.2.tar.gz (39.1 kB view hashes)

Uploaded Source

Built Distribution

symfit-0.3.2-py2.py3-none-any.whl (46.4 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page