Symbolic Fitting; fitting as it should be.
Project description
Documentation
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, Model
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 = 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
y = model(x=xdata, **fit_result.params)
plt.plot(xdata, y)
plt.show()
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()
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
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
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
symfit-0.4.0.tar.gz
(1.1 MB
view hashes)
Built Distribution
symfit-0.4.0-py2.py3-none-any.whl
(50.9 kB
view hashes)
Close
Hashes for symfit-0.4.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9ff91757bd3fce1947db31a19949ce7fae6afa986dfb31506e213ff8c346658 |
|
MD5 | b660f0d01c32c89d3d571f7bc9f5b2a6 |
|
BLAKE2b-256 | d83264a5f15c8fb125003ba19a1d1bfa98e24dfb71b5a87f6c7639ddb5f2abaf |