Isotope pattern generator for fine isotope distributions.
This algorithm implements IsotopePatternGenerator and generates theoretical pattern distributions for empirical formulas with high resolution (while the CoarseIsotopePatternGenerator will generate low-resolution patterns). The output is a list of pairs containing isotope probabilities paired with the accurate m/z for the analyte isotopic composition.
For example, for a C100H202 molecule (at 0.01 threshold), you will get:
m/z 1403.5806564438 :
INT 0.333207070827484
m/z 1404.5840114438 :
INT 0.360387712717056
m/z 1404.5869331919 :
INT 0.00774129061028361
m/z 1405.5873664438 :
INT 0.19294385612011
m/z 1405.5902881919 :
INT 0.00837276969105005
m/z 1406.5907214438 :
INT 0.0681697279214859
m/z 1406.5936431919 :
INT 0.00448260130360723
m/z 1407.5940764438 :
INT 0.0178796537220478
m/z 1407.5969981919 :
INT 0.00158376491162926
...
For comparison, the CoarseIsotopePatternGenerator will produce the following result for a C100H202 molecule:
m/z 1403.58
INT: 0.333489
m/z 1405.59
INT: 0.201576
m/z 1406.59
INT: 0.0728113
m/z 1407.59
INT: 0.0195325
...
From the above example, we can see that the CoarseIsotopePatternGenerator will generate a single peak at nominal mass 1404 which sums up the probability of both the 13C and the 2H (deuterium) peak, while the FineIsotopePatternGenerator will generate two peaks at 1404.5840 (for 13C) and at 1404.5869 (for 2H). The probabilities of 36.0% and 0.77% add up to 36.8% which is the same as the sum reported by the CoarseIsotopePatternGenerator for the nominal mass at 1404. Note that for the peak at 1405 the FineIsotopePatternGenerator only reports two out of the three probabilities due to the chosen probability cutoffs.
One important value to set is the threshold with tells the algorithm when to stop calculating isotopic peaks to calculate. The default stop condition is to stop when only a small portion (such as 0.01) of the total probability is unexplained and the reported values cover most of the probability (e.g. 0.99).
Another way to stop the search is when any new peak would be less than 0.01 in height (absolute) or when it would be less than 0.01 of the highest isotopic peak (relative). This is how the stop_condition parameter is interpreted when use_total_prob is set to false.
- Note
- Computation of fine isotope patterns can be slow for large molecules, if you don't need fine isotope distributions consider using CoarseIsotopePatternGenerator.
-
Consider using IsoSpec directly or the OpenMS IsoSpecWrapper / IsoSpecGeneratorWrapper classes defined in IsoSpecWrapper.h for increased performance since this class will sort the resuly by m/z while the wrapper will not; sorting substantially decreases performance.
The computation is based on the IsoSpec algorithm, please cite
Łącki MK, Startek M, Valkenborg D, Gambin A.
IsoSpec: Hyperfast Fine Structure Calculator.
Anal Chem. 2017 Mar 21;89(6):3272-3277. doi: 10.1021/acs.analchem.6b01459.
See also method run()