Skip to main content

Topic: Inconsistent integration borders in EICs (Read 661 times) previous topic - next topic

  • NShore
  • [*]
Inconsistent integration borders in EICs
I am working on LC-MS Data (NP-HPLC-APCI-Orbitrap-MS) from PETROLEOMICS, not metabolomics, but I wish to use XCMS for deconvolution and potentially difference analysis of complex samples. (up to 4000 detected peaks, depending on parameters).

This is the session info: Spoiler (click to show/hide)

This is my current best method, which I still want to improve. *Edit: added the Profparam*
Spoiler (click to show/hide)


Right now I have a dataset of 15 runs I wish to analyse, there are three runs of the base sample, two runs of each of 4 concentrations of an added internal standard mixture, and four single runs of a concentration variation of the sample itself. My hope is to do quantification on the majority of analytes in the sample.

My issue is this: I'm seeing inconsistent integration borders in the EICs, and it results in outlier values in the integration. I've attached two images to show this phenomenon. These are not important analytes, but on other data it may happen on the main analytes. YES my data is noisy, but xcms mostly manages to find good peak borders, it just messes up a few. The issue is that I need this to work reliably, without me having to double check every peak. I'm confused where this behaviour could come from.
  • Last Edit: January 27, 2017, 06:41:22 AM by NShore
  • AC2t research GmbH

  • Jan Stanstrup
  • [*][*][*][*][*]
  • Administrator
Re: Inconsistent integration borders in EICs
Reply #1
I have no clear idea of what can help this but my first attempts would be integrate=2 and trying matchedfilter. I have had better luck with matchedfilter getting it to integrate noisy data at all.

btw.: how did you get those plots?

Another thing. You are not showing your profparam but be sure to set it to something like "list(step=0.005)". Otherwise fillpeaks might integrate a too wide EIC slice. Another thing to consider here: https://github.com/sneumann/xcms/pull/3
  • Last Edit: January 27, 2017, 06:28:32 AM by Jan Stanstrup
  • Steno Diabetes Center Copenhagen, Denmark
Blog: stanstrup.github.io

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #2
Thank you for your quick reply!

I have no clear idea of what can help this but my first attempts would be integrate=2 and trying matchedfilter. I have had better luck with matchedfilter getting it to integrate noisy data at all.
Thank you for that suggestion. I used Integrate = 1 in hopes that it would improve consistency, after using integrate=2 and no gaussian fitting produced worse results.  I will try matchedfilter.

Quote
btw.: how did you get those plots?
Those are from the differeport, I didn't add that command string because it doesn't change anything at that point.  When I use getEIC as shown in the forum in the Toolbox the results are very similar. These plots aren't showing all the traces, as I only defined two classes and they don't include all the runs.
Quote
Another thing. You are not showing your profparam but be sure to set it to something like "list(step=0.005)". Otherwise fillpeaks might integrate a too wide EIC slice.
Yes, my profparam is "profparam <- list(step = 0.01)". I tried 0.001 and it crashes the computer even with 64GB RAM. I could try 0.005, maybe that is just about manageable. Thanks!
  • AC2t research GmbH

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #3
Well, I've used Matchedfilter to try and deconvolute this data. I've tried several methods, the following seems to be the best so far:

Spoiler (click to show/hide)

It does seem to miss a lot of peaks, though, which are present in the Wavelet peak picking. (600 vs 1450 peaks.) Also it's not very confidence inspiring, when i can see that one mass has several peaks within close vicinity, and I'll find an EIC integration of only one of them. It seems to me that I'm better off with Centwave, after all.

Are there more ways to visualise intermediate steps within xcms, especially concerning peak-picking and grouping? It seems it will be quite inefficient for me to just go trial-and-error on a complex dataset with - above all - only subjective ways to evaluate the results.  But being able to visualize, say, the gaussians in the peak-picking step, or the details of the grouping step might make this a lot easier.
  • AC2t research GmbH

  • Jan Stanstrup
  • [*][*][*][*][*]
  • Administrator
Re: Inconsistent integration borders in EICs
Reply #4
I think there is a number of newer functions for useful visuals but I have not used them yet.

For the grouping step I have written a function I find useful: http://www.metabolomics-forum.com/index.php?topic=577.msg1789#msg1789

You can also see where peaks where found with that.

I am having some dependency problems with my package so it might be easier to get the function (analyze.xcms.group) directly from: https://github.com/stanstrup/chemhelper/blob/master/R/xcms_helpers.R
  • Steno Diabetes Center Copenhagen, Denmark
Blog: stanstrup.github.io

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #5
Thanks! I'll give that a try! Will also try IPO again. I've tried it once before but it always failed, maybe I can get it to work.
  • AC2t research GmbH

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #6

I am having some dependency problems with my package so it might be easier to get the function (analyze.xcms.group) directly from: https://github.com/stanstrup/chemhelper/blob/master/R/xcms_helpers.R

OK, colour me stupid... how do I use your xcms-helper.R-file? I'm only used to installing and loading packages...quick googling didn't help me. Thanks again!

  • AC2t research GmbH

  • Jan Stanstrup
  • [*][*][*][*][*]
  • Administrator
Re: Inconsistent integration borders in EICs
Reply #7
If you don't wanna try to install the package you could do:
Code: [Select]
source("https://raw.githubusercontent.com/stanstrup/chemhelper/master/R/xcms_helpers.R")


In that case you'd have to decipher the help page from here: https://github.com/stanstrup/chemhelper/blob/master/man/analyze.xcms.group.Rd
  • Steno Diabetes Center Copenhagen, Denmark
Blog: stanstrup.github.io

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #8
If you don't wanna try to install the package you could do:
Code: [Select]
source("https://raw.githubusercontent.com/stanstrup/chemhelper/master/R/xcms_helpers.R")
In that case you'd have to decipher the help page from here: https://github.com/stanstrup/chemhelper/blob/master/man/analyze.xcms.group.Rd
Yes, thank you again, I managed to install the package! Now to find out where my grouping is going wrong....
  • AC2t research GmbH

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #9
When I look into the peak list for my xcmxSet prior to diffreport generation (but I assume at all stages), I do find varying peak widths for one mass/RT combination, as in, RT will be the same, but RTmin and RTmax will differ.

Would there be a way to manually set the integration borders either to a fixed length, or to either the minimum or maximum of each peak in every group? As in, fix RTmin and RTmax prior to integration, per peak group?
  • AC2t research GmbH

  • NShore
  • [*]
Re: Inconsistent integration borders in EICs
Reply #10
More specifically, I've tried to use the retexp function to manually fix integration borders on the extracted @peaks. This works for the EICs, as shown in the two plots attached, however, the into values and rtmin/rtmax in the diffreport are unaffected. How would I make this work on actual integration values?

Also, especially rtmin/rtmax in the diffreport don't seem to correspond with anything, really, as they usually only differ by a few seconds, when they should be in the order of magnitude of 50-100 seconds for most peaks.  I'm assuming here that these simply show the spread of rtmed values within the group?
  • AC2t research GmbH