GUI for the scipy.optimize.curve_fit() function
Project description
A GUI for scipy's curve_fit() function
curvefitgui
is a graphical interface to the non-linear curvefit function scipy.optimise.curve_fit API reference of the scipy.optimize package. Currently, only the Levenberg-Marquard optimizer is supported. The GUI is based on PyQt5.
Installation
You can install the curvefitgui
form PyPi:
pip install curvefitgui
The GUI is supported on Python 3.7 and above.
Note: only curvefitgui
is installed without any required dependencies. Depending on if you are using pip or conda to manage your environment you should manually install the following additional packages:
-
Using
pip
:pip install numpy scipy matplotlib PyQt5
-
Using
conda
:conda install numpy scipy matplotlib qtpy pyqt
Basic usage
A minimum example to use curvefitgui.curve_fit_gui
is:
from curvefitgui import curve_fit_gui
import numpy as np
# define a function for fitting
def f(x, a, b):
'''
Linear fit
function: y = ax + b
a: slope
b: intercept
'''
return a * x + b
# define x and y data as 1 dimensional numpy arrays of equal length
xdata = np.array([1, 2, 3, 4, 5])
ydata = np.array([-3.5, -2.4, -1, 0.5, 1.8])
# execute the function
curve_fit_gui(f, xdata, ydata)
Arguments
curve_fit_gui(f, xdata, ydata, xerr=None, yerr=None, p0=None,
xlabel='x-axis', ylabel='y-axis', absolute_sigma=False,
jac=None, showgui=True, **kwargs)
curve_fit_gui
accepts the following arguments:
f
: callable function that defines the fitfunction. The first argument off
should be the independent variable; other arguments (at least one) are considered to be the fitparameters.xdata
: 1-D numpy array x-coordinates of the dataydata
: 1-D numpy array y-coordinates of the data
curve_fit_gui
accepts the following keyword
arguments:
yerr
: 1-D numpy array, optional (default:None) error/uncertainty in y-values used for weighted fit with a relative weight defined as 1/yerr**2
(for compatibility also the use of the keyword sigma can be used for the same)xerr
: 1-D numpy array, optional (default:None) error in x-values. For plotting errorbars only and ignored during fittingxlabel
: string, optional (default:'x-values') x-axis title in the plotylabel
: string, optional (default:'y-values') y-axis title in the plotp0
: array-like, optional initial values for fit parameters, if not specified 1 is used for each parametershowgui
: boolean, optional (default=True) if True, the gui is shown, otherwise notabsolute_sigma
: boolean, optional see doc-string scipy.optimize.curve_fit()jac
: callable, optional see doc-string scipy.optimize.curve_fit()kwargs
: keyword arguments for compatibility (e.g. you can use sigma to specify the error in y)
Returns
popt
: The values of the fitparameters that minimised the squared residuals if a succesful fit was performed, else None.pcov
: The estimated covariance of popt. (see also: scipy.optimise.curve_fit API reference)
GUI interface
Once the gui
is executed the following window is visible. An explanation of the different controls is described below the figure.
GUI controls
- Data plot: A matplotlib plot that shows the data as solid dots and both y-error and x-error errorbars if provided. A fitted curve as a dashed line is shown if a fit is performed.
- Residual plot A matplotlib plot that shows the residuals as the difference between the measured and fitted values:
residual = ydata - f(xdata, *fitparameters)
- Model settings: Here you can enter inital values for the fitparameters. By ticking the chcekbox
fix
you can set a parameter to fixed:e.g. the parameter is not optmised during the fit. - Weight settings: If error data on the y-values are passed using the keyword argument
yerr
you can use the dropdownbox to set how the error data is treated:- None: the error data is ignored
- Relative: Use the error data for a relative weight. Corresponds to setting scipy's curve_fit() function keyword
absolute_sigma = False
. - Standard deviation: Treat the error data as being standard deviations. Corresponds to setting scipy's curve_fit() function keyword
absolute_sigma = True
.
- Evaluate: Use this button to compute the model function given the current values of the parameters (set in the model settings panel)
- Fit: Performs the fit and updates the parameter values.
- Report: When a fit is performed, the results are shown here. The information on the model is actually the provided docstring of the function
f
that is passed to thecurvefitgui
function. - Quit: Quits the gui and returns the fitparameters
popt
andpcov
. - Toolbar: This is the standard matplotlib toolbar to adjust some plot properties and provides zoom/pan and save options.
- FitTextbox: This textbox is generated if a valid fit is performed. It can be moved by the mouse to any conveniant positions in the plot.
- Range Selector Activates/deactivates the range-selector. The range-selector allows to select a datarange used for fitting. Only datapoints that are within the two vertical dashed lines are considered during fitting. The lines can be moved using the mouse.
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 curvefitgui-1.1.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dfec7e8c70f293c63a108ce6f3386b2dffed0e4da8c02afc8c159aa1c93f9372 |
|
MD5 | ceeef78f0be19b6ac704c58c0123522b |
|
BLAKE2b-256 | 06d29e0499d1806682c894a25f943d98e66a3aaae5d148d7d615b0bd944ce94b |