Peak detection using AMPD and ASS-AMPD algorithms
Project description
AMPD algorithm in Python
Implements a function find_peaks
based on the Automatic Multi-scale
Peak Detection algorithm proposed by Felix Scholkmann et al. in
"An Efficient Algorithm for Automatic Peak Detection in
Noisy Periodic and Quasi-Periodic Signals", Algorithms 2012,
5, 588-603
Usage
Install from PyPI:
pip install pyampd
Or install from source:
pip install git+https://github.com/ig248/pyampd
Import function:
from pyampd.ampd import find_peaks
See notebooks/ampd.ipynb
for usage examples.
Specifying maximum scale
To improve run-time on large time-series, it is possible to specify the maximum scale to consider:
peaks = find_peaks(x, scale=100)
will only consider windows up to +-100 point either side of peak candidates.
Adaptive Scale Selection
If the characteristic scale of the signal changes over time, a new algorithm called Adaptive Scale Selection can track the changes in optimal scales and detect peaks accordingly:
peaks = find_peaks_adaptive(x, window=200)
will select the optimal scale at each point using a 200-point running window.
Original implementation
find_peaks
is not identical to the algorithm proposed in the original paper (especially near start and end of time series).
A performance-optimized version of the original implementation is provided in find_peaks_original
.
Tests
Run
pytest
Other implementations
- R: https://cran.r-project.org/web/packages/ampd/index.html
- MATLAB: https://github.com/mathouse/AMPD-algorithm
- Python: https://github.com/LucaCerina/ampdLib
Improvements
This Python implementation provides significant speed-ups in two areas:
- Efficient tracking of local minima without using random numbers
- Introduction of maximum window size, reducing algorithm run-time from quadratic to linear in the number of samples.
- Better handling of peaks near start/end of the series
- Addition of new Adaptive Scale Selection
ToDo
- It may be possible to avoid repeated comparisons, and reduce worst-case
runtime from
O(n^2)
toO(n log(n))
. find_peaks_adaptive
could benefit from specifying bothwindow
andmax_scale
References
Original paper: https://doi.org/10.1109/ICRERA.2016.7884365
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyampd-0.0.1.tar.gz
.
File metadata
- Download URL: pyampd-0.0.1.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e333d00b61d2844b0ed0383b010394e0a0cb384a036dd83960cdc647cf71a755 |
|
MD5 | 48da763e6ab7df22347212859589d051 |
|
BLAKE2b-256 | 51976a56d7ed7d1ed5cb25c4643cb327a1903438587991fe364ac6042c2b837d |
File details
Details for the file pyampd-0.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pyampd-0.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d923a4372308d447b98cd80f935a059e29323777dd26c0ac131945ad84f5f89c |
|
MD5 | 89da3b6ba286573eec3062f713b83c6b |
|
BLAKE2b-256 | 53b5587d52d43aa803c20743fd23e2bcbb454a06694c5645de741311678c8750 |