base::sweep() for hyperSpec objects.

# S4 method for hyperSpec
sweep(x, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...)

Arguments

x

a hyperSpec object.

MARGIN

direction of the spectra matrix that STATS goees along.

STATS

the summary statistic to sweep out. Either a vector or a hyperSpec object.

hyperSpec offers a non-standard convenience function: if STATS is a function, this function is applied first (with the same MARGIN) to compute the statistic. However, no further arguments to the apply function can be given. See the examples.

FUN

the function to do the sweeping, e.g. - or /.

check.margin

If TRUE (the default), warn if the length or dimensions of STATS do not match the specified dimensions of x. Set to FALSE for a small speed gain when you know that dimensions match.

...

further arguments for FUN

Value

A hyperSpec object.

Details

Calls base::sweep() for the spectra matrix.

sweep() is useful for some spectra pre-processing, like offset correction, subtraction of background spectra, and normalization of the spectra.

See also

Author

C. Beleites

Examples


## Subtract the background / slide / blank spectrum
# the example data does not have spectra of the empty slide,
# so instead the overall composition of the sample is subtracted
background <- apply(faux_cell, 2, quantile, probs = 0.05)
corrected <- sweep(faux_cell, 2, background, "-")
plot(corrected, "spcprctl5")


## Offset correction
offsets <- apply(faux_cell, 1, min)
corrected <- sweep(faux_cell, 1, offsets, "-")
plot(corrected, "spcprctl5")


## Min-max normalization (on max amide I)
# the minimum is set to zero by the offset correction.
factor <- apply(corrected, 1, max)
mm.corrected <- sweep(corrected, 1, factor, "/")
plot(mm.corrected, "spcprctl5")


## convenience: give function to compute STATS:
mm.corrected2 <- sweep(corrected, 1, max, "/")
plot(mm.corrected2)


## checking
stopifnot(all(mm.corrected2 == mm.corrected))