--- title: "CorrectOverloadedPeaks" subtitle: "A computational tool for automatic correction of overloaded signals in GC-APCI-MS" author: "Jan Lisec" date: "20.08.2016" output: rmarkdown::html_vignette: fig_width: 7 fig_height: 7 vignette: > %\VignetteIndexEntry{CorrectOverloadedPeaks: a computational tool for automatic correction of overloaded signals in GC-APCI-MS} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- This short Vignette will show how to correction overloaded signals in: - an artificial test case - a provided real data set To achieve this we need to load the package functions as well as a small data example in `xcmsRaw` format. ```{r preload} library(CorrectOverloadedPeaks) data("mzXML_data") ``` Let us model a typical overloaded signal occurring frequently in GC-APCI-MS using the provided function `ModelGaussPeak`. ```{r} pk <- CorrectOverloadedPeaks::ModelGaussPeak(height=10^7, width=3, scan_rate=10, e=0, ds=8*10^6, base_line=10^2) plot(pk, main="Gaussian peak of true intensity 10^7 but cutt off at 8*10^6") ``` Now we roughly estimate peak boarders before applying the provided function `FitGaussPeak` to correct peak data. ```{r} idx <- pk[,"int"]>0.005 * max(pk[,"int"]) tmp <- CorrectOverloadedPeaks::FitGaussPeak(x=pk[idx,"rt"], y=pk[idx,"int"], silent=FALSE, xlab="RT", ylab="Intensity") ``` The generated QC plot does show the optimal solution found (green line), indicating the substituted intensity values (grey circles) and obtained parameters (blue text) including the probably peak height (max_int=9.7*10^6) being very close to the true peak height (10^7). Now let's extend this simplified process to peaks from a real data set. The following function call will generate: - a PDF in the working directory with QC-plots for 10 peaks from 5 chromatographic regions - a console output with processing information - a new file `cor_df_all.RData` in the working directory containing all extracted but non-corrected mass traces ```{r} tmp <- CorrectOverloadedPeaks::CorrectOverloadedPeaks(data=mzXML_data, method="EMG", testing=TRUE) ``` Let us load these non-corrected mass traces for further visualization of package capabilities. For instance we can reprocess peak 2 from region 4 using the isotopic ratio approach: ```{r} load("cor_df_all.RData") head(cor_df_all[[1]][[1]]) tmp <- CorrectOverloadedPeaks::FitPeakByIsotopicRatio(cor_df=cor_df_all[[1]][[1]], silent=FALSE) ``` The extracted data contain RT and Intensity information for the overloaded mass trace (mz=350.164) as well as isotopes of this mz up to the first isotope which is not itself overloaded (M+2, green triangles). This isotope is evaluated with respect to its ratio to M+0 in the peak front (15.9%) and this ratio in turn is used to scale up the overloaded data points of M+0 (grey circles) as indicated by the black line. The data could of course be processed alternatively using the `Gauss` method as shown previously for artificial data. ```{r} tmp <- CorrectOverloadedPeaks::FitGaussPeak(x=cor_df_all[[1]][[1]][,"RT"], y=cor_df_all[[1]][[1]][,"int0"], silent=FALSE, xlab="RT", ylab="Intensity") ``` ```{r, echo=FALSE, prompt=FALSE} if(file.exists("cor_df_all.RData")) file.remove("cor_df_all.RData") if(file.exists("S5_35_01_2241_Int+LM.mzXML.pdf")) file.remove("S5_35_01_2241_Int+LM.mzXML.pdf") if(file.exists("mzXML_data.pdf")) file.remove("mzXML_data.pdf") ```