Check the spread of wavelength step sizes in an ordered numeric
vector, or in the "w.length"
column of a spectral object containing
a single spectrum.
check_wl_stepsize(x, span = Inf, na.rm = FALSE)
A logical TRUE
is returned invisibly if check is passed and
otherwise FALSE
with a warning. A warning is issued on failure as
a side effect.
numeric vector. Hint: to find valleys, change the sign of the
argument with the unnary operator -
.
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 indicating whether NA
values should be stripped
before searching for peaks.
As the search for peaks uses a window based on a fixed number of
observations at neighbouring wavelengths, if the wavelength step between
observations varies drastically, the window expressed in nanometres of
wavelength becomes very irregular. With the default span = 5
in
peaks()
, valleys()
, and wls_at_target()
the
search in most cases still works for "thinned" spectra, and the check is
skipped. With spikes()
and despike()
methods the check is
always done as these methods do not override span = Inf
.
The typical case when the step can vary strongly are spectra returned by
thin_wl()
. As when using default arguments, including
span = 21
, thin_wl()
retains the original local maxima and
global maximum, and a reasonably narrow wavelength maximum step a call
to peaks
with span = NULL
or span = 5
tends
to discover the original peaks missing at most a few.
check_wl_stepsize(sun.spct)
check_wl_stepsize(1:20, 30)
Run the code above in your browser using DataLab