Skip to main content

Topic: Howto re-integrate with new rtborders? (Read 582 times) previous topic - next topic

  • JosB
  • [*]
Howto re-integrate with new rtborders?
I'm running into a problem that must have been solved a million times but I just cannot find a solution.

I'm running lipids on C18 using APCI. For cholesterol and cholesterol esters, this results in the same ion ([M-H2O+H]+ @ m/z 369.35) because of source fragmentation. So I get ion clear peak for (free) cholesterol and a minute or two later, when the different cholesterol esters come off, I get wide, complex peak from a lot of (partially) overlapping esters, all visible at m/z 369.35 (see picture below). The first peak gets nicely integrated, the complex one obviously becomes a mess.

What I am trying to do, is to integrate the complex peak as one, so say from 4.7 - 9 min. I figured that could be done by manually change xset@groups[["rtmin"]] and -[["rtmax"]] before doing a fillpeaks. But then, only those samples get reintegrated that missed this peak in the first run. Of course, I can remove all the original integrations from xset@peaks but then I mess up all the idx numbers that are used for grouping in xset@groupidx.

Anyone here who can point me to the right direction? Cheers!
  • Utrecht University

  • Jan Stanstrup
  • [*][*][*][*][*]
  • Administrator
Re: Howto re-integrate with new rtborders?
Reply #1
One way to achieve this, I think, is to set mzdiff to something positive. That should make everything connected integrate as one. Of course this might have unwanted effects in other places.
  • Steno Diabetes Center Copenhagen, Denmark
Blog: stanstrup.github.io

  • JosB
  • [*]
Re: Howto re-integrate with new rtborders?
Reply #2
I'm integrating as:

xset <- xcmsSet(files=project.files, profmethod = "bin", method="centWave", ppm = 2,  peakwidth=c(3,10), snthresh = 10, prefilter = c(5,2e4), mzdiff = 0.003, fitgauss = TRUE, integrate = 1, BPPARAM = MulticoreParam(4,progressbar=TRUE))

so I'm already using a positive mzdiff.

I was thinking to change the rt boundaries in xset@groups, clearing out the xset@groupidx and then do a fillpeaks, leaving the original peaks intact to prevent messing up the peakidx part.  But feeding an empty list to fillpeaks() doesn't seem to be allowed.
  • Utrecht University

  • Jan Stanstrup
  • [*][*][*][*][*]
  • Administrator
Re: Howto re-integrate with new rtborders?
Reply #3
I haven't tried to manipulate it like that so I don't know.

But your peakwidth is too narrow I think if you want all in one. You have a max of 10 sec. If you want to merge all you need several minutes I assume. At least I'd try that.
  • Steno Diabetes Center Copenhagen, Denmark
Blog: stanstrup.github.io

  • JosB
  • [*]
Re: Howto re-integrate with new rtborders?
Reply #4
I need a small peakwidth because of triacylglycerols coming off around the same time as the cholesterol esters. Isobaric compounds (different combinations acyl chains that add up to the same m/z but are chromatographically separated) that elute close together. Everything is fine, except the CholE.

However, explaining the problem here, led me to a solution: what I needed was getPeaks(). One can define the peakrange (an mz range and rt range) and get the integrated peak area from the xcmsRaw object. I will replace the appropriate xset@peaks with the result from this function and that should do the trick.

Thanks .

  • Utrecht University