These functions "get" (or extract) peaks (maxima) and valleys (minima) in two
vectors, usually a spectral quantity and wavelength, using a user selectable
span for window width and global and local (within moving window) size
thresholds. They also generate character
values for x
.
get_peaks(
x,
y,
global.threshold = 0,
span = 5,
strict = TRUE,
x_unit = "",
x_digits = 3,
na.rm = FALSE
)get_valleys(
x,
y,
global.threshold = 0,
span = 5,
strict = TRUE,
x_unit = "",
x_digits = 3,
na.rm = FALSE
)
A data frame with variables w.length and s.irrad with their values at the peaks or valleys plus a character variable of labels.
numeric
numeric A value belonging to class "AsIs"
is
interpreted as an absolute minimum height or depth expressed in data units.
A bare numeric
value (normally between 0.0 and 1.0), is interpreted
as relative to threshold.range
. In both cases it sets a
global height (depth) threshold below which peaks (valleys) are
ignored. A bare negative numeric
value indicates the global
height (depth) threshold below which peaks (valleys) are be ignored. If
global.threshold = NULL
, no threshold is applied and all peaks
returned.
odd positive integer A peak is defined as an element in a
sequence which is greater than all other elements within a moving window of
width span
centred at that element. The default value is 5, meaning
that a peak is taller than its four nearest neighbours. span = NULL
extends the span to the whole length of x
.
logical flag: if TRUE
, an element must be strictly
greater than all other values in its window to be considered a peak.
Default: FALSE
(since version 0.13.1).
character Vector of texts to be pasted at end of labels built from x value at peaks.
numeric Number of significant digits in wavelength label.
logical indicating whether NA
values should be stripped
before searching for peaks.
Function find_peaks
is a wrapper built onto function
peaks
from splus2R, adds support for peak
height thresholds and handles span = NULL
and non-finite (including
NA) values differently than splus2R::peaks
. Instead of giving an
error when na.rm = FALSE
and x
contains NA
values,
NA
values are replaced with the smallest finite value in x
.
span = NULL
is treated as a special case and selects max(x)
.
Passing `strict = TRUE` ensures that multiple global and within window
maxima are ignored, and can result in no peaks being returned.
Two tests make it possible to ignore irrelevant peaks. One test
(global.threshold
) is based on the absolute height of the peaks and
can be used in all cases to ignore globally low peaks. A second test
(local.threshold
) is available when the window defined by `span`
does not include all observations and can be used to ignore peaks that are
not locally prominent. In this second approach the height of each peak is
compared to a summary computed from other values within the window of width
equal to span
where it was found. In this second case, the reference
value used within each window containing a peak is given by
local.reference
. Parameter threshold.range
determines how the
values passed as argument to global.threshold
and
local.threshold
are scaled. The default, NULL
uses the range
of x
. Thresholds for ignoring too small peaks are applied after
peaks are searched for, and threshold values can in some cases
result in no peaks being returned.
While functions find_peaks
and find_valleys()
accept as input
a numeric
vector and return a logical
vector, methods
peaks
and valleys
accept as input different R
objects, including spectra and collections of spectra and return a subset
of the object. These methods are implemented using calls to functions
find_peaks
and fit_peaks
.
Other peaks and valleys functions:
find_peaks()
,
find_spikes()
,
peaks()
,
replace_bad_pixs()
,
spikes()
,
valleys()
,
wls_at_target()