Complete pipeline for easy data fitting with Python.
Project description
Built from makenew/pythonpackage.
Description
Complete pipeline for easy data fitting with Python 3.
Check out the example fits on Fitalyzer. See the Fitalyzer README for details on how to use Fitalyzer for visualizing your fits.
Installation
This package is registered on the Python Package Index (PyPI) as scipy_data_fitting.
Add this line to your application’s requirements.txt
scipy_data_fitting
and install it with
$ pip install r requirements.txt
If you are writing a Python package which will depend on this, add this to your requirements in setup.py.
Alternatively, install it directly using pip with
$ pip install scipy_data_fitting
Documentation
Documentation is generated from source with pdoc. The latest version is hosted at pythonhosted.org/scipydata_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.
For a linear fit, it may be more desirable to use a more efficient algorithm.
For example, to use numpy.polyfit, 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 for further details on how to control the fit and also how to use lmfit.
Development and Testing
Source Code
The scipydata_fitting source is hosted on GitHub. Clone the project with
$ git clone https://github.com/razorx/scipydata_fitting.git
Requirements
You will need Python 3 with pip.
Install the development dependencies with
$ pip install r requirements.devel.txt
Tests
Lint code with
$ python setup.py lint
Run tests with
$ python setup.py test
or
$ make test
Documentation
Generate documentation with pdoc by running
$ make docs
Examples
Run an example with
$ python examples/example_fit.py
or run all the examples with
$ make examples
Contributing
Please submit and comment on bug reports and feature requests.
To submit a patch:
Fork it (https://github.com/razorx/scipydata_fitting/fork).
Create your feature branch (git checkout b mynewfeature).
Make changes. Write and run tests.
Commit your changes (git commit am 'Add some feature').
Push to the branch (git push origin mynewfeature).
Create a new Pull Request.
License
This Python package 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_fitting1.0.2py3noneany.whl
Algorithm  Hash digest  

SHA256  df874e9b636c32bca712fc61ddc3fccc042965ebb21ea5765ace48b13ca7de4f 

MD5  8bf7d97859f7a7ab085cd3d448ad4567 

BLAKE2b256  64908c56dd374722a4ad010f484ea883ce9a82b18258ae8dca1da8860835ea2c 