package com.compomics.util.test.experiment; import com.compomics.util.experiment.biology.AminoAcidPattern; import com.compomics.util.experiment.biology.Ion; import com.compomics.util.experiment.biology.IonFactory; import com.compomics.util.experiment.biology.NeutralLoss; import com.compomics.util.experiment.biology.Peptide; import com.compomics.util.experiment.biology.ions.ElementaryIon; import com.compomics.util.experiment.biology.ions.PeptideFragmentIon; import com.compomics.util.experiment.biology.ions.TagFragmentIon; import com.compomics.util.experiment.identification.matches.ModificationMatch; import com.compomics.util.experiment.identification.amino_acid_tags.Tag; import junit.framework.Assert; import junit.framework.TestCase; import java.util.ArrayList; import java.util.HashMap; /** * This class compares the results of peptide fragment mass prediction with * results from protein prospector. * * @author Marc Vaudel */ public class FragmentFactoryTest extends TestCase { /** * The fragment factory. */ private IonFactory fragmentFactory = IonFactory.getInstance(); /** * The mass tolerance. */ private double tolerance = 0.01; /** * Tests the in silico fragmentation of a peptide. */ public void testPeptideFragmentation() { String sequence = "ACDEFGHIKLMNPQRSTVWY"; Peptide peptide = new Peptide(sequence, new ArrayList<ModificationMatch>()); HashMap<NeutralLoss, Integer> neutralLosses = new HashMap<NeutralLoss, Integer>(); neutralLosses.put(NeutralLoss.H2O, 3); neutralLosses.put(NeutralLoss.NH3, 9); double protonMass = ElementaryIon.proton.getTheoreticMass(); HashMap<Integer, HashMap<Integer, ArrayList<Ion>>> ions = fragmentFactory.getFragmentIons(peptide); HashMap<Integer, ArrayList<Ion>> fragmentIons = ions.get(Ion.IonType.PEPTIDE_FRAGMENT_ION.index); for (Integer subType : fragmentIons.keySet()) { for (Ion ion : fragmentIons.get(subType)) { PeptideFragmentIon peptideFragmentIon = (PeptideFragmentIon) ion; if (!peptideFragmentIon.hasNeutralLosses()) { if (peptideFragmentIon.getNumber() == 1) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 166.0624) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 208.0604) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 182.0812) < tolerance); } } else if (peptideFragmentIon.getNumber() == 2) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 147.0587) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 175.0536) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 192.0801) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 394.1397) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 368.1605) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 352.1418) < tolerance); } } else if (peptideFragmentIon.getNumber() == 3) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 262.0856) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 290.0805) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 307.1071) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 493.2085) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 467.2289) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 451.2102) < tolerance); } } else if (peptideFragmentIon.getNumber() == 4) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 391.1282) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 419.1231) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 436.1497) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 594.2558) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 568.2766) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 552.2579) < tolerance); } } else if (peptideFragmentIon.getNumber() == 5) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 538.1966) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 566.1915) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 583.2181) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 681.2879) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 655.3086) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 639.2899) < tolerance); } } else if (peptideFragmentIon.getNumber() == 6) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 595.2181) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 623.2130) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 640.2395) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 837.3890) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 811.4097) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 795.3910) < tolerance); } } else if (peptideFragmentIon.getNumber() == 7) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 732.2770) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 760.2719) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 777.2984) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 965.4476) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 939.4683) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 923.4496) < tolerance); } } else if (peptideFragmentIon.getNumber() == 8) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 845.3610) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 873.3560) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 890.3825) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1062.5003) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1036.5211) < tolerance); } } else if (peptideFragmentIon.getNumber() == 9) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 973.4560) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1001.4509) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1018.4775) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1176.5432) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1150.5640) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1134.5453) < tolerance); } } else if (peptideFragmentIon.getNumber() == 10) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1086.5401) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1114.5350) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1131.5615) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1307.5837) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1281.6045) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1265.5857) < tolerance); } } } else if (peptideFragmentIon.getNeutralLosses().size() == 1 && peptideFragmentIon.getNeutralLosses().get(0).isSameAs(NeutralLoss.H2O)) { if (peptideFragmentIon.getNumber() == 3) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 272.0700) < tolerance); } } else if (peptideFragmentIon.getNumber() == 4) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 401.1125) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 550.2660) < tolerance); } } else if (peptideFragmentIon.getNumber() == 5) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 548.1810) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 637.2980) < tolerance); } } else if (peptideFragmentIon.getNumber() == 6) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 605.2024) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 793.3991) < tolerance); } } else if (peptideFragmentIon.getNumber() == 7) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 742.2613) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 921.4517) < tolerance); } } else if (peptideFragmentIon.getNumber() == 8) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 855.3454) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1018.5105) < tolerance); } } else if (peptideFragmentIon.getNumber() == 9) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 983.4404) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1132.5534) < tolerance); } } else if (peptideFragmentIon.getNumber() == 10) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1096.5244) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1263.5939) < tolerance); } } } else if (peptideFragmentIon.getNeutralLosses().size() == 1 && peptideFragmentIon.getNeutralLosses().get(0).isSameAs(NeutralLoss.NH3)) { if (peptideFragmentIon.getNumber() == 6) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 794.3832) < tolerance); } } else if (peptideFragmentIon.getNumber() == 7) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 922.4417) < tolerance); } } else if (peptideFragmentIon.getNumber() == 8) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1019.4945) < tolerance); } } else if (peptideFragmentIon.getNumber() == 9) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 956.4295) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 984.4244) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1133.5374) < tolerance); } } else if (peptideFragmentIon.getNumber() == 10) { if (peptideFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1069.5135) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1097.5084) < tolerance); } else if (peptideFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(peptideFragmentIon.getTheoreticMass() + protonMass - 1264.5779) < tolerance); } } } } } HashMap<Integer, ArrayList<Ion>> precursorIons = ions.get(Ion.IonType.PRECURSOR_ION.index); for (Integer subType : precursorIons.keySet()) { for (Ion ion : precursorIons.get(subType)) { if (!ion.hasNeutralLosses()) { Assert.assertTrue( Math.abs(ion.getTheoreticMass() + protonMass - 2395.1322) < tolerance); } else if (ion.getNeutralLosses().size() == 1 && ion.getNeutralLosses().get(0).isSameAs(NeutralLoss.H2O)) { Assert.assertTrue( Math.abs(ion.getTheoreticMass() + protonMass - 2377.1216) < tolerance); } else if (ion.getNeutralLosses().size() == 1 && ion.getNeutralLosses().get(0).isSameAs(NeutralLoss.NH3)) { Assert.assertTrue( Math.abs(ion.getTheoreticMass() + protonMass - 2378.1056) < tolerance); } } } } /** * Tests the in silico fragmentation of a tag. */ public void testTagFragmentation() { String sequence = "ACDEFGHIKLMNPQRSTVWY"; Tag tag = new Tag(0, AminoAcidPattern.getAminoAcidPatternFromString(sequence), 0); HashMap<NeutralLoss, Integer> neutralLosses = new HashMap<NeutralLoss, Integer>(); neutralLosses.put(NeutralLoss.H2O, 3); neutralLosses.put(NeutralLoss.NH3, 9); double protonMass = ElementaryIon.proton.getTheoreticMass(); HashMap<Integer, HashMap<Integer, ArrayList<Ion>>> ions = fragmentFactory.getFragmentIons(tag); HashMap<Integer, ArrayList<Ion>> fragmentIons = ions.get(Ion.IonType.TAG_FRAGMENT_ION.index); // add the theoretical masses to the table for (Integer subType : fragmentIons.keySet()) { for (Ion ion : fragmentIons.get(subType)) { TagFragmentIon tagFragmentIon = (TagFragmentIon) ion; if (!tagFragmentIon.hasNeutralLosses()) { if (tagFragmentIon.getNumber() == 1) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 166.0624) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 208.0604) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 182.0812) < tolerance); } } else if (tagFragmentIon.getNumber() == 2) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 147.0587) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 175.0536) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 192.0801) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 394.1397) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 368.1605) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 352.1418) < tolerance); } } else if (tagFragmentIon.getNumber() == 3) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 262.0856) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 290.0805) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 307.1071) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 493.2085) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 467.2289) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 451.2102) < tolerance); } } else if (tagFragmentIon.getNumber() == 4) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 391.1282) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 419.1231) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 436.1497) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 594.2558) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 568.2766) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 552.2579) < tolerance); } } else if (tagFragmentIon.getNumber() == 5) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 538.1966) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 566.1915) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 583.2181) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 681.2879) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 655.3086) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 639.2899) < tolerance); } } else if (tagFragmentIon.getNumber() == 6) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 595.2181) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 623.2130) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 640.2395) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 837.3890) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 811.4097) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 795.3910) < tolerance); } } else if (tagFragmentIon.getNumber() == 7) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 732.2770) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 760.2719) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 777.2984) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 965.4476) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 939.4683) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 923.4496) < tolerance); } } else if (tagFragmentIon.getNumber() == 8) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 845.3610) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 873.3560) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 890.3825) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1062.5003) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1036.5211) < tolerance); } } else if (tagFragmentIon.getNumber() == 9) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 973.4560) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1001.4509) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1018.4775) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1176.5432) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1150.5640) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1134.5453) < tolerance); } } else if (tagFragmentIon.getNumber() == 10) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1086.5401) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1114.5350) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.C_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1131.5615) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.X_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1307.5837) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1281.6045) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Z_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1265.5857) < tolerance); } } } else if (tagFragmentIon.getNeutralLosses().size() == 1 && tagFragmentIon.getNeutralLosses().get(0).isSameAs(NeutralLoss.H2O)) { if (tagFragmentIon.getNumber() == 3) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 272.0700) < tolerance); } } else if (tagFragmentIon.getNumber() == 4) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 401.1125) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 550.2660) < tolerance); } } else if (tagFragmentIon.getNumber() == 5) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 548.1810) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 637.2980) < tolerance); } } else if (tagFragmentIon.getNumber() == 6) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 605.2024) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 793.3991) < tolerance); } } else if (tagFragmentIon.getNumber() == 7) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 742.2613) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 921.4517) < tolerance); } } else if (tagFragmentIon.getNumber() == 8) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 855.3454) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1018.5105) < tolerance); } } else if (tagFragmentIon.getNumber() == 9) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 983.4404) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1132.5534) < tolerance); } } else if (tagFragmentIon.getNumber() == 10) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1096.5244) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1263.5939) < tolerance); } } } else if (tagFragmentIon.getNeutralLosses().size() == 1 && tagFragmentIon.getNeutralLosses().get(0).isSameAs(NeutralLoss.NH3)) { if (tagFragmentIon.getNumber() == 6) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 794.3832) < tolerance); } } else if (tagFragmentIon.getNumber() == 7) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 922.4417) < tolerance); } } else if (tagFragmentIon.getNumber() == 8) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1019.4945) < tolerance); } } else if (tagFragmentIon.getNumber() == 9) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 956.4295) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 984.4244) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1133.5374) < tolerance); } } else if (tagFragmentIon.getNumber() == 10) { if (tagFragmentIon.getSubType() == PeptideFragmentIon.A_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1069.5135) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.B_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1097.5084) < tolerance); } else if (tagFragmentIon.getSubType() == PeptideFragmentIon.Y_ION) { Assert.assertTrue( Math.abs(tagFragmentIon.getTheoreticMass() + protonMass - 1264.5779) < tolerance); } } } } } HashMap<Integer, ArrayList<Ion>> precursorIons = ions.get(Ion.IonType.PRECURSOR_ION.index); for (Integer subType : precursorIons.keySet()) { for (Ion ion : precursorIons.get(subType)) { if (!ion.hasNeutralLosses()) { Assert.assertTrue( Math.abs(ion.getTheoreticMass() + protonMass - 2395.1322) < tolerance); } else if (ion.getNeutralLosses().size() == 1 && ion.getNeutralLosses().get(0).isSameAs(NeutralLoss.H2O)) { Assert.assertTrue( Math.abs(ion.getTheoreticMass() + protonMass - 2377.1216) < tolerance); } else if (ion.getNeutralLosses().size() == 1 && ion.getNeutralLosses().get(0).isSameAs(NeutralLoss.NH3)) { Assert.assertTrue( Math.abs(ion.getTheoreticMass() + protonMass - 2378.1056) < tolerance); } } } } }