HRMS: Precursor and fragment with identical mass -> extraction fails

support
HRMS: Precursor and fragment with identical mass -> extraction fails meowcat  2023-11-14 07:35
 

I found the following issue:

  • In small molecule mode,
  • when extracting fullscan + DDA or fullscan + PRM data,
  • where we extract at least the precursor and one fragment,
  • where the precursor has the exactly same mass as the fragment

this results in no trace being extracted for the precursor.

For example,

  • adding a precursor at 192.0768 and a transition at 192.0768 -> no precursor trace extracted.
    In contrast:
  • adding a precursor at 192.0768 and no transition -> precursor trace successfully extracted
  • adding a precursor at 192.0768 and a transition at 999 -> precursor trace successfully extracted (even though there is obviously no peak at 999)
  • adding a precursor at 192.0768 and a transition at 192.0769 -> precursor trace successfully extracted
  • adding the same molecule with formula C9H9N3O2 -> precursor trace successfully extracted, but note that the precursor is maybe not precisely at 192.0768.
    Notably:
  • adding a precursor at 192.0768, and two transitions at 192.0768 and 999 -> no precursor trace extracted.

Steps to reproduce:

The precursor is successfully extracted for "Carbendazim", "Carbendazim-wfragment999", "Carbendazim-wsmallshift", "Carbendazim@45" but not successfully extracted for "Carbendazim-wfragment192".

There seems to be some masking going on?
Note: While it is probably usually not so good to use the unfragmented precursor mass in the MS2 for anything serious, it is a convenient workaround when I want the MS2 extracted but don't know any fragments already. I kind of prefer this to using an arbitrary mass.

 
 
Nick Shulman responded:  2023-11-14 08:18
Interesting.

When a Precursor in the Skyline document has two Transitions with the same product m/z, Skyline can get confused about which extracted chromatogram goes with which transition.
One of those transitions in "Carbendazim-wfragment192" was supposed to get a chromatogram which was extracted from the MS1 spectra, and the other transition was supposed to get a chromatogram extracted from the intact precursor m/z in MS2 spectra.
Skyline really did extract two separate chromatograms for those two Transitions, but, whenever Skyline wanted to find the chromatogram for that precursor transition, Skyline ended up using the MS2 chromatogram instead.

If those two Transitions had slightly different m/z values, for instance 192.0768 and 192.0769, then I think Skyline would use the correct chromatogram with the correct Transition.
-- Nick
 
meowcat responded:  2023-11-14 23:38
Yes, as I demonstrated in the uploaded document, the bug really only occurs on identical m/z.

Is this a previously known issue? Will the team look into it, or if not, do you have an idea roughly where in the code I would have to start looking?
 
Nick Shulman responded:  2023-11-14 23:58

There are a couple of methods which are responsible for deciding which chromatogram goes with which Transition:
ChromCacheBuilder.GetBestMatching
ChromatogramGroupInfo.GetBestProductIndex

The first one is used during chromatogram extraction, and the second one is responsible for deciding which chromatogram to show you on the chromatogram graph.
Both of these methods are only looking at the product m/z of the chromatogram, but, in an ideal world, they would also be looking at the "Source" which might be either "ChromSource.fragment" for an MS2 chromatogram or "ChromSource.ms1" or "ChromSource.sim" for a MS1 chromatogram.
-- Nick