Package: pybaselines
pybaselines is a library of algorithms for the baseline correction of experimental data.For Python 3.8+Open Source: BSD 3-Clause LicenseSource Code:https://github.com/derb12/pybaselinesDocumentation:https://pybaselines.readthedocs.io.ContentsIntroductionInstallationQuick StartContributingChangelogLicenseCitingAuthorIntroductionpybaselines is a Python library that provides many different algorithms for
performing baseline correction on data from experimental techniques such as
Raman, FTIR, NMR, XRD, XRF, PIXE, etc. The aim of the project is to provide a
semi-unified API to allow quickly testing and comparing multiple baseline
correction algorithms to find the best one for a set of data.pybaselines has 50+ baseline correction algorithms. These include popular algorithms,
such as AsLS, airPLS, ModPoly, and SNIP, as well as many lesser known algorithms. Most
algorithms are adapted directly from literature, although there are a few that are unique
to pybaselines, such as penalized spline versions of Whittaker-smoothing-based algorithms.
The full list of implemented algorithms can be found in thedocumentation.InstallationStable Releasepybaselines can be installed frompypiusingpip, by running the following command in the terminal:pip install pybaselinespybaselines can alternatively be installed from theconda-forgechannel using conda by running:conda install -c conda-forge pybaselinesDevelopment VersionThe sources for pybaselines can be downloaded from theGitHub repo.
To install the current version of pybaselines from GitHub, run:pip install git+https://github.com/derb12/pybaselines.git#egg=pybaselinesDependenciespybaselines requiresPythonversion 3.8 or later
and the following libraries:NumPySciPyAll of the required libraries should be automatically installed when
installing pybaselines using any of the installation methods above.Theoptional dependenciesfor pybaselines are listed in the documentation . To also install the optional
dependencies when installing pybaselines with pip, run:pip install pybaselines[full]If installing with conda, the optional dependencies have to be specified manually.Quick StartTo use the various functions in pybaselines, simply input the measured
data and any required parameters. All baseline correction functions in pybaselines
will output two items: a numpy array of the calculated baseline and a
dictionary of potentially useful parameters. The main interface for all baseline correction
algorithms in pybaselines is through theBaselineobject for one dimensional
data andBaseline2Dfor two dimensional data.For more details on each baseline algorithm, refer to thealgorithms sectionof
pybaselines’s documentation. For examples of their usage, refer to theexamples section.A simple example is shown below.importmatplotlib.pyplotaspltimportnumpyasnpfrompybaselinesimportBaseline,utilsx=np.linspace(1,1000,1000)# a measured signal containing several Gaussian peakssignal=(utils.gaussian(x,4,120,5)+utils.gaussian(x,5,220,12)+utils.gaussian(x,5,350,10)+utils.gaussian(x,7,400,8)+utils.gaussian(x,4,550,6)+utils.gaussian(x,5,680,14)+utils.gaussian(x,4,750,12)+utils.gaussian(x,5,880,8))# exponentially decaying baselinetrue_baseline=2+10*np.exp(-x/400)noise=np.random.default_rng(1).normal(0,0.2,x.size)y=signal+true_baseline+noisebaseline_fitter=Baseline(x_data=x)bkg_1,params_1=baseline_fitter.modpoly(y,poly_order=3)bkg_2,params_2=baseline_fitter.asls(y,lam=1e7,p=0.02)bkg_3,params_3=baseline_fitter.mor(y,half_window=30)bkg_4,params_4=baseline_fitter.snip(y,max_half_window=40,decreasing=True,smooth_half_window=3)plt.plot(x,y,label='raw data',lw=1.5)plt.plot(x,true_baseline,lw=3,label='true baseline')plt.plot(x,bkg_1,'--',label='modpoly')plt.plot(x,bkg_2,'--',label='asls')plt.plot(x,bkg_3,'--',label='mor')plt.plot(x,bkg_4,'--',label='snip')plt.legend()plt.show()The above code will produce the image shown below.ContributingContributions are welcomed and greatly appreciated. For information on
submitting bug reports, pull requests, or general feedback, please refer
to thecontributing guide.ChangelogRefer to thechangelogfor information on pybaselines’s changes.Licensepybaselines is open source and freely available under the BSD 3-clause license.
For more information, refer to thelicense.CitingIf you use pybaselines for published research, please consider citing
by following theguidelines in the documentation.AuthorDonald Erb <donnie.erb@gmail.com>