View source: R/flag-filter-remove.R
flag_remove | R Documentation |
Filter, flag and remove unwanted peaks from xcms object (xcmsObj) of class XCMSnExp, xcmsSet or xsAnnotate. When the peaks are removed, the xcmsObj object can be regrouped (originally using xcms::group, now using xcms::groupChromPeaks). The function then checks if any blank peaks are still present and the process is repeated.
The output is a list object containing: 1) the updated xcms object, 2) the grouped peaklist and 3) the blank removed peaks
flag_remove(
xcmsObj,
pol = NA,
rsd_i_blank = NA,
minfrac_blank = 0.5,
rsd_rt_blank = NA,
ithres_blank = NA,
s2b = 10,
ref.class = "blank",
egauss_thr = NA,
rsd_i_sample = NA,
minfrac_sample = 0.7,
rsd_rt_sample = NA,
ithres_sample = NA,
minfrac_xcms = 0.7,
mzwid = 0.017,
bw = 5,
out_dir = ".",
temp_save = FALSE,
remove_spectra_bool = TRUE,
grp_rm_ids = NA,
xset = NA
)
xcmsObj |
object; XCMSnExp, xcmsSet or xsAnnotate object |
pol |
str; polarity (just used for naming purpose for files being saved) [positive, negative, NA] |
rsd_i_blank |
numeric; RSD threshold for the blank |
minfrac_blank |
numeric; minimum fraction of files for features needed for the blank |
rsd_rt_blank |
numeric; RSD threshold for the RT of the blank |
ithres_blank |
numeric; Intensity threshold for the blank |
s2b |
numeric; fold change (sample/blank) needed for sample peak to be allowed. e.g. if s2b set to 10 and the recorded sample 'intensity' value was 100 and blank = 10. 1000/10 = 100 so sample has fold change higher than the threshold and the peak is not considered a blank |
ref.class |
str; A string representing the class that will be used for the blank. |
egauss_thr |
numeric; Threshold for filtering out non gaussian shaped peaks. Note this only works if the verbose option was set for XCMS; |
rsd_i_sample |
numeric; RSD threshold for the sample |
minfrac_sample |
numeric; minimum fraction of files for features needed for the sample |
rsd_rt_sample |
numeric; RSD threshold for the RT of the sample |
ithres_sample |
numeric; Intensity threshold for the sample |
minfrac_xcms |
numeric; minfrac for xcms grouping |
mzwid |
numeric; xcms grouping parameter (corresponds to variable 'binSize' in XCMS3) |
bw |
numeric; xcms grouping parameter |
out_dir |
str; out directory |
temp_save |
boolean; Assign True if files for each step saved (for testing purpsoses) |
remove_spectra_bool |
bool; TRUE if flagged spectra is to be removed |
grp_rm_ids |
vector; vector of grouped_xcms peaks to remove (corresponds to the row from xcms::group output) |
xset |
object, DEPRECATED; xcmsSet object |
list(xset, grp_peaklist, removed_peaks)
library(xcms)
library(MSnbase)
library(magrittr)
#read in files and data
msPths <-list.files(system.file("extdata", "lcms", "mzML", package="msPurityData"), full.names = TRUE)
ms_data = readMSData(msPths, mode = 'onDisk', msLevel. = 1)
#subset the data to focus on retention times 30-90 seconds and m/z values between 100 and 200 m/z.
rtr = c(30, 90)
mzr = c(100, 200)
ms_data = ms_data %>% filterRt(rt = rtr) %>% filterMz(mz = mzr)
##### perform feature detection in individual files
cwp <- CentWaveParam(snthresh = 3, noise = 100, ppm = 10, peakwidth = c(3, 30))
xcmsObj <- findChromPeaks(ms_data, param = cwp)
xcmsObj@phenoData@data$class = c('blank', 'blank', 'sample', 'sample')
xcmsObj@phenoData@varMetadata = data.frame('labelDescription' = 'sampleNames', 'class')
pdp <- PeakDensityParam(sampleGroups = xcmsObj@phenoData@data$class, minFraction = 0, bw = 5, binSize = 0.017)
xcmsObj <- groupChromPeaks(xcmsObj, param = pdp)
#### flag, filter and remove peaks, returning an updated xcmsObj (XCMSnExp or xcmsSet class), grouped_peaklist (data.frame) and removed_peaks (data.frame)
fr <- flag_remove(xcmsObj)
##### load from existing data
xcmsObj = readRDS(system.file("extdata", "tests", "purityA", "10_input_filterflagremove.rds", package="msPurity"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.