First release of adaptive-curvefitting

Posted by Bruce Liu on June 14, 2020

🏷️ Tags: python , curvefitting

GitHub PyPI version DOI

Adaptive curvefitting is a tool to find potentially optimal models for your research data. It’s based on scipy, numpy, and matplotlib.

Table of contents

Why is this tool

The very difference of adaptive-curvefitting with numpy.polyfit, scipy.optimize.curve_fit or scipy.optimize.least_squares is the hypothesis you don’t know which model to fit. If you already have the expected model, the methods in scipy and numpy are fantastic tools and better than this one. When you explore something unknown, this will be a maybe.

Installation, update and uninstallation

To install

Quick installation with pip:

pip install adaptive-curvefitting

To update

pip install --upgrade adaptive-curvefitting

To uninstall

pip uninstall adaptive-curvefitting

Usage

Import the required module

In general,

import longscurvefitting

or import the specified function:

from longscurvefitting import oneClickCurveFitting
from longscurvefitting import generateFunction
from longscurvefitting import generateModels

Do the curvefitting

oneClickCurveFitting(xdata, ydata)

There are some optional arguments of oneClickCurveFitting.

  • functions: specified or all (default) basic models(name of models) to fit.
    • Type: list of string
    • Default: basicModels_nameList
  • piecewise: if consider custom a piecewise function. It is mandatory not to ‘piecewise’ when the data size is less than 20.
    • Type: bool
    • Default: False
  • operator: operatation between basic models.
    • Type: string
    • Default: ‘+’
  • maxCombination: max number of combination of basic models.
    • Type: integer
    • Default: 2
  • plot_opt: the number of plot for optimal models.
    • Type: integer
    • Default: 10
  • xscale: one of {“linear”, “log”, “symlog”, “logit”, …}
    • Type: string
    • Default: None
  • yscale: one of {“linear”, “log”, “symlog”, “logit”, …}
    • Type: string
    • Default: None
  • filename_startwith: a custom string mark as part of output filename
    • Type: string
    • Default: ‘curvefit’
  • silent: minimal output to monitor
    • Type: boolean
    • Default: False
  • feedback: if True, return the optimal model(function object), parameters
    • Type: boolean
    • Default: False
  • kwargs: keyword arguments passed to curve_fit_m. Note that bounds and p0 will take no effect when multi-models.
    • Type: dict

See the complete example “/tests/curvefitting.py”.

Generate a expected model

Create a model composited by gaussian and erf function:

funcs = ['gaussian','erf']
myfunc = generateFunction(funcs, functionName='myfunc', operator='+')['model']

See the complete example “/tests/custom_a_model.py”.

Re-use the fitted curve

See the complete example “/tests/reuse_the_fitted_model.py”.

Shortages

How to cite

If this tool is useful to your research, star and cite it as below:

Xiaolong Liu, & Meixiu Yu. (2020, June 14). longavailable/adaptive-curvefitting (Version v0.1.0). Zenodo. 
http://doi.org/10.5281/zenodo.3893596

Easily, you can import it to Mendeley.


Share on:

« PREVIOUS: Difference between list.sort() and sorted() in Python
NEXT: Load context from html »