Skip to main content
Topic: Peak filling - an example of strange results (Read 4694 times) previous topic - next topic

Peak filling - an example of strange results

I have posted on this topic before, but hoping to push the conversation ahead by framing the subject a little differently.

I'm extracting lung tissue data from C18 with positive ESI on an Orbitrap. I often look at methionine's behavior, including how XCMS or similar software integrates it, compared to Thermo's Xcalibur software. This is because methionine is usually a "model metabolite" on our platform.

For this particular run, there are two "methionine" peaks that are 2-3 ppm off of the monoisotopic mass (plus the proton). One elutes sharply at 60 sec, the other a bit more broadly at 140 sec. Now for the interesting part: XCMS integrated this as 4 peaks. In my output table, they go in this order:

150.0588mz_130sec (npeaks=48 in 48 samples)
150.0588mz_88sec (npeaks=54 in 48 samples)
150.0587mz_106sec (npeaks=42 in 42 samples)
150.0587mz_66sec (npeaks=37 in 37 samples)

So first of all, I'm not sure why they go in this order in the column which is overall an ascending m/z column. Is it ordered by SNR or another metric? It can't be by m/z value, as break the overall ascending order trend in the column.

Second, which of these features is really the peaks of interest?

Finally, what am I doing wrong when I use XCMS to get twice as many peaks? Right now I am troubleshooting whether it is my setting of mzdiff=-0.001 (I am not sure where I came up with that value in the first place), and trying out -0.00005 instead.

Any help is greatly appreciated!

Re: Peak filling - an example of strange results

Reply #1
I would start by troubleshooting the group step. It can be either the m/z or the rt dimension that goes wrong. If the peaks have long tails or your parameters are bad the peaks could get cut up. Or you could have small peaks you don't see without zooming specifically.
It would be easier if you posted parameters for your processing.
You can possibly use a function I have written to understand better what is going on: http://www.metabolomics-forum.com/index.php?topic=577.msg1789#msg1789

Another problem with orbitrap data is that you can get so-called shoulder peaks or satellite peaks in the m/z dimension. If you are affected by that (look at the mass peak and zoom at low intensity around the peak. Do you see some very small noise-like mass peaks around the real peak?) you can use xcmsRaw.orbifilter from https://github.com/stanstrup/chemhelper to filter the raw data before analysis. But I don't think it is that. that usually creates a lot of peaks in the table with slightly different masses.

It looks strange that you say there is a peak at 140 s and the closest it finds is 130 sec...

I am not sure what output table you are talking about. What function generates it? If you use the one that calculates statistics I think it is ordered by p-value (not sure, never use it).
Blog: stanstrup.github.io

Re: Peak filling - an example of strange results

Reply #2
Thanks for your reply!
I would start by troubleshooting the group step. It can be either the m/z or the rt dimension that goes wrong. If the peaks have long tails or your parameters are bad the peaks could get cut up. Or you could have small peaks you don't see without zooming specifically.
It would be easier if you posted parameters for your processing.

Here are the parameters I used, any insight about anything I could be doing wrong would be helpful:
xset<-xcmsSet(method="centWave", ppm=2.5, peakwidth=c(10,60), snthr=10, mzdiff=-0.001, noise=1000, prefilter=c(3,5000))
xset<-group(xset, method="density", bw=5, mzwid=0.015, max=100, minfrac=1)
xset2<-retcor(xset, method="obiwarp", plottype="deviation")
xset2<-group(xset2, method="density", bw=5, mzwid=0.015, max=100, minfrac=0.5)
xset3<-fillpeaks(object=xset2, method="chrom")

Another problem with orbitrap data is that you can get so-called shoulder peaks or satellite peaks in the m/z dimension. If you are affected by that (look at the mass peak and zoom at low intensity around the peak. Do you see some very small noise-like mass peaks around the real peak?) you can use xcmsRaw.orbifilter from https://github.com/stanstrup/chemhelper to filter the raw data before analysis. But I don't think it is that. that usually creates a lot of peaks in the table with slightly different masses.

I really don't see anything I would deem a peak. Is Xcalibur adequate to look for this? Why is Orbi data prone to the shoulder peaks compared to other types of MS?

It looks strange that you say there is a peak at 140 s and the closest it finds is 130 sec...

I misspoke. It's really more like 133 sec in the sample file I looked at. So 130 is reasonable.

I am not sure what output table you are talking about. What function generates it? If you use the one that calculates statistics I think it is ordered by p-value (not sure, never use it).

I don't generate the stat info either. After xset3 is made, I generate a text file from the peakTable function with xset3.

fTab<-peakTable(object=xset3)
write.table(fTab, name, sep="\t", row.names=FALSE)

Re: Peak filling - an example of strange results

Reply #3
Sorry for the late reply.

The only parameter that seems a bit off to me is the ppm. Even with orbitrap that is very low. Keep in mind that all scans, even the ends of a peak, need to be within this. 10 or even 20ppm might be better.
You might also consider setting profparam but I don't think that could be your problem here (more about that here: http://www.metabolomics-forum.com/index.php?topic=598.msg1853#msg1853).

I really don't see anything I would deem a peak. Is Xcalibur adequate to look for this?
Yes. Are you looking at the mass spectra? Either there are peaks there or there is not. They are something like <5 % of the main peak if they are there so you have to zoom heavily.


Why is Orbi data prone to the shoulder peaks compared to other types of MS?
Because it is an artifact of the Fourier transformation as far as I have understood.
I have not found a paper that describes the problem in relation to orbitrap so I am not 100 % sure about the origin of the peaks. But my understanding/guess is the following:
I believe the problem is the phenomenon know as ringing (http://en.wikipedia.org/wiki/Ringing_artifacts). Other people call them ripples (I think they are discussion the same thing here http://www.shimadzu.com/an/ftir/support/tips/letter15/apodization.html). I have also seen them called simply orbitrap artifacts.
It is only visible in orbitrap data for very large peaks as small random mass peaks ~0.01 Da from the main peak.
Since these artifacts don't usually appear nicely symmetric as you would think from the pictures in the links above I assume many of them fall under some lowpass threshold during centroiding. But I guess it could also be that they are not symmetric in a complex signal. I don't know.



About the sorting: Are they more or less sorted by mz? I think that the original peak picking is sorted by mz, but not sure what happens when grouping.
Blog: stanstrup.github.io

 

Re: Peak filling - an example of strange results

Reply #4
As far as I know - the shoulder artefacts are indeed a consequence of Fourier Transformations - hence it is 'Orbitrap-related' (and FT-ICR)....