EMSC: Extended multiplicative signal correction (EMSC)

View source: R/EMSC.R

EMSCR Documentation

Extended multiplicative signal correction (EMSC)

Description

Performs model-based background correction and normalisation of spectra. EMSC handles variations in scaling, polynomial baselines and interferents. Parameters for corrections are stored for further analysis, and spectra are corrected accordingly.

Usage

EMSC(X, model = NULL, ...)

Arguments

X

matrix containing spectra as rows.

model

an EMSC model to use instead of the other parameters.

...

named model parameters for EMSC_model.

Details

This is the main EMSC function performing all calculations. It can be run with no parameters (defaults are used), with a predefined EMSC model object or with parameters that are passed on to the EMSC model building function EMSC_model.

Value

An object of class EMSC is returned. This contains:

  • corrected: matrix of corrected spectra.

  • parameters: matrix of fitted parameter values.

  • model: object containing input all input parameters.

  • X: original data.

References

H. Martens, E. Stark, Extended multiplicative signal correction and spectral interference subtraction: new preprocessing methods for near infrared spectroscopy. J Pharm Biomed Anal. 1991; 9(8):625-35.

Joakim Skogholt, Kristian Hovde Liland, Ulf Geir Indahl, Pre-processing of spectral data in the extended multiplicative signal correction framework using multiple reference spectra Journal of Raman Spectroscopy 50(3), (2019), pp. 407-417.

See Also

EMSC_model predict.EMSC plot.EMSC

Examples

data(fishoil)
Raman      <- fishoil$Raman[, 850:3300]
EMSC.basic <- EMSC(Raman)
EMSC.poly6 <- EMSC(Raman, degree = 6)
EMSC.rep   <- EMSC(Raman, degree = 6, reference = Raman[30, ],
                   replicates = fishoil$replicates)

old.par  <- par(mfrow = c(2,2), mar = c(4,4,1,1))
xlim     <- rev(as.numeric(range(colnames(Raman))))
matplot(colnames(Raman), t(Raman), type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Raw spectra')
matplot(colnames(Raman), t(EMSC.basic$corrected), type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Corrected (basic)')
matplot(colnames(Raman), t(EMSC.poly6$corrected), type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Corrected (6th degree polynomial)')
matplot(colnames(Raman), t(EMSC.rep$corrected),   type = 'l', xlim = xlim,
        ylab = 'Relative intensity', 
        xlab = 'Corrected (reference = spec. #30, replicate correction (90%))')
par(old.par)


EMSC documentation built on May 29, 2024, 3:07 a.m.

Related to EMSC in EMSC...