Data fitting system with SciPy.
Project description
Check out the example fits on Fitalyzer. See the Fitalyzer README for details on how to use Fitalyzer for visualizing your fits.
Documentation
Documentation generated from source with pdoc for the latest version is hosted at packages.python.org/scipy-data_fitting/.
To get started quickly, check out the examples.
Then, refer to the source documentation for details on how to use each class.
Basic usage
from scipy_data_fitting import Data, Model, Fit, Plot
# Load data from a CSV file.
data = Data('linear')
data.path = 'linear.csv'
data.error = (0.5, None)
# Create a linear model.
model = Model('linear')
model.add_symbols('t', 'v', 'x_0')
t, v, x_0 = model.get_symbols('t', 'v', 'x_0')
model.expressions['line'] = v * t + x_0
# Create the fit using the data and model.
fit = Fit('linear', data=data, model=model)
fit.expression = 'line'
fit.independent = {'symbol': 't', 'name': 'Time', 'units': 's'}
fit.dependent = {'name': 'Distance', 'units': 'm'}
fit.parameters = [
{'symbol': 'v', 'guess': 1, 'units': 'm/s'},
{'symbol': 'x_0', 'value': 1, 'units': 'm'},
]
# Save the fit result to a json file.
fit.to_json(fit.name + '.json', meta=fit.metadata)
# Save a plot of the fit to an image file.
plot = Plot(fit)
plot.save(fit.name + '.svg')
plot.close()
Controlling the fitting process
The above example will fit the line using the default algorithm `scipy.optimize.curve_fit <http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html>`__.
For a linear fit, it may be more desirable to use a more efficient algorithm.
For example, to use `numpy.polyfit <http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html>`__, one could set a fit_function and allow both parameters to vary,
fit.parameters = [
{'symbol': 'v', 'guess': 1, 'units': 'm/s'},
{'symbol': 'x_0', 'guess': 1, 'units': 'm'},
]
fit.options['fit_function'] = lambda f, x, y, p0, **op: (numpy.polyfit(x, y, 1), )
Controlling the fitting process this way allows, for example, incorporating error values and computing and returning goodness of fit information.
See `scipy_data_fitting.Fit.options <http://packages.python.org/scipy-data_fitting/#scipy_data_fitting.Fit.options>`__ for further details on how to control the fit and also how to use lmfit.
Installation
This package is registered on the Python Package Index (PyPI) at pypi.python.org/pypi/scipy-data_fitting.
Add this line to your application’s requirements.txt:
scipy-data_fitting
And then execute:
$ pip install -r requirements.txt
Or install it yourself as:
$ pip install scipy-data_fitting
Instead of the package name scipy-data_fitting, you can use this repository directly with
git+https://github.com/razor-x/scipy-data_fitting.git@master#egg=scipy-data_fitting
Development
Source Repository
The source is hosted at GitHub. Fork it on GitHub, or clone the project with
$ git clone https://github.com/razor-x/scipy-data_fitting.git
Documentation
Generate documentation with pdoc by running
$ make docs
Tests
Run the tests with
$ make tests
Examples
Run an example with
$ python examples/example_fit.py
or run all the examples with
$ make examples
License
This code is licensed under the MIT license.
Warranty
This software is provided “as is” and without any express or implied warranties, including, without limitation, the implied warranties of merchantibility and fitness for a particular purpose.
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
Hashes for scipy_data_fitting-0.2.2-py3.4.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0d6d73ab9a62a31911f3801e71ee4408c84468eb90ccc217fc554f7cb928f8a |
|
MD5 | 386c8e2f68bdf4000a59f9d985f1034d |
|
BLAKE2b-256 | b8f02b5b6fdcaa3be37c9ef4426b04696b661644c98070d3212b5870dea9399f |