Skip to main content

interactive_curve_fit: A Python project enables you to do curve fitting on spectrum data interactively on GUI. You can visualize your spectrum and fit the optional number of peaks on GUI using Scipy.optimize.curve_fit method.

Project description

interactive_curve_fit

A Python project enables you to do curve fitting on spectrum data interactively on GUI. You can visualize your spectrum and fit the optional number of peaks on GUI using Scipy.optimize.curve_fit method.

How to use?

Try tutorial.py with your spectrum data!

Spectrum data format must be like the table below

x y
0 1
1 13
2 30
3 43
4 31
5 11
... ...

Steps to curve-fit

  1. Teach your initial guess of the positions of each peaks roughly to Fitter.

    from interactive_curve_fit import read_data, Guessor, Fitter
    
    data = read_data(data, headers=2, sep=',')
    guessor = Guessor(data, background=10, method='drag')
    guess = guessor.guess()
    

    Initial Guess method

    • mouse-dragging (wrap up peak area by mouse-dragging)
    • click (click the top and the both edges of each peaks)

    Screenshot

    Guessing peak pos interactively Guessing another peak pos Fitting results (by Fitter class) Peak information on terminal

  2. Give your spectrum data and your guess to Fitter.

    fitter = Fitter(data, guess)
    fitter.run(method='gaussian')
    

    Supported fitting functions

    • gaussian function
    • polynomial function

    Output information includes

    • position (x, y) of each peaks
    • baseline height of the spectrum
    • bandwidth of each peaks with its CI (confidential interval)
  3. Save the fitting results

    fitter.save_data('out/fitting_result.csv')
    
  4. Other features

    bmp_to_csv converts bmp file to csv file.

    from interactive_curve_fit import bmg_to_csv
    bmp_to_csv('data/line_spectrum.bmp')
    data = read_data('data/line_spectrum.csv')
    

    Fitter can visualize fitting results

    fitter.plot_fit()
    

    Fitter can also display fitting results on terminal

    fitter.display_results_terminal(ci=2)
    

Supported supectrum file format

  • ascii file(.asc .csv .txt etc..)

  • bmp image(.bmp .jpg .png .jpeg etc..)

    excel sheet files, table of html are planed to be suported in the near future.

Features that are planned to be supported!

  • baseline correlation
  • other fitting functions (e.g. binomical distribution function)
  • automated guessor method using wavelet transform and CNN

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

interactive_curve_fit-0.0.1.tar.gz (356.0 kB view details)

Uploaded Source

Built Distribution

interactive_curve_fit-0.0.1-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file interactive_curve_fit-0.0.1.tar.gz.

File metadata

  • Download URL: interactive_curve_fit-0.0.1.tar.gz
  • Upload date:
  • Size: 356.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for interactive_curve_fit-0.0.1.tar.gz
Algorithm Hash digest
SHA256 c193c67b693e0a807c1793caab6ed14a1230e5499eb9b83d6a235280783539c0
MD5 112d8821b52b08ec32e5c94b88a42b79
BLAKE2b-256 d6267fc933035b994ce00bd7529d17466390ca8a69f345e93fa914e1702cda85

See more details on using hashes here.

File details

Details for the file interactive_curve_fit-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for interactive_curve_fit-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 15daa3c2eb87bdd15afb05935ad5784a54907a3ecf62aeda726a3113b2c9bf19
MD5 672ae8ad62c6b9dbf02c1a401a3c612b
BLAKE2b-256 881734ccb061c34f1e6175b0f8569a8d8d99636a69b1effa991ee2e38a00f21e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page