PeakDetect — Peak detection of peaks and valleys.¶
This module defines a peak detection utility that looks for local maxima and minima. It is based on code by Marcos Duarte, https://github.com/demotu/BMC.
-
class
admit.util.peakfinder.PeakDetect.
PeakDetect
(spec, x=None, **kwarg)[source]¶ Detect peaks in data based on their amplitude and other features.
Parameters: spec : 1D array_like
The input spectra to search for peaks.
x : 1D array_like
The x co-ordinates for the spectrum (optional). Default: None.
kwarg : Dict
Any additional arguments, see the Attributes list for a complete listing.
Examples
from admit.util.peakfinder.PeakDetect import PeakDetect import numpy as np x = np.random.randn(100) x[60:81] = np.nan # detect all peaks pd = PeakDetect(x) ind = pd.find() print(ind) x = np.sin(2*np.pi*5*np.linspace(0, 1, 200)) + np.random.randn(200)/5 # set minimum peak height = 0 and minimum peak distance = 20 pd = PeakDetect(x, min_sep=20, thresh=0) ind = pd.find() x = [0, 1, 0, 2, 0, 3, 0, 2, 0, 1, 0] # set minimum peak distance = 2 pd = PeakDetect(x, min_sep=2) ind = pd.find() x = [0, 1, 1, 0, 1, 1, 0] # detect both edges pd = PeakDetect(x, edge='both') ind = pd.find()
Attributes
spec (1D array_like) The input spectra to search for peaks. x (1D array_like) The x co-ordinates for the spectrum (optional) Default: None. thresh (float) Detect peaks that are greater than minimum peak height. Default: 0.0. min_sep (int) Detect peaks that are at least separated by minimum peak distance, in number of channels. Default : 5. edge (str) One of ‘rising’, ‘falling’, or ‘both’, optional. For a flat peak, keep only the rising edge (‘rising’), only the falling edge (‘falling’), both edges (‘both’). Default : ‘rising’. kpsh (bool) Keep peaks with same height even if they are closer than min_sep, optional. Default: False. Methods
detect_peaks
(spec[, valley])Detects peaks. find
()Method to locate peaks in an input spectrum -
detect_peaks
(spec, valley=False)[source]¶ Detects peaks.
Parameters: spec : 1D array
The specrum to analyze.
valley : bool
Whether to search for peaks (positive) or valleys (negative). Default: False
Returns: 1D array_like
indeces of the peaks in spec.
Notes
The detection of valleys instead of peaks is performed internally by simply negating the data: ind_valleys = detect_peaks(-x)
The function can handle NaN’s
See this IPython Notebook [R5].
References
[R5] (1, 2) http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/DetectPeaks.ipynb
-
edge
= 'rising'¶
-
find
()[source]¶ Method to locate peaks in an input spectrum
Parameters: None Returns: Numpy array containing the located peaks
-
kpsh
= False¶
-
min_sep
= 5¶
-
thresh
= 0.0¶
-