mzmine / old-mzmine3

Old development repository (outdated)
GNU General Public License v2.0
13 stars 17 forks source link

Ideas for isotope handling #109

Closed photocyte closed 8 years ago

photocyte commented 8 years ago

Given how high-resolution accurate mass instruments are becoming more common, it would be nice if isotopes were handled more discretely in MZmine3. A couple ideas below:

  1. MZmine2 currently picks isotopes in the isotope grouping module by looking in a parameter defined m/z range around the "average" neutron mass (at least that is my understanding of how the module works). In principle it is possible to look for exact isotopic differences (+15N neutron, +13C neutron etc.), which have subtle but resolvable differences in m/z on a HRAM instrument run at a "reasonable" mass resolution setting (e.g. 70,000). Ideally such isotopes, when linked to the molecular ion, would be annotated & queryable as the likely possible isotope. The set of possible isotopes or elements to look for should be definable by the user, as clearly all isotopes on the periodic table is a bit much, but restricting it to what is currently interesting to the user makes it manageable & informative. Ideally, relative abundances of discrete isotopes could be quickly computationally queried (e.g. what is the relative abundance of +15N, +3x 13C, as compared to the molecular ion), which would be very useful for stable isotope assisted metabolomics. Currently such an analysis of unusual deviations of isotopes such as in stable isotope assisted metabolomics can be preformed by not running the isotopic groping module & using the adduct search module to pick out particular isotopic peaks.
  2. Local calculation/calibration of the mass accuracy for the isotope grouping. I haven't done careful analysis of how the mass accuracy of the mass difference between isotopes is over the small m/z range of the possible isotopes (e.g. if I expect a particular isotope to be 5.012351 m/z away from the precursor mass, how accurate is this mass difference). My expectation is that it is spot on, or it will be highly amenable to calibration given the small m/z range & defined isotopes (bootstrap calibration with common or unusual isotopes such as multiple 13C / or combinations with 15N)
  3. Calibration of the divergence of isotopic ratios away from expected ratios. The relative abundances of specific isotopic as defined by chemical data sources are (I believe), based on what you might find in "rocks". Biology has some well described isotopic preferences (e.g. preference of Rubisco for C12 over C13/C14, which is the basis for C14 radioisotope dating), which may produce measurable and reproducible divergences from expected isotopic ratios as defined by chemical data sources. E.g. isotopes patterns should and may turn out to be measurably different for animal cells, yeasts, plants etc, which have greatly varying core metabolisms. If particular isotopic ions can be detected & annotated, then it should be possible to calibrate how much that particular divergences from the expected isotopic ratio (if stable isotopic tracing is not being performed which would lead to unpredictable deviations). This could lead to greater specificity with the "isotopic pattern scoring" with the chemical formula prediction. This of course should be flexible with the user as not all workflows rely on biological metabolites.
dyrlund commented 8 years ago

This topic is also being discussed in issue #50.

@photocyte Do you know of any tested algorithms which take your suggestions into account?

photocyte commented 8 years ago

Hi there, sorry I guess I missed #50, please let me know whether this issue should be closed & discussion continued on #50. With respect to preexisting algorithms, unfortunately not, I haven't seen such manipulations in other software. I can look through OpenMS and briefly search the literature to see if there is anything like this.

In the case of the calibrations (2 & 3), I'd imagine that the implementation would be workable with a variety of algorithms, if ions to calibrate against could be confidently annotated. In the case of 1) my imagination of the implementation is that where the module currently checks for peaks in a m/z defined window (+ 1 neutron), it would instead enumerate through discrete isotopes differences with a relatively small m/z window (+13C neutron, +15C neutron... +/- ~2ppm), and annotate the isotope with the appropriate identification. Then 2) might be able to do calibrate the m/z deviations of the isotopes finely, and a "isotopic gap filling module" could try and annotate missed peaks.

dyrlund commented 8 years ago

Thanks for your comments. If you have time and want to help then it would be great if you could look at preexisting algorithms. And I suggest that you move your comments to issue #50 so we keep track of this topic in one place and then close this issue.