Coder Social home page Coder Social logo

sychang-manjaro / pybaselines Goto Github PK

View Code? Open in Web Editor NEW

This project forked from derb12/pybaselines

0.0 0.0 0.0 1.78 MB

A Python library of algorithms for the baseline correction of experimental data.

Home Page: https://pybaselines.readthedocs.io

License: BSD 3-Clause "New" or "Revised" License

Python 100.00%

pybaselines's Introduction

pybaselines

Logo

Current Pypi Version Current conda Version GitHub Actions test status Documentation Status Supported Python versions Zenodo DOI

pybaselines is a library of algorithms for the baseline correction of experimental data.

pybaselines 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 the documentation.

Stable Release

pybaselines can be installed from pypi using pip, by running the following command in the terminal:

pip install pybaselines

pybaselines can alternatively be installed from the conda-forge channel using conda by running:

conda install -c conda-forge pybaselines

Development Version

The sources for pybaselines can be downloaded from the GitHub repo. To install the current version of pybaselines from GitHub, run:

pip install git+https://github.com/derb12/pybaselines.git#egg=pybaselines

Dependencies

pybaselines requires Python version 3.6 or later and the following libraries:

All of the required libraries should be automatically installed when installing pybaselines using any of the installation methods above.

The optional dependencies for 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.

To 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.

For more details on each baseline algorithm, refer to the algorithms section of pybaselines's documentation. For examples of their usage, refer to the examples section.

A simple example is shown below (if using a version earlier than 1.0, see the quickstart in the documentation for the old version).

import matplotlib.pyplot as plt
import numpy as np
from pybaselines import Baseline, utils

x = np.linspace(1, 1000, 1000)
# a measured signal containing several Gaussian peaks
signal = (
    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 baseline
true_baseline = 2 + 10 * np.exp(-x / 400)
noise = np.random.default_rng(1).normal(0, 0.2, x.size)

y = signal + true_baseline + noise

baseline_fitter = Baseline(x_data=x)

bkg_1 = baseline_fitter.modpoly(y, poly_order=3)[0]
bkg_2 = baseline_fitter.asls(y, lam=1e7, p=0.02)[0]
bkg_3 = baseline_fitter.mor(y, half_window=30)[0]
bkg_4 = baseline_fitter.snip(
    y, max_half_window=40, decreasing=True, smooth_half_window=3
)[0]

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.

various baselines

Contributions are welcomed and greatly appreciated. For information on submitting bug reports, pull requests, or general feedback, please refer to the contributing guide.

Refer to the changelog for information on pybaselines's changes.

pybaselines is open source and freely available under the BSD 3-clause license. For more information, refer to the license.

If you use pybaselines for published research, please consider citing by following the guidelines in the documentation.

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.