package com.compomics.util.test.experiment.sequences.digestion; import com.compomics.util.experiment.biology.Peptide; import com.compomics.util.experiment.identification.protein_sequences.ProteinSequenceIterator; import com.compomics.util.preferences.DigestionPreferences; import java.io.IOException; import java.util.ArrayList; import junit.framework.Assert; import junit.framework.TestCase; import org.xmlpull.v1.XmlPullParserException; /** * Test for the protein sequence iterator. * * @author Marc Vaudel */ public class ProteinSequenceIteratorTest extends TestCase { public void testEnzymeDigestion() throws XmlPullParserException, IOException { ArrayList<String> fixedModifications = new ArrayList<String>(); fixedModifications.add("Carbamidomethylation of C"); fixedModifications.add("Acetylation of protein N-term"); fixedModifications.add("Pyrolidone from carbamidomethylated C"); ProteinSequenceIterator iteratorNoModifications = new ProteinSequenceIterator(new ArrayList<String>()); ProteinSequenceIterator iteratorModifications = new ProteinSequenceIterator(fixedModifications); String testSequence = "TESTKCTESCTKTEST"; String testSequenceCombination = "TESTKCTJSCTKTEST"; DigestionPreferences digestionPreferences = new DigestionPreferences(); // No digestion digestionPreferences.setCleavagePreference(DigestionPreferences.CleavagePreference.wholeProtein); // No modification ArrayList<ProteinSequenceIterator.PeptideWithPosition> peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 1); Peptide peptide = peptides.get(0).getPeptide(); Assert.assertTrue(peptide.getSequence().equals(testSequence)); Assert.assertTrue(peptide.getModificationMatches() == null); // Combination peptides = iteratorNoModifications.getPeptides(testSequenceCombination, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 2); // No modification lower mass limit peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, 1734.8, null); Assert.assertTrue(peptides.size() == 0); // No modification upper mass limit peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, 1734.7); Assert.assertTrue(peptides.size() == 0); // No modification with mass limits peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, 1734.7, 1734.8); Assert.assertTrue(peptides.size() == 1); peptide = peptides.get(0).getPeptide(); Assert.assertTrue(peptide.getSequence().equals(testSequence)); Assert.assertTrue(peptide.getModificationMatches() == null); // Modifications peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 1); peptide = peptides.get(0).getPeptide(); Assert.assertTrue(peptide.getSequence().equals(testSequence)); Assert.assertTrue(peptide.getModificationMatches().size() == 3); // Unspecific digestion digestionPreferences.setCleavagePreference(DigestionPreferences.CleavagePreference.unSpecific); // No modification peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 136); // Combination peptides = iteratorNoModifications.getPeptides(testSequenceCombination, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 208); // No modification lower mass limit peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, 667.0, null); Assert.assertTrue(peptides.size() == 64); // No modification upper mass limit peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, 668.0); Assert.assertTrue(peptides.size() == 80); // No modification with mass limits peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, 667.0, 668.0); Assert.assertTrue(peptides.size() == 8); // Modifications peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 136); // Modification lower mass limit peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, 667.0, null); Assert.assertTrue(peptides.size() == 65); // Modification upper mass limit peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, null, 668.0); Assert.assertTrue(peptides.size() == 71); // Modification with mass limits peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, 667.0, 668.0); Assert.assertTrue(peptides.isEmpty()); // Modification with mass limits peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, 724.0, 725.0); Assert.assertTrue(peptides.size() == 6); // Trypsin digestion digestionPreferences = DigestionPreferences.getDefaultPreferences(); // No modification peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 6); // Combination peptides = iteratorNoModifications.getPeptides(testSequenceCombination, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 10); // No modification with mass limits peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, 770.0, 771.0); Assert.assertTrue(peptides.size() == 1); // Modifications peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 6); // Modification with mass limits peptides = iteratorModifications.getPeptides(testSequence, digestionPreferences, 867.0, 868.0); Assert.assertTrue(peptides.size() == 1); peptide = peptides.get(0).getPeptide(); Assert.assertTrue(peptide.getSequence().equals("CTESCTK")); Assert.assertTrue(peptide.getModificationMatches().size() == 3); // No missed cleavages digestionPreferences.setnMissedCleavages("Trypsin", 0); // No modification peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 3); // Semi-tryptic N digestionPreferences.setSpecificity("Trypsin", DigestionPreferences.Specificity.specificNTermOnly); // No modification peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 16); // Semi-tryptic C digestionPreferences.setSpecificity("Trypsin", DigestionPreferences.Specificity.specificCTermOnly); // No modification peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 16); // Semi-tryptic digestionPreferences.setSpecificity("Trypsin", DigestionPreferences.Specificity.semiSpecific); // No modification peptides = iteratorNoModifications.getPeptides(testSequence, digestionPreferences, null, null); Assert.assertTrue(peptides.size() == 29); } }