| LMFIT | Contents | Download |
| Non-Linear Least-Squares Minimization and Curve-Fitting for Python | FAQ | Develop |

# Downloading and Installation

## Prerequisites

The lmfit package requires Python, NumPy, and SciPy.

Lmfit works with Python versions 2.7, 3.3, 3.4, 3.5, and 3.6. Support for Python 2.6 ended with lmfit version 0.9.4. Scipy version 0.15 or higher is required, with 0.17 or higher recommended to be able to use the latest optimization features. NumPy version 1.5.1 or higher is required.

In order to run the test suite, either the nose or pytest package is required. Some functionality of lmfit requires the emcee package, some functionality will make use of the pandas, Jupyter or matplotlib packages if available. We highly recommend each of these packages.

## Downloads

The latest stable version of lmfit is 0.9.7 is available from PyPi.

## Installation

With `pip` now widely avaliable, you can install lmfit with:

    pip install lmfit

Alternatively, you can download the source kit, unpack it and install with:

    python setup.py install

For Anaconda Python, lmfit is not an official package, but several Anaconda channels provide it, allowing installation with (for example):

    conda install -c conda-forge lmfit

## Development Version

To get the latest development version, use:

    git clone http://github.com/lmfit/lmfit-py.git

and install using:

    python setup.py install

## Testing

A battery of tests scripts that can be run with either the nose or pytest testing framework is distributed with lmfit in the `tests` folder. These are automatically run as part of the development process. For any release or any master branch from the git repository, running `pytest` or `nosetests` should run all of these tests to completion without errors or failures.

Many of the examples in this documentation are distributed with lmfit in the `examples` folder, and should also run for you. Some of these examples assume matplotlib has been installed and is working correctly.

## Acknowledgements

    Many people have contributed to lmfit.  The attribution of credit in a project such as
    this is very difficult to get perfect, and there are no doubt important contributions
    missing or under-represented here.  Please consider this file as part of the documentation
    that may have bugs that need fixing.

    Some of the largest and most important contributions (approximately in order of
    contribution in size to the existing code) are from:

      Matthew Newville wrote the original version and maintains the project.

      Till Stensitzki wrote the improved estimates of confidence intervals, and contributed
      many tests, bug fixes, and documentation.

      A. R. J. Nelson added differential_evolution, emcee, and greatly improved the code,
      docstrings, and overall project.

      Daniel B. Allan wrote much of the high level Model code, and many improvements to the
      testing and documentation.

      Antonino Ingargiola wrote much of the high level Model code and has provided many bug
      fixes and improvements.

      Renee Otten wrote the brute force method, and has improved the code  and documentation
      in many places.

      Michal Rawlik added plotting capabilities for Models.

      J. J. Helmus wrote the MINUT bounds for leastsq, originally in leastsqbounds.py, and
      ported to lmfit.

      E. O. Le Bigot wrote the uncertainties package, a version of which is used by lmfit.

    Additional patches, bug fixes, and suggestions have come from Christoph Deil, Francois
    Boulogne, Thomas Caswell, Colin Brosseau, nmearl, Gustavo Pasquevich, Clemens Prescher,
    LiCode, Ben Gamari, Yoav Roam, Alexander Stark, Alexandre Beelen, and many others.

    The lmfit code obviously depends on, and owes a very large debt to the code in
    scipy.optimize.  Several discussions on the scipy-user and lmfit mailing lists have also
    led to improvements in this code.

## License

The LMFIT-py code is distribution under the following license:

    Copyright, Licensing, and Re-distribution
    -----------------------------------------

    The LMFIT-py code is distribution under the following license:

      Copyright (c) 2014 Matthew Newville, The University of Chicago
                         Till Stensitzki, Freie Universitat Berlin
                         Daniel B. Allen, Johns Hopkins University
                         Michal Rawlik, Eidgenossische Technische Hochschule, Zurich
                         Antonino Ingargiola, University of California, Los Angeles
                         A. R. J. Nelson, Australian Nuclear Science and Technology Organisation

      Permission to use and redistribute the source code or binary forms of this
      software and its documentation, with or without modification is hereby
      granted provided that the above notice of copyright, these terms of use,
      and the disclaimer of warranty below appear in the source code and
      documentation, and that none of the names of above institutions or
      authors appear in advertising or endorsement of works derived from this
      software without specific prior written permission from all parties.

      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
      THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
      FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
      DEALINGS IN THIS SOFTWARE.

    -----------------------------------------
    Some code sections have been taken from the scipy library whose licence is below.

    Copyright (c) 2001, 2002 Enthought, Inc.
    All rights reserved.

    Copyright (c) 2003-2016 SciPy Developers.
    All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:

      a. Redistributions of source code must retain the above copyright notice,
         this list of conditions and the following disclaimer.
      b. Redistributions in binary form must reproduce the above copyright
         notice, this list of conditions and the following disclaimer in the
         documentation and/or other materials provided with the distribution.
      c. Neither the name of Enthought nor the names of the SciPy Developers
         may be used to endorse or promote products derived from this software
         without specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
    BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
    THE POSSIBILITY OF SUCH DAMAGE.