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
-
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()
- mouse-dragging (wrap up peak area by mouse-dragging)
- click (click the top and the both edges of each peaks)
-
Give your spectrum data and your guess to Fitter.
fitter = Fitter(data, guess) fitter.run(method='gaussian')
- gaussian function
- polynomial function
- position (x, y) of each peaks
- baseline height of the spectrum
- bandwidth of each peaks with its CI (confidential interval)
-
Save the fitting results
fitter.save_data('out/fitting_result.csv')
-
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