sneumann / xcms

This is the git repository matching the Bioconductor package xcms: LC/MS and GC/MS Data Analysis

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

precusor charge for each features

13479776 opened this issue · comments

Hi, All
I would like to request about the method used in xcms for precusor charge detection for each features. I can open the @featureData@data[["precursorCharge"]] in XCMSnExp object. There are many 0 or NA. My question is how to get more precursorCharge and got the precursorCharge for each feature?

Thanks very much
Hees

The information of the precursor charge is extracted from the mzML files. If the mzML file(s) provide this information it can be extracted with the precursorCharge() functions (.e.g. precursorCharge(xdata) where xdata is a xcms result object) - but this then returns one value for every spectrum in the data set.

If with features you mean the LC-MS features that get defined through the xcms preprocessing (i.e. as a result from the correspondence analysis with the groupChromPeaks() function): for these there is no precursor charge defined/available, because these represent quantified signal in MS1 - the precursor charge will only be available for MS2 spectra (that define the precursor m/z, precursor intensity and precursor charge). If you have LC-MS/MS data, you can get the fragment (MS2) spectra for each feature using the featureSpectra() function. This should return a Spectra object with the MS2 spectra, and on these you can use the precursorMz(), precursorCharge() and precursorIntensity() function to extract the relevant information.

Hi jorainer

Very well explained. Thanks. I know that the precusor charge can be obtained only when the MS/MS spectra is available. My question is, is it possible to obtain a precusor charge when there is no MS/MS spectra available? we can set in the orbitrap instrument to filter out certain ions depending on the number of precusor charges, which means the precusor charge can be obtained without MS/MS spectra?

Best wishes,
Hees

that's a good question - I guess it depends whether the Thermo software stores that information also in the raw data files and whether this is then also available in the mzML file. Maybe have a look at all columns that are available in your (XCMSnExp) object's fData() (i.e. calling fData(object) |> head(). maybe some information is stored in another mzML field/column of this data.frame other than "precursorCharge"? this data frame contains all information we (can) retrieve from the mzML files.

Also, if you can't find any information, maybe re-evaluate the conversion from raw to mzML files - maybe some of this information got lost during that conversion? but I'm not familiar with Thermo data, so I can't be of any help there.