Skip to main content

Symbolic Fitting; fitting as it should be.

Project description

Documentation

http://symfit.readthedocs.org

Project Goals

The goal of this project is simple: to make fitting in Python sexy and pythonic. What does pythonic fitting look like? Well, there’s a simple test. If I can give you pieces of example code and don’t have to use any additional words to explain what it does, it’s pythonic.

from symfit import parameters, variables, Fit

xdata = [1.0, 2.0, 3.0, 4.0, 5.0]
ydata = [2.3, 3.3, 4.1, 5.5, 6.7]
yerr = [0.1, 0.1, 0.1, 0.1, 0.1]

a, b = parameters('a, b')
x, y = variables('x, y')
model = {y: a * x + b}

fit = Fit(model, x=xdata, y=ydata, sigma_y=yerr)
fit_result = fit.execute()

Cool right? So now that we have done a fit, how do can we use the results?

import matplotlib.pyplot as plt

y = model(x=xdata, **fit_result.params)
plt.plot(xdata, y)
plt.show()
Linear Fit

Need I say more? How about I let another code example do the talking?

from symfit import parameters, Maximize, Equality, GreaterThan

x, y = parameters('x, y')
model = 2 * x * y + 2 * x - x**2 - 2 * y**2
constraints = [
    Equality(x**3, y),
    GreaterThan(y, 1),
]

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

“But what if I need to fit to an ODE?”

from symfit import variables, Parameter, ODEModel, Fit, D

tdata = np.array([10, 26, 44, 70, 120])
adata = 10e-4 * np.array([44, 34, 27, 20, 14])

a, b, t = variables('a, b, t')
k = Parameter(0.1)

model_dict = {
    D(a, t): - k * a**2,
    D(b, t): k * a**2,
}

ode_model = ODEModel(model_dict, initial={t: 0.0, a: 54 * 10e-4, b: 0.0})

fit = Fit(ode_model, t=tdata, a=adata, b=None)
fit_result = fit.execute()

For more fitting delight, check the docs at http://symfit.readthedocs.org.

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.3.dev155.tar.gz (867.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symfit-0.3.3.dev155-py2.py3-none-any.whl (37.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file symfit-0.3.3.dev155.tar.gz.

File metadata

  • Download URL: symfit-0.3.3.dev155.tar.gz
  • Upload date:
  • Size: 867.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for symfit-0.3.3.dev155.tar.gz
Algorithm Hash digest
SHA256 ee7de03170a3a5987d3d20aa035166492462f98b99123c0496eeb354da877148
MD5 cbf9928517d3b64a33f87b2cf7c285ab
BLAKE2b-256 902841260c3cbbc63e7bbcc9ba13ad9e8b8cf9951db5723feeb376aa186e0cf9

See more details on using hashes here.

File details

Details for the file symfit-0.3.3.dev155-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for symfit-0.3.3.dev155-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 672f1e8b8f078dec2db5a9db2db7d536c3c8593dc182e624486b30d8609552fb
MD5 dc2da90c2f53ebc38a963f2d9ba4cf21
BLAKE2b-256 efab8d1f93ce9af1211307b1582624743388368ebc7856f4c0a7300c0d6014f3

See more details on using hashes here.

Supported by

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