I am new to bioconductor, xcms and metaMS but have read the vignettes for xcms, xcmsSet, runGC, and metaMS. I am analyzing 100+ files of volatile compound data gathered by SPME-GC-MS on an Agilent 6975 single quadrupole mass spectrometer. When I analyze the files, I can see from manual inspection of the chromatogram that metaMS is missing integrations on some peaks. I can also see that these peaks are not missed due to signal to noise ratio as metaMS has captured information on smaller peaks elsewhere in the chromatogram. To confirm, I checked the files with AMDIS and was also able to get the integrations for the peaks. One set of peaks is 2-methylbutanal (rt = 8.18) and 3-methylbutanal (rt = 8.28) which are close in rt and they share most m/z. I started with the FEM settings from the vignette for the QQQ instrument and have since tried altering the snthreshold (2-5), steps = 2 - 3, step = 0.1 to 0.5, and fwhm = 3 - 15, CAMERA; perfwhm = 0.3 - 1. The runGC function picks up between 217 and 423 features with various combinations of these settings but never captures 2-methylbutanal (it does always capture 3-methyl butanal, however). metaMS consistently misses many (10+) other peaks as well. I would still prefer to use metaMS, however, because it is faster than the AMDIS workflow and seems more consistent when it does capture peaks.
Are there other settings that I should be trying? Does anyone have any suggestions on how to improve the performance of metaMS for peak picking or understand why it might be missing peaks vs AMDIS? Thanks!
Example settings for metaMSsettings:
ag_6975_mmss <- metaMSsettings(protocolName = "ag_6975_wax",
"chrom" = "GC",
PeakPicking = list(
method = "matchedFilter",
step = 0.5,
steps = 2,
mzdiff = 0.5,
fwhm = 10,
snthresh = 2,
max = 500),
CAMERA = list(perfwhm = 1))
metaSetting(ag_6975_mmss, "DBconstruction") <- list(
minintens = 0.0,
rttol = .1,
intensityMeasure = "maxo",
DBthreshold = .80,
minfeat = 5)
metaSetting(ag_6975_mmss, "match2DB") <- list(
simthresh = 0.80,
timeComparison = "rt",
rtdiff = .5,
RIdiff = 5,
minfeat = 2)
metaSetting(ag_6975_mmss, "matchIrrelevants") <- list(
irrelevantClasses = c("Bleeding", "Plasticizers"),
timeComparison = "rt",
RIdiff = 2,
rtdiff = .05,
simthresh = 0.70)
metaSetting(ag_6975_mmss, "betweenSamples") <- list(
min.class.fraction = .5,
min.class.size = 5,
timeComparison = "rt",
rtdiff = .05,
RIdiff = 2,
simthresh = .95)