sneumann / xcms

This is the git repository matching the Bioconductor package xcms: LC/MS and GC/MS Data Analysis
Other
177 stars 81 forks source link

Question about readMSData reading MSE data of Waters Q-TOF-MS #629

Closed fengmingchen closed 1 year ago

fengmingchen commented 1 year ago

Hello everyone Running my MSE data obtained by Waters Q-TOF-MS, I want to get the data of FUCTION 1 and 2 which is MS1 MS2. But the result is beyond my expectation, The obtained RAW data format onDiskMSnExp has a crazy size of 135MB.

  > table(msLevel(raw_new))

      0       1       2 
1008024  117959  112895 
> head(fData(raw_new))
           fileIdx spIdx smoothed seqNum acquisitionNum msLevel polarity
F01.S00001       1     1       NA      1              1       0       -1
F01.S00002       1     2       NA      2              2       0       -1
F01.S00003       1     3       NA      3              3       0       -1
F01.S00004       1     4       NA      4              4       0       -1
F01.S00005       1     5       NA      5              5       0       -1
F01.S00006       1     6       NA      6              6       0       -1
           originalPeaksCount totIonCurrent retentionTime basePeakMZ basePeakIntensity
F01.S00001                310             0          0.00     0.0000                 0
F01.S00002                310         -3838          0.05   198.9808               512
F01.S00003                310         -3682          0.10   198.9808               810
F01.S00004                310         -6847          0.15   198.9808               972
F01.S00005                310        -11408          0.20   210.9808               978
F01.S00006                310        -12068          0.25   210.9808              1100
           collisionEnergy ionisationEnergy lowMZ highMZ precursorScanNum precursorMZ
F01.S00001              NA                0     0      0               NA          NA
F01.S00002              NA                0     0      0               NA          NA
F01.S00003              NA                0     0      0               NA          NA
F01.S00004              NA                0     0      0               NA          NA
F01.S00005              NA                0     0      0               NA          NA
F01.S00006              NA                0     0      0               NA          NA
           precursorCharge precursorIntensity mergedScan mergedResultScanNum
F01.S00001              NA                 NA         NA                  NA
F01.S00002              NA                 NA         NA                  NA
F01.S00003              NA                 NA         NA                  NA
F01.S00004              NA                 NA         NA                  NA
F01.S00005              NA                 NA         NA                  NA
F01.S00006              NA                 NA         NA                  NA
           mergedResultStartScanNum mergedResultEndScanNum injectionTime filterString
F01.S00001                       NA                     NA             0         <NA>
F01.S00002                       NA                     NA             0         <NA>
F01.S00003                       NA                     NA             0         <NA>
F01.S00004                       NA                     NA             0         <NA>
F01.S00005                       NA                     NA             0         <NA>
F01.S00006                       NA                     NA             0         <NA>
                            spectrumId centroided ionMobilityDriftTime
F01.S00001 function=4 process=0 scan=1      FALSE                   NA
F01.S00002 function=4 process=0 scan=2      FALSE                   NA
F01.S00003 function=4 process=0 scan=3      FALSE                   NA
F01.S00004 function=4 process=0 scan=4      FALSE                   NA
F01.S00005 function=4 process=0 scan=5      FALSE                   NA
F01.S00006 function=4 process=0 scan=6      FALSE                   NA
           isolationWindowTargetMZ isolationWindowLowerOffset isolationWindowUpperOffset
F01.S00001                      NA                         NA                         NA
F01.S00002                      NA                         NA                         NA
F01.S00003                      NA                         NA                         NA
F01.S00004                      NA                         NA                         NA
F01.S00005                      NA                         NA                         NA
F01.S00006                      NA                         NA                         NA
           scanWindowLowerLimit scanWindowUpperLimit spectrum
F01.S00001                   NA                   NA        1
F01.S00002                   NA                   NA        2
F01.S00003                   NA                   NA        3
F01.S00004                   NA                   NA        4
F01.S00005                   NA                   NA        5
F01.S00006                   NA                   NA        6

Also my waters raw data was converted by MSconvert and level 1-2 was selected by Peking filter. So I'm wondering why this happens.

stanstrup commented 1 year ago

For the file you showed it clearly says that what was converted was function=4 coded with MSlevel 0... You can check your experiment file in the raw folder to figure what that is supposed to be. MSE is unpredictable in terms of msLevel. It depends on the instrument if it is coded as 1 or 2 (yes, we love Waters...). Since there is no isolation to me it is fair enough to call it msLevel 1. Is the raw_new multiple files? You probably need to investigate a bit more detailed what you have there.

Why is 135MB crazy?

level 1-2 was selected by Peking filter.

You probably want to select using the "subset" --> "scanEvent" filter instead. ScanEvent is what waters calls functions.

fengmingchen commented 1 year ago

Thank you so much for such a quick reply, I am a grad student studying your course. Thank you very much for your XCMS open course. Yes, I took your opinion on Function and set up the filter below by MSconvert.

peakpicking msLevel = 1-2
scanEvent 1-2
fengmingchen commented 1 year ago

Update: The percursor info of the ions of function=2 filtered by the Subset are all the same ion mass, which is obviously wrong. Whether the information on the parent ion of MS2 (function=2) obtained in this way is unreliable.

stanstrup commented 1 year ago

Aren't you confusing things? MSE is not MS2. There is no precursor ion in reality. I think the processor is just set to be in the middle between the min and max m/z measured.

fengmingchen commented 1 year ago

Yes, Function 2 being identified as MS2 misled me, I figured out what my problem was. Thanks for your prompt reply, compliments.