Functions implementing fitting of peaks in a class-agnostic way. The fitting
refines the location of peaks and value of peaks based on the location of
maxima and minima supplied. This function is to be used together with
find_peaks() or find_valleys().
Usage
fit_peaks(
x,
peaks.idx,
span,
x.col.name = NULL,
y.col.name,
method,
max.span = 5L,
maximum = TRUE,
keep.cols = NULL
)
fit_valleys(
x,
valleys.idx,
span,
x.col.name = NULL,
y.col.name,
method,
max.span = 5L,
maximum = FALSE,
keep.cols = NULL
)Arguments
- x
generic_spct or data.frame object.
- peaks.idx, valleys.idx
logical or integer Indexes into
xselecting global or local extremes.- span
odd integer The span used when refining the location of maxima or minima of
x.- x.col.name, y.col.name
character Name of the column of
xon which to operate.- method
character The method to use for the fit.
- max.span
odd integer The maximum number of data points used when when refining the location of maxima and minima.
- maximum
logical A flag indicating whether to search for maxima or minima.
- keep.cols
logical Keep unrecognized columns in data frames
Value
An R object of the same class as x containing the fitted
values for the peaks, and optionally the unmodified values at the rows
matching peaks.idx or valleys.idx for other retained columns.
Details
The only method currently implemented is "spline" based on
a call to splinefun in a window of width span
centred on each peak pointed at by peaks.idx. A spline fitted to
a narrow window will usually locate the position of the peak in the
column named by the argument passed to x.col.name better than
estimating the true height of the peak in the column named by the argument
passed to y.col.name.
Note
These functions are not meant for everyday use. Use option
refine.wl = TRUE of methods peaks() and valleys()
instead.
Examples
peaks <- find_peaks(sun.spct[["s.e.irrad"]], span = 31)
fit_peaks(sun.spct, peaks, span = 31,
y.col.name = "s.e.irrad", method = "spline")
#> Object: source_spct [11 x 2]
#> Wavelength range 378.0001-770.66484 nm, step 19.77647-85.83807 nm
#> Label: sunlight, simulated
#> Measured on 2010-06-22 09:51:00 UTC
#> Measured at 60.20911 N, 24.96474 E; Kumpula, Helsinki, FI
#> Variables:
#> w.length: Wavelength [nm]
#> s.e.irrad: Spectral energy irradiance [W m-2 nm-1]
#> --
#> # A tibble: 11 × 2
#> w.length s.e.irrad
#> <dbl> <dbl>
#> 1 378. 0.497
#> 2 412. 0.679
#> 3 451. 0.821
#> 4 475. 0.775
#> 5 495. 0.791
#> 6 529. 0.736
#> 7 582. 0.687
#> 8 605. 0.662
#> 9 662. 0.600
#> 10 748. 0.503
#> 11 771. 0.470
