Fragment ion m/z values are first identified within a user defined error tolerance (default 10 ppm). For each fragment ion charge state, a sequential set of isotopes whose combined predicted probability exceeds 70% must be identified, all having been matched with observed peak centroids within defined the m/z tolerance. In essence, a majority of the isotopic pattern of the theoretical fragment must be identified, otherwise the fragment is discarded. This process is represented schematically in Figure . These putative fragment ion matches are then validated based on the observed abundances of the matched centroids. If any hydrogen shifts are expected for a fragment ion, additional theoretical fragments corresponding to the hydrogen shifts are generated and matched to experimental centroids. The fragment ion and any corresponding hydrogen shifted ions are fit to the observed peak centroid abundances using a nonnegative least squares model from the nnls package. The predicted abundances for each isotope, which are calculated by multiplying the predicted probability of each theoretical isotope by the total observed peak centroid abundances matched for the entire theoretical isotopic distribution, must match the observed peak centroid abundances within a user-defined tolerance (default 25% of the predicted abundance). Fragment ion charge states that pass these validation steps are considered matches and are retained for the various outputs within the application. Outputs include a fragment ion identification list, sequence coverage and P-score calculation, and various visualizations. Proteo-SAFARI can be found at: github.com/mblanzillotti/Proteo-SAFARI.