10.5281/zenodo.11813
https://zenodo.org/records/11813
oai:zenodo.org:11813
Newville, Matthew
Matthew
Newville
The University of Chicago
Stensitzki, Till
Till
Stensitzki
Till Stensitzki, Freie Universitat Berlin
Allen, Daniel B.
Daniel B.
Allen
Johns Hopkins University
Ingargiola, Antonino
Antonino
Ingargiola
University of California, Los Angeles
LMFIT: Non-Linear Least-Square Minimization and Curve-Fitting for Python
Zenodo
2014
python
non-linear least-squares optimization
curve-fitting
2014-09-21
10.5281/zenodo.598352
0.8.0
MIT License
Lmfit provides a high-level interface to non-linear optimization and curve fitting problems for Python. Lmfit builds on Levenberg-Marquardt algorithm of scipy.optimize.leastsq(), but also supports most of the optimization method from scipy.optimize. It has a number of useful enhancements, including:
Using Parameter objects instead of plain floats as variables. A Parameter has a value that can be varied in the fit, fixed, have upper and/or lower bounds. It can even have a value that is constrained by an algebraic expression of other Parameter values.
Ease of changing fitting algorithms. Once a fitting model is set up, one can change the fitting algorithm without changing the objective function.
Improved estimation of confidence intervals. While scipy.optimize.leastsq() will automatically calculate uncertainties and correlations from the covariance matrix, lmfit also has functions to explicitly explore parameter space to determine confidence levels even for the most difficult cases.
Improved curve-fitting with the Model class. This which extends the capabilities of scipy.optimize.curve_fit(), allowing you to turn a function that models for your data into a python class that helps you parametrize and fit data with that model.
Many pre-built models for common lineshapes are included and ready to use.
The lmfit package is Free software, using an MIT license