4.5 Incorporating adduct and isotopic data

With mass spectrometry it is common that multiple m/z values are detected for a single compound. These may be different adducts (e.g. [M+H]+, [M+Na]+, [M-H]-), the different isotopes of the molecule or a combination thereof. When multiple m/z values are measured for the same compound, the feature finding algorithm may yield a distinct feature for each, which adds complexity to the data. In the previous section it was discussed how componentization can help to find feature groups that belong to the same adduct and/or isotope clusters. This section explains how this data can be used to simplify the feature dataset. Furthermore, this section also covers adduct annotations for feature groups which may improve and simplify the general workflow.

4.5.1 Selecting features with preferential adducts/isotopes

The selectIons function forms the bridge between feature group and componentization data. This function uses the adduct and isotope annotations to select preferential feature groups. For adduct clusters this means that only the feature group that has a preferential adduct (e.g. [M+H]+) is kept while others (e.g. [M+Na]+) are removed. If none of the adduct annotations are considered preferential, the most intense feature group is kept instead. For isotopic clusters typically only the feature group with the monoisotopic mass (i.e. M0) is kept.

The behavior of selectIons is configurable with the following parameters:

Argument Remarks
prefAdduct The preferential adduct. Usually "[M+H]+" or "[M-H]-".
onlyMonoIso If TRUE and a feature group is with isotopic annotations then it is only kept if it is monoisotopic.
chargeMismatch How charge mismatches between adduct and isotope annotations are dealt with. Valid options are "isotope", "adduct", "none" or "ignore". See the reference manual for selectIons for more details.

In case componentization did not lead to an adduct annotation for a feature group it will never be removed and simply be annotated with the preferential adduct. Similarly, when no isotope annotations are available and onlyMonoIso=TRUE, the feature group will not be removed.

Although selectIons operates fairly conservative, it is still recommended to verify the componentization results in advance, for instance with the checkComponents function discussed here. Furthermore, the next subsection explains how adduct annotations can be corrected manually if needed.

An example usage is shown below.

fGroupsSel <- selectIons(fGroups, componCAM, "[M+H]+")
#> No isotope annotations available!
#> Removed 21 feature groups detected as unwanted adducts/isotopes
#> Annotated 13 feature groups with adducts
#>  Remaining 110 feature groups set as default adduct [M+H]+

4.5.2 Setting adduct annotations for feature groups

The adducts() function can be used to obtain a character vector with adduct annotations for each feature group. When no adduct annotations are available it will simply return an empty character vector.

When the selectIons function is used it will automatically add adduct annotations based on the componentization data. In addition, the adducts()<- function can be used to manually add or change adduct annotations.

adducts(fGroups) # no adduct annotations
#> character(0)
adducts(fGroupsSel)[1:5] # adduct annotations set by selectIons()
#> M109_R192_20 M111_R330_23 M114_R269_25 M116_R317_29 M120_R268_30 
#>     "[M+H]+"     "[M+H]+"     "[M+H]+"     "[M+H]+"     "[M+K]+"
adducts(fGroupsSel)[3] <- "[M+Na]+" # modify annotation
adducts(fGroupsSel)[1:5] # verify
#> M109_R192_20 M111_R330_23 M114_R269_25 M116_R317_29 M120_R268_30 
#>     "[M+H]+"     "[M+H]+"    "[M+Na]+"     "[M+H]+"     "[M+K]+"

NOTE Adduct annotations are always available with sets workflows.

4.5.3 Using adduct annotations in the workflow

When feature groups have adduct annotations available this may simplify and improve the workflow. The adduct and ionization arguments used for suspect screening, formula/compound annotation and some componentization algorithms do not have to be set anymore, since this data can be obtained from the adduct annotations. Furthermore, these algorithms may improve their results, since the algorithms are now able to use adduct information for each feature group individually, instead of assuming that all feature groups have the same adduct.