Skip to main content
Topic: GC-MS Metabolomics: Supervised vs. Unsupervised Approach (Read 6438 times) previous topic - next topic

GC-MS Metabolomics: Supervised vs. Unsupervised Approach

Hi, I would like to discuss with you about the data pre-processing in a metabolomic experiment performed using GC-MS. In my experience we have two possibility: a supervised method, using a 'direct approach' to each chromatogram, for example using AMDIS for the spectral deconvolution to separate the co-eluting compounds; and an unsupervised approach using a dynamic programming method, i.e. xcms.

I'm working on the same data set using both approach but, I'm not been able to obtain comparable results. In particular using AMDIS I have extracted about 180 different compounds while, using xcms-CAMERA, I'm not been able to extract more than 35 compounds. This is the code I used:

Code: [Select]
## xcms
xset <- xcmsSet(files, nSlaves = slaves, method = 'centWave', ppm = 100, peakwidth = c(3,10),
                snthr = 3, integrate = 1, prefilter = c(3,100), noise = 0)
xsetRT <- retcor(xset,  method = 'obiwarp', profStep = 1, plottype = 'none')
plotrt(xsetRT, leg = FALSE, densplit = TRUE)
xsetRT <- group(xsetRT, method = 'density', minfrac = 0.5, bw = 30, mzwid = 0.25,
              max = 100, minsamp = 1)
xsetF <- fillPeaks(xsetRT)
## camera
xsA <- annotate(xsetF, nSlaves = slaves, perfwhm = .6, calcCaS = TRUE, mzabs = 0.1,
                ppm = 100)

Further I wrote a little code to extract only the groups with a minimum number of ions, i.e. 6 ions, because using an electron ionization source, I haven't only the molecular ion, but I have a lot of fragments.

Code: [Select]
data <- getPeaklist(xsA)
data$pcgroup <- as.numeric(data$pcgroup)
(a <- which(table(data$pcgroup) >= 6))
length(a)

My intent is to replicate the deconvolution approach of AMDIS using xcms-CAMERA.

What is your opinion??
Have you ever tryed to use xcms with GC-MS data?? Which results did you obtained??

How can I improve the code I wrote to obtain better results??

Re: GC-MS Metabolomics: Supervised vs. Unsupervised Approach

Reply #1
Ricca,

I haven't played with GC-MS data on xcms that much. However, I remember a good discussion on the old forum.

https://groups.google.com/forum/?fromgr ... OPu70yYTnM

I would search through and try and pick up some parameters that work well. Maybe even take a look at the suggested setting on xcms Online.

Hope you get on well, let us know how it goes and what settings you decide to use in the end.

Cheers,

Paul
~~
H. Paul Benton
Scripps Research Institute
If you have an error with XCMS Online please send me the JOBID and submit an error via the XCMS Online contact page

 

Re: GC-MS Metabolomics: Supervised vs. Unsupervised Approach

Reply #2
Paul,
I found very interesting the discussion you suggest me, but I haven't found any suggestion about the extraction of the area of the grouped spectra. I would like to group the ions in the time domain, using their retention time, and extract them so to re-construct the EI mass spectra such to separate co-eluting peaks.
How can I use the information in the xcmsSet object?

In the xcmsSet object I have:

Code: [Select]
Time range: 153.8-3039 seconds (2.6-50.6 minutes)
Mass range: 31.1-348.7638 m/z
Peaks: 25337 (about 4223 per sample)
Peak Groups: 2004
Sample classes: crtz_VOCs

Does 'Peak Groups' contains the ions grouped according with their retention time?

Riccardo

-- EDIT --

I played with the xcms parameter and I noticed better results using the matchedFilter approach instead of centWave. This because I obtain more 'realistic' EI mass spectra with more fragment. So this are the new settings I'm using:

Code: [Select]
## xcms ##
xset <- xcmsSet(files = files[1:3], nSlaves = slaves, method = 'matchedFilter',## sleep = 3,
                snthr = 1, fwhm = 10, step = .5, steps = 2, mzdiff = 0, max = 500)
xset <- group(xset, method = 'density', bw = 30, mzwid = 1, minfrac = 1, ## sleep = 3,
                max = 500)
xsetRT <- retcor(xset, method = 'loess', family = 'gaussian')
plotrt(xsetRT, leg = FALSE, densplit = TRUE)
xsetRT <- group(xsetRT, method = 'density', bw = 10, mzwid = 1, minfrac = 1, ## sleep=5,
                max = 500)
xsetFP <- fillPeaks(xsetRT)

## camera ##
xsA <- annotate(xsetFP, nSlaves = slaves, sigma = 3, perfwhm = .06, calcCaS = TRUE, mzabs = 1,
                ppm = 100, sample = c(1:3), quick = TRUE, intval = 'maxo', max_peaks = 500,)


Re: GC-MS Metabolomics: Supervised vs. Unsupervised Approach

Reply #3
Riccardo,

Ah ok! Sorry I though you were asking before about peak detection options to extract more peaks from the EI-GCMS spectra. There was another package, Flagme (http://www.bioconductor.org/packages/2. ... lagme.html) out a few years ago now. I  haven't seen any development on it for quite some time. It maybe a nice complement to your pipeline. It uses the AMDIS peak detection. The idea behind it was that the fragments would then be combined to get a better quantitative response. I'm not sure if this information made it into the final package. It also uses a nice retention time alignment algorithm:
http://www.biomedcentral.com/1471-2105/8/419

To answer your question, the peak groups are indivisual features which have been found within a m/z rt range (box), between the files. So that is to say a feature/peak groups are a collection of peaks across files within a mz/rt box.

Hope this helps and answers the questions. Like always, let me know how you get on.

Paul
~~
H. Paul Benton
Scripps Research Institute
If you have an error with XCMS Online please send me the JOBID and submit an error via the XCMS Online contact page