All tandem MS spectra were averaged offline in QualBrowser and exported to a single scan .raw file. These spectra were read directly into R utilizing the rawrr package. distributions for intact precursors and fragment ions were generated using the IsoSpecR package based on chemical formulae derived from a corresponding sequence input. Sequence input employs a modified IDT nomenclature which enables specification of any post-transcriptional modifications on the nitrogenous base, backbone, or sugar with the ability to specify modifications on an individual carbon with the ribose or deoxyribose. Spectra were searched directly in the m/z domain requiring an average tolerance of 10 ppm for an entire isotopic distribution. Hydrogen shifts were modeled first by searching for hydrogen losses within 5 ppm of the lowest identified m/z peak, and contributions of each fragment were determined by least squares regression. Furthermore, the isotopic abundances were required to match predicted values within 3% of the total abundance of the distribution to be considered a matched fragment. The custom R code utilized for fragment identification can be found at: .