Symbolic Fitting; fitting as it should be.
Project description
Please cite this DOI if symfit benefited your publication. Building this has been a lot of work, and as young researchers your citation means a lot to us. Martin Roelfs & Peter C Kroon, symfit. doi:10.5281/zenodo.1133336
Documentation
Project Goals
The goal of this project is simple: to make fitting in Python 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, Model
import numpy as np
xdata = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
ydata = np.array([2.3, 3.3, 4.1, 5.5, 6.7])
yerr = np.array([0.1, 0.1, 0.1, 0.1, 0.1])
a, b = parameters('a, b')
x, y = variables('x, y')
model = 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 we use the results?
import matplotlib.pyplot as plt
yfit = model(x=xdata, **fit_result.params)[y]
plt.plot(xdata, yfit)
plt.show()
Need I say more? How about I let another code example do the talking?
from symfit import parameters, Fit, 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 = Fit(- model, constraints=constraints)
fit_result = fit.execute()
I know what you are thinking. “What if I need to fit to a system of Ordinary Differential Equations?”
from symfit import variables, Parameter, ODEModel, Fit, D
import numpy as np
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('k', 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file symfit-0.5.6.tar.gz
.
File metadata
- Download URL: symfit-0.5.6.tar.gz
- Upload date:
- Size: 948.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8c97aa96f7e4a385adf8e22d532712e12be4ef845ec18b817e45efdc69eadf4 |
|
MD5 | 01654049f67acd01af7bbbab3c545814 |
|
BLAKE2b-256 | 128eb14a5c9b4fe083f727a39ea369c0db31fd12d75642b34fcd3e877b5a436b |
File details
Details for the file symfit-0.5.6-py2.py3-none-any.whl
.
File metadata
- Download URL: symfit-0.5.6-py2.py3-none-any.whl
- Upload date:
- Size: 63.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fec287e0ee28f5e6fe3fbd362398a7e35b8f3d5a2babd388e9780d00631c00e |
|
MD5 | aa6f69c4bb2e4e9e7d5bf82ef0799fb8 |
|
BLAKE2b-256 | 0621aadaa4cc36d9d5c9606bb99561503d66144c36cd8bb3e2786ad9e9a591ef |