Git Product home page Git Product logo

anafit's Introduction

Anafit

Anafit is a package providing fitting tools for matplotlib figures. It is largely inspired from the Ezyfit toolbox for Matlab.

Source code repository and issue tracker:
https://gitlab.com/xamcosta/Anafit
Python Package Index:
https://pypi.python.org/pypi/anafit/0.1.5

Requirements

Python:
Anafit has been coded using Python 3.5 from Anaconda distribution.
pip/setuptools:
Those are the most convenient way to install Anafit and its dependencies. Most likely they are already installed in your system, but if not, please refer to pip doc webpage.
Matplotlib and PyQt5:
When called, Anafit menu, based on PyQt5, will appear as a new button in the matplotlib figure toolbar. However, this requires Qt5Agg as matplotlib’s backend. WARNING : When imported, anafit will switch your actual backend to Qt5Agg, destroying all figures already constructed during your session.
Other packages:
To fit, Anafit uses scipy.optimize.curve_fit function from scipy module. It also uses numpy , os , sys , functools and finally json (for custom fit function saving in a text file).

Installation

Once you have installed the above-mentioned dependencies, you can use pip to download and install the latest release with a single command:

python3 -m pip install anafit

To un-install, use:

python3 -m pip uninstall anafit

Note that you can also just download and add the anafit repository to your PYTHONPATH.

Usage

First, import anafit:

import anafit

Note that importing anafit will switch matplotlib’s backend to ‘Qt5Agg’, destroying your current figures ! To prevent this, the best is to import anafit BEFORE importing matplotlib.pyplot or pylab.

Adding anafit button to a matplotlib figure

This is done simply by calling anafit.Figure() class:

fig = plt.figure()
ana = anafit.Figure(fig)

If no argument is passed to anafit.Figure(), the anafit button will be added to the current active figure.

Fitting a curve

In case several curves are plotted, you can select the one you wanna fit in the “Dataset” menu. The dataset are represented by a icon filled with the color of the curve, followed by their marker.

Then, in the “Show Fit” menu, you can select predefined fitting functions, sorted by types (linear, power, etc…), or your own saved fitting functions, or any function you want to define on the way, using “Other Fit…”.

The fitting curve will appear as an orange line on your figure, and its parameters will appear in the Python console. You can access them anytime through the attribute ana.lastFit . More generally, an history of fits is stored in ana.fits . These anafit.Fit object contains not only the fit informations, but also the handles of the fit line, allowing to easily change the style of the fit curve. For instance, you can change the color of the last fit by simply running:

ana.fits[-1].linfit.set_color(‘r’)

Defining a region of interest (ROI)

You can restrict the range on which you wanna fit your datas in the “Define Range” menu. This menu displays the current range, and offers the possibility to set the range manually in a dialog (‘Define…’) or by selecting two points on the figure (‘Define ROI’). You can restore the full range by selecting ‘Reset’.

Creating custom fit functions

You can create your own fitting functions in the ‘Edit User Fit’ menu. They will then appear in the ’Show Fit’ menu. Those fitting functions are stored in a text file in the anafit repository, that you can edit by hand. Clicking ‘Reset’ deletes all custom fitting functions, but let one as an example.

Getting slopes from drawn lines

You can draw a line on the figure by selecting ‘Draw Line’, and remove it using ‘Undo Line’. Use ‘Get Slope’ to access the parameters of this line: in log-log scale, this returns the prefactor and the exponent of a power law.

You can draw a line corresponding to a given slope (a given exponent in log-log scale) using ‘Show Slope’.

Displaying fit infos

You can display the range of confidence of the fit curve by selecting ’Show Confidence’. The interval of confidence is evaluated using the square root of the diagonal of the covariance matrix.

anafit's People

Contributors

xamcost avatar remi-pr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.