/* * Copyright (C) Lennart Martens * * Contact: lennart.martens AT UGent.be (' AT ' to be replaced with '@') */ /** * Created by IntelliJ IDEA. * User: Lennart * Date: 28-sep-2003 * Time: 11:30:42 */ package com.compomics.util.test.protein; import com.compomics.util.protein.DualEnzyme; import com.compomics.util.protein.Enzyme; import com.compomics.util.protein.Protein; import junit.framework.Assert; import junit.framework.TestCase; import org.apache.log4j.Logger; /* * CVS information: * * $Revision: 1.3 $ * $Date: 2007/07/06 09:41:54 $ */ /** * This class implements the test scenario for the dualenzyme class. * * @author Lennart Martens */ public class TestDualEnzyme extends TestCase { // Class specific log4j logger for TestDualEnzyme instances. Logger logger = Logger.getLogger(TestDualEnzyme.class); public TestDualEnzyme() { this("Test scenario for the DualEnzyme class."); } public TestDualEnzyme(String aName) { super(aName); } /** * This method test the constructor and the accessors. */ public void testCreationAndAccessors() { final String nterms = "NTERM"; DualEnzyme de = new DualEnzyme("TestEnzyme", nterms, "C", "P", "Cterm", 1); Assert.assertEquals("TestEnzyme", de.getTitle()); String cleavage = new String(de.getCleavage()); Assert.assertTrue(cleavage.indexOf("N") >= 0 && cleavage.indexOf("M") < cleavage.length()-2); Assert.assertTrue(cleavage.indexOf("T") >= 0 && cleavage.indexOf("M") < cleavage.length()-2); Assert.assertTrue(cleavage.indexOf("E") >= 0 && cleavage.indexOf("M") < cleavage.length()-2); Assert.assertTrue(cleavage.indexOf("R") >= 0 && cleavage.indexOf("M") < cleavage.length()-2); Assert.assertTrue(cleavage.indexOf("M") >= 0 && cleavage.indexOf("M") < cleavage.length()-2); Assert.assertTrue(cleavage.indexOf("X") == 5); Assert.assertTrue(cleavage.indexOf("C") == 6); Assert.assertEquals(1, de.getRestrict().length); Assert.assertEquals('P', de.getRestrict()[0]); Assert.assertEquals(1, de.getMiscleavages()); Assert.assertEquals(DualEnzyme.CTERM, de.getPosition()); Assert.assertEquals(1, de.getCleavage(DualEnzyme.CTERMINAL).length); Assert.assertEquals('C', de.getCleavage(DualEnzyme.CTERMINAL)[0]); Assert.assertEquals(nterms.length(), de.getCleavage(DualEnzyme.NTERMINAL).length); String s = new String(de.getCleavage(DualEnzyme.NTERMINAL)); for(int i=0;i<nterms.length();i++) { Assert.assertTrue(s.indexOf(nterms.charAt(i)) >= 0); } } /** * This method test the validation of the 'terminus' flag in 'setCleavage' and * 'getCleavage' */ public void testTerminusValidation() { final String nterms = "NTERM"; DualEnzyme de = new DualEnzyme("TestEnzyme", nterms, "C", "P", "Cterm", 1); // Both should work fine. de.setCleavage("K", DualEnzyme.NTERMINAL); Assert.assertEquals(1, de.getCleavage(DualEnzyme.NTERMINAL).length); Assert.assertEquals('K', de.getCleavage(DualEnzyme.NTERMINAL)[0]); de.setCleavage("W", DualEnzyme.CTERMINAL); Assert.assertEquals(1, de.getCleavage(DualEnzyme.CTERMINAL).length); Assert.assertEquals('W', de.getCleavage(DualEnzyme.CTERMINAL)[0]); // Now the wrong kind. try { de.setCleavage("K", -1); fail("No IllegalArgumentException thrown when confronting DualEnzyme with a cleavable position of '-1' in 'setCleavage(int aTerminal)'!"); } catch(IllegalArgumentException iae) { // Okay! } try { de.setCleavage("K", 2); fail("No IllegalArgumentException thrown when confronting DualEnzyme with a cleavable position of '2' in 'setCleavage(int aTerminal)'!"); } catch(IllegalArgumentException iae) { // Okay! } try { de.getCleavage(-1); fail("No IllegalArgumentException thrown when confronting DualEnzyme with a cleavable position of '-1' in 'getCleavage(int aTerminal)'!"); } catch(IllegalArgumentException iae) { // Okay! } try { de.getCleavage(2); fail("No IllegalArgumentException thrown when confronting DualEnzyme with a cleavable position of '2' in 'getCleavage(int aTerminal)'!"); } catch(IllegalArgumentException iae) { // Okay! } } /** * This method test the 'oldCleave' method of the DualEnzyme. */ public void testOldCleave() { // Cterm enzyme, 0 missed cleavages. DualEnzyme de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 0); Protein[] p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(1, p.length); Assert.assertEquals("KLMTR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(23, p[0].getHeader().getEndLocation()); // Cterm enzyme, 1 missed cleavage. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(2, p.length); Assert.assertEquals("KLMTR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(23, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMTRVW", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(25, p[1].getHeader().getEndLocation()); // Nterm enzyme, 0 missed cleavages. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Nterm", 0); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(1, p.length); Assert.assertEquals("DKLMT", p[0].getSequence().getSequence()); Assert.assertEquals(18, p[0].getHeader().getStartLocation()); Assert.assertEquals(22, p[0].getHeader().getEndLocation()); // Nterm enzyme, 2 missed cleavages. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Nterm", 2); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTRVWRGHF")); Assert.assertEquals(3, p.length); Assert.assertEquals("DKLMT", p[0].getSequence().getSequence()); Assert.assertEquals(18, p[0].getHeader().getStartLocation()); Assert.assertEquals(22, p[0].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRVW", p[1].getSequence().getSequence()); Assert.assertEquals(18, p[1].getHeader().getStartLocation()); Assert.assertEquals(25, p[1].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRVWRGHF", p[2].getSequence().getSequence()); Assert.assertEquals(18, p[2].getHeader().getStartLocation()); Assert.assertEquals(29, p[2].getHeader().getEndLocation()); // Add some restrictors to a Cterm cleavage. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTRPVWRGHF")); Assert.assertEquals(2, p.length); Assert.assertEquals("KLMTRPVWR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(27, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMTRPVWRGHF", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(30, p[1].getHeader().getEndLocation()); // Add some restrictors to an Nterm cleavage. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Nterm", 1); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTRPVWRGHF")); Assert.assertEquals(2, p.length); Assert.assertEquals("DKLMTRPVW", p[0].getSequence().getSequence()); Assert.assertEquals(18, p[0].getHeader().getStartLocation()); Assert.assertEquals(26, p[0].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRPVWRGHF", p[1].getSequence().getSequence()); Assert.assertEquals(18, p[1].getHeader().getStartLocation()); Assert.assertEquals(30, p[1].getHeader().getEndLocation()); // Nested occurrence, 0 missed cleavages. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 0); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMDTGKRVWRGHF")); Assert.assertEquals(2, p.length); Assert.assertEquals("KLMDTGKR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(26, p[0].getHeader().getEndLocation()); Assert.assertEquals("TGKR", p[1].getSequence().getSequence()); Assert.assertEquals(23, p[1].getHeader().getStartLocation()); Assert.assertEquals(26, p[1].getHeader().getEndLocation()); // Nested occurrence, 1 missed cleavage. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMDTGKRVWRGHF")); Assert.assertEquals(4, p.length); Assert.assertEquals("KLMDTGKR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(26, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKRVWR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(29, p[1].getHeader().getEndLocation()); Assert.assertEquals("TGKR", p[2].getSequence().getSequence()); Assert.assertEquals(23, p[2].getHeader().getStartLocation()); Assert.assertEquals(26, p[2].getHeader().getEndLocation()); Assert.assertEquals("TGKRVWR", p[3].getSequence().getSequence()); Assert.assertEquals(23, p[3].getHeader().getStartLocation()); Assert.assertEquals(29, p[3].getHeader().getEndLocation()); // Nested occurrence, 2 missed cleavages. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 2); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMDTGKRVWRGHF")); Assert.assertEquals(6, p.length); Assert.assertEquals("KLMDTGKR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(26, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKRVWR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(29, p[1].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKRVWRGHF", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(32, p[2].getHeader().getEndLocation()); Assert.assertEquals("TGKR", p[3].getSequence().getSequence()); Assert.assertEquals(23, p[3].getHeader().getStartLocation()); Assert.assertEquals(26, p[3].getHeader().getEndLocation()); Assert.assertEquals("TGKRVWR", p[4].getSequence().getSequence()); Assert.assertEquals(23, p[4].getHeader().getStartLocation()); Assert.assertEquals(29, p[4].getHeader().getEndLocation()); Assert.assertEquals("TGKRVWRGHF", p[5].getSequence().getSequence()); Assert.assertEquals(23, p[5].getHeader().getStartLocation()); Assert.assertEquals(32, p[5].getHeader().getEndLocation()); // Consecutive occurrence, 0 missed cleavages. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 0); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTGKRVDWRGHF")); Assert.assertEquals(2, p.length); Assert.assertEquals("KLMTGKR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(25, p[0].getHeader().getEndLocation()); Assert.assertEquals("WR", p[1].getSequence().getSequence()); Assert.assertEquals(28, p[1].getHeader().getStartLocation()); Assert.assertEquals(29, p[1].getHeader().getEndLocation()); // Consecutive occurrence, 1 missed cleavage. de = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = de.oldCleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the oldCleave() method.", "FGHDKLMTGKRVDWRGHF")); Assert.assertEquals(4, p.length); Assert.assertEquals("KLMTGKR", p[0].getSequence().getSequence()); Assert.assertEquals(19, p[0].getHeader().getStartLocation()); Assert.assertEquals(25, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMTGKRVDWR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(29, p[1].getHeader().getEndLocation()); Assert.assertEquals("WR", p[2].getSequence().getSequence()); Assert.assertEquals(28, p[2].getHeader().getStartLocation()); Assert.assertEquals(29, p[2].getHeader().getEndLocation()); Assert.assertEquals("WRGHF", p[3].getSequence().getSequence()); Assert.assertEquals(28, p[3].getHeader().getStartLocation()); Assert.assertEquals(32, p[3].getHeader().getEndLocation()); } /** * This method test the 'cleave()' method of the DualEnzyme. */ public void testCleave() { // Simple case, C-terminal cleavage, 0 missed cleavages. Enzyme dual = new DualEnzyme("TestEnzyme", "D", "R", "P", "Cterm", 0); Protein[] p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(3, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[0].getHeader().getAccession()); Assert.assertEquals("KLMTR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(23, p[1].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[1].getHeader().getAccession()); Assert.assertEquals("VW", p[2].getSequence().getSequence()); Assert.assertEquals(24, p[2].getHeader().getStartLocation()); Assert.assertEquals(25, p[2].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[2].getHeader().getAccession()); // Same simple case, C-terminal cleavage, 1 missed cleavages. dual = new DualEnzyme("TestEnzyme", "D", "R", "P", "Cterm", 1); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(4, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[0].getHeader().getAccession()); Assert.assertEquals("KLMTR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(23, p[1].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[1].getHeader().getAccession()); Assert.assertEquals("KLMTRVW", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(25, p[2].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[2].getHeader().getAccession()); Assert.assertEquals("VW", p[3].getSequence().getSequence()); Assert.assertEquals(24, p[3].getHeader().getStartLocation()); Assert.assertEquals(25, p[3].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[3].getHeader().getAccession()); // Simple case, N-terminal cleavage, 0 missed cleavages. dual = new DualEnzyme("TestEnzyme", "D", "R", "P", "Nterm", 0); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(3, p.length); Assert.assertEquals("FGH", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(17, p[0].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[0].getHeader().getAccession()); Assert.assertEquals("DKLMT", p[1].getSequence().getSequence()); Assert.assertEquals(18, p[1].getHeader().getStartLocation()); Assert.assertEquals(22, p[1].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[1].getHeader().getAccession()); Assert.assertEquals("RVW", p[2].getSequence().getSequence()); Assert.assertEquals(23, p[2].getHeader().getStartLocation()); Assert.assertEquals(25, p[2].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[2].getHeader().getAccession()); // Same simple case, N-terminal cleavage, 1 missed cleavages. dual = new DualEnzyme("TestEnzyme", "D", "R", "P", "Nterm", 1); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRVW")); Assert.assertEquals(4, p.length); Assert.assertEquals("FGH", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(17, p[0].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[0].getHeader().getAccession()); Assert.assertEquals("DKLMT", p[1].getSequence().getSequence()); Assert.assertEquals(18, p[1].getHeader().getStartLocation()); Assert.assertEquals(22, p[1].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[1].getHeader().getAccession()); Assert.assertEquals("DKLMTRVW", p[2].getSequence().getSequence()); Assert.assertEquals(18, p[2].getHeader().getStartLocation()); Assert.assertEquals(25, p[2].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[2].getHeader().getAccession()); Assert.assertEquals("RVW", p[3].getSequence().getSequence()); Assert.assertEquals(23, p[3].getHeader().getStartLocation()); Assert.assertEquals(25, p[3].getHeader().getEndLocation()); Assert.assertEquals("Q55645", p[3].getHeader().getAccession()); // Nterm enzyme, 2 missed cleavages. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Nterm", 2); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRVWRGHF")); Assert.assertEquals(5, p.length); Assert.assertEquals("FGH", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(17, p[0].getHeader().getEndLocation()); Assert.assertEquals("DKLMT", p[1].getSequence().getSequence()); Assert.assertEquals(18, p[1].getHeader().getStartLocation()); Assert.assertEquals(22, p[1].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRVW", p[2].getSequence().getSequence()); Assert.assertEquals(18, p[2].getHeader().getStartLocation()); Assert.assertEquals(25, p[2].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRVWRGHF", p[3].getSequence().getSequence()); Assert.assertEquals(18, p[3].getHeader().getStartLocation()); Assert.assertEquals(29, p[3].getHeader().getEndLocation()); Assert.assertEquals("RVWRGHF", p[4].getSequence().getSequence()); Assert.assertEquals(23, p[4].getHeader().getStartLocation()); Assert.assertEquals(29, p[4].getHeader().getEndLocation()); // Add some restrictors to a Cterm cleavage. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRPVWRGHF")); Assert.assertEquals(4, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMTRPVWR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(27, p[1].getHeader().getEndLocation()); Assert.assertEquals("KLMTRPVWRGHF", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(30, p[2].getHeader().getEndLocation()); Assert.assertEquals("GHF", p[3].getSequence().getSequence()); Assert.assertEquals(28, p[3].getHeader().getStartLocation()); Assert.assertEquals(30, p[3].getHeader().getEndLocation()); // Add some restrictors to an Nterm cleavage. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Nterm", 1); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTRPVWRGHF")); Assert.assertEquals(4, p.length); Assert.assertEquals("FGH", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(17, p[0].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRPVW", p[1].getSequence().getSequence()); Assert.assertEquals(18, p[1].getHeader().getStartLocation()); Assert.assertEquals(26, p[1].getHeader().getEndLocation()); Assert.assertEquals("DKLMTRPVWRGHF", p[2].getSequence().getSequence()); Assert.assertEquals(18, p[2].getHeader().getStartLocation()); Assert.assertEquals(30, p[2].getHeader().getEndLocation()); Assert.assertEquals("RGHF", p[3].getSequence().getSequence()); Assert.assertEquals(27, p[3].getHeader().getStartLocation()); Assert.assertEquals(30, p[3].getHeader().getEndLocation()); // Nested occurrence, 0 missed cleavages. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 0); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMDTGKRVWRGHF")); Assert.assertEquals(5, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(26, p[1].getHeader().getEndLocation()); Assert.assertEquals("KLMD", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(22, p[2].getHeader().getEndLocation()); Assert.assertEquals("TGKR", p[3].getSequence().getSequence()); Assert.assertEquals(23, p[3].getHeader().getStartLocation()); Assert.assertEquals(26, p[3].getHeader().getEndLocation()); Assert.assertEquals("VWRGHF", p[4].getSequence().getSequence()); Assert.assertEquals(27, p[4].getHeader().getStartLocation()); Assert.assertEquals(32, p[4].getHeader().getEndLocation()); // Nested occurrence, 1 missed cleavage. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMDTGKRVWRGHF")); Assert.assertEquals(7, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(26, p[1].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKRVWR", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(29, p[2].getHeader().getEndLocation()); Assert.assertEquals("KLMD", p[3].getSequence().getSequence()); Assert.assertEquals(19, p[3].getHeader().getStartLocation()); Assert.assertEquals(22, p[3].getHeader().getEndLocation()); Assert.assertEquals("TGKR", p[4].getSequence().getSequence()); Assert.assertEquals(23, p[4].getHeader().getStartLocation()); Assert.assertEquals(26, p[4].getHeader().getEndLocation()); Assert.assertEquals("TGKRVWR", p[5].getSequence().getSequence()); Assert.assertEquals(23, p[5].getHeader().getStartLocation()); Assert.assertEquals(29, p[5].getHeader().getEndLocation()); Assert.assertEquals("VWRGHF", p[6].getSequence().getSequence()); Assert.assertEquals(27, p[6].getHeader().getStartLocation()); Assert.assertEquals(32, p[6].getHeader().getEndLocation()); // Nested occurrence, 2 missed cleavages. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 2); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMDTGKRVWRGHF")); Assert.assertEquals(9, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(26, p[1].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKRVWR", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(29, p[2].getHeader().getEndLocation()); Assert.assertEquals("KLMDTGKRVWRGHF", p[3].getSequence().getSequence()); Assert.assertEquals(19, p[3].getHeader().getStartLocation()); Assert.assertEquals(32, p[3].getHeader().getEndLocation()); Assert.assertEquals("KLMD", p[4].getSequence().getSequence()); Assert.assertEquals(19, p[4].getHeader().getStartLocation()); Assert.assertEquals(22, p[4].getHeader().getEndLocation()); Assert.assertEquals("TGKR", p[5].getSequence().getSequence()); Assert.assertEquals(23, p[5].getHeader().getStartLocation()); Assert.assertEquals(26, p[5].getHeader().getEndLocation()); Assert.assertEquals("TGKRVWR", p[6].getSequence().getSequence()); Assert.assertEquals(23, p[6].getHeader().getStartLocation()); Assert.assertEquals(29, p[6].getHeader().getEndLocation()); Assert.assertEquals("TGKRVWRGHF", p[7].getSequence().getSequence()); Assert.assertEquals(23, p[7].getHeader().getStartLocation()); Assert.assertEquals(32, p[7].getHeader().getEndLocation()); Assert.assertEquals("VWRGHF", p[8].getSequence().getSequence()); Assert.assertEquals(27, p[8].getHeader().getStartLocation()); Assert.assertEquals(32, p[8].getHeader().getEndLocation()); // Consecutive occurrence, 0 missed cleavages. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 0); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTGKRVDWRGHF")); Assert.assertEquals(5, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMTGKR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(25, p[1].getHeader().getEndLocation()); Assert.assertEquals("VD", p[2].getSequence().getSequence()); Assert.assertEquals(26, p[2].getHeader().getStartLocation()); Assert.assertEquals(27, p[2].getHeader().getEndLocation()); Assert.assertEquals("WR", p[3].getSequence().getSequence()); Assert.assertEquals(28, p[3].getHeader().getStartLocation()); Assert.assertEquals(29, p[3].getHeader().getEndLocation()); Assert.assertEquals("GHF", p[4].getSequence().getSequence()); Assert.assertEquals(30, p[4].getHeader().getStartLocation()); Assert.assertEquals(32, p[4].getHeader().getEndLocation()); // Consecutive occurrence, 1 missed cleavage. dual = new DualEnzyme("TestDualEnzyme", "D", "R", "P", "Cterm", 1); p = dual.cleave(new Protein(">sw|Q55645 (15-45)|TEST_HUMAN Test Protein for the cleave() method.", "FGHDKLMTGKRVDWRGHF")); Assert.assertEquals(7, p.length); Assert.assertEquals("FGHD", p[0].getSequence().getSequence()); Assert.assertEquals(15, p[0].getHeader().getStartLocation()); Assert.assertEquals(18, p[0].getHeader().getEndLocation()); Assert.assertEquals("KLMTGKR", p[1].getSequence().getSequence()); Assert.assertEquals(19, p[1].getHeader().getStartLocation()); Assert.assertEquals(25, p[1].getHeader().getEndLocation()); Assert.assertEquals("KLMTGKRVDWR", p[2].getSequence().getSequence()); Assert.assertEquals(19, p[2].getHeader().getStartLocation()); Assert.assertEquals(29, p[2].getHeader().getEndLocation()); Assert.assertEquals("VD", p[3].getSequence().getSequence()); Assert.assertEquals(26, p[3].getHeader().getStartLocation()); Assert.assertEquals(27, p[3].getHeader().getEndLocation()); Assert.assertEquals("WR", p[4].getSequence().getSequence()); Assert.assertEquals(28, p[4].getHeader().getStartLocation()); Assert.assertEquals(29, p[4].getHeader().getEndLocation()); Assert.assertEquals("WRGHF", p[5].getSequence().getSequence()); Assert.assertEquals(28, p[5].getHeader().getStartLocation()); Assert.assertEquals(32, p[5].getHeader().getEndLocation()); Assert.assertEquals("GHF", p[6].getSequence().getSequence()); Assert.assertEquals(30, p[6].getHeader().getStartLocation()); Assert.assertEquals(32, p[6].getHeader().getEndLocation()); } /** * This method test the cloning of an Enzyme. */ public void testClone() { DualEnzyme e = new DualEnzyme("Test", "D", "R", "P", "Cterm", 5); DualEnzyme clone = (DualEnzyme)e.clone(); Assert.assertEquals(new String(e.getCleavage()), new String(clone.getCleavage())); Assert.assertEquals(new String(e.getCleavage(DualEnzyme.NTERMINAL)), new String(clone.getCleavage(DualEnzyme.NTERMINAL))); Assert.assertEquals(new String(e.getCleavage(DualEnzyme.CTERMINAL)), new String(clone.getCleavage(DualEnzyme.CTERMINAL))); Assert.assertEquals(e.getMiscleavages(), clone.getMiscleavages()); Assert.assertEquals(e.getPosition(), clone.getPosition()); Assert.assertEquals(new String(e.getRestrict()), new String(clone.getRestrict())); Assert.assertEquals(e.getTitle(), clone.getTitle()); // Get a cleaved set of peptides from a sequence. final Protein p = new Protein(">Test protein.\nLEDNARTMARTENS"); Protein[] controlCleave = e.cleave(p); // Get a cleaved set from the clone. Protein[] cloneCleave = clone.cleave(p); // Compare the sets. They should be identical. for(int i = 0; i < cloneCleave.length; i++) { Assert.assertEquals(controlCleave[i], cloneCleave[i]); } // Now change the clone and see if the original changes. clone.setCleavage("G", DualEnzyme.NTERMINAL); clone.setCleavage("W", DualEnzyme.CTERMINAL); clone.setMiscleavages(1); clone.setPosition(DualEnzyme.NTERM); clone.setRestrict("L"); clone.setTitle("Clone"); // Clone should have changed. Assert.assertEquals(1, clone.getCleavage(DualEnzyme.NTERMINAL).length); Assert.assertEquals('G', clone.getCleavage(DualEnzyme.NTERMINAL)[0]); Assert.assertEquals(1, clone.getCleavage(DualEnzyme.CTERMINAL).length); Assert.assertEquals('W', clone.getCleavage(DualEnzyme.CTERMINAL)[0]); Assert.assertEquals(1, clone.getMiscleavages()); Assert.assertEquals(DualEnzyme.NTERM, clone.getPosition()); Assert.assertEquals("L", new String(clone.getRestrict())); Assert.assertEquals("Clone", clone.getTitle()); // Original should remain the same. Assert.assertEquals(1, e.getCleavage(DualEnzyme.NTERMINAL).length); Assert.assertEquals('D', e.getCleavage(DualEnzyme.NTERMINAL)[0]); Assert.assertEquals(1, e.getCleavage(DualEnzyme.CTERMINAL).length); Assert.assertEquals('R', e.getCleavage(DualEnzyme.CTERMINAL)[0]); Assert.assertEquals(5, e.getMiscleavages()); Assert.assertEquals(DualEnzyme.CTERM, e.getPosition()); Assert.assertEquals("P", new String(e.getRestrict())); Assert.assertEquals("Test", e.getTitle()); } /** * This method test whether the isEnzymatic product method functions. */ public void testIsProduct() { // C-terminal cleavage. DualEnzyme e = new DualEnzyme("Test", "D", "KR", "P", "Cterm", 1); Protein p = new Protein(">Test Protein.\nFFFFGHDTSWPRGHFDEAQCCVRPTGHL"); // Annotated String with human-readable indices. // F F F F G H D T S W P R G H F D E A Q C C V R P T G H L // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 // A non-enzymatic product by sequence and subsequently by (human readable!) indices. Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), "WPRG")); Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), 10, 13)); // A half enzymatic sequence (N-terminal), also with the true N-terminus included. Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), "TSWP")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), 8, 11)); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), "FFFFG")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), 1, 5)); // A half enzymatic sequence (C-terminal), also with the true C-terminus included. Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), "DTSWPR")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), 7, 12)); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), "PTGHL")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct(p.getSequence().getSequence(), 24, 28)); // Check the correct behaviour when multiple occurrences take place. Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct("LGHJKLIGHKL", "GH")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("GHJKLIGHKL", "GH")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("FTTDGHJKLIGHKL", "GH")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("FTTGRLIGRPL", "GR")); Assert.assertEquals(DualEnzyme.FULLY_ENZYMATIC, e.isEnzymaticProduct("FTTDGKLIGRPL", "GK")); // Now check the correct handling of restriction locations. Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct("LGHDPHVVGRPLMM", "PHVVGR")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("LGHDHVVGRPLMM", "HVVGR")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("HVVGRPLMM", "HVVGR")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LGHDPHVVGR", "PHVVGR")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LGHDPHVVGRLMM", "PHVVGR")); Assert.assertEquals(DualEnzyme.FULLY_ENZYMATIC, e.isEnzymaticProduct("LGHDHVVGRLMM", "HVVGR")); // N-terminal cleavage. e = new DualEnzyme("Test2", "D", "R", "P", "Nterm", 1); // A non-enzymatic product. Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct("DARVAL", "ARVA")); Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct("DARVAL", 2, 5)); // A half enzymatic sequence (N-terminal), also with the true N-terminus included. Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("LLDARVAL", "DARV")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("LLDARVAL", 3, 6)); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("ARVAL", "ARV")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("ARVAL", 1, 3)); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("DARVAL", "DARV")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("DARVAL", 1, 4)); // A half enzymatic sequence (C-terminal), also with the true C-terminus included. Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LLDARVAL", "LDA")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LLDARVAL", 2, 4)); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LLRARAL", "RAL")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LLRARAL", 5, 7)); // Check the correct behaviour when multiple occurrences take place. Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct("LLKARVALGHGHGLKARVRAL", "LKARV")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("GHDARVALGHKARVAL", "DARV")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("RLKARVALGHGHLKARPAL", "LKA")); Assert.assertEquals(DualEnzyme.FULLY_ENZYMATIC, e.isEnzymaticProduct("LLDARVALGHGHLKARPAL", "DA")); // Now check the correct handling of restriction locations. Assert.assertEquals(DualEnzyme.ENTIRELY_NOT_ENZYMATIC, e.isEnzymaticProduct("LGHDPHVVGRPLMM", "DPHVVG")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("LGHDHVVGRPLMM", "DHVVG")); Assert.assertEquals(DualEnzyme.N_TERM_ENZYMATIC, e.isEnzymaticProduct("HVVGRPLMM", "HVVG")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LGHRPHVVGR", "RPHVVG")); Assert.assertEquals(DualEnzyme.C_TERM_ENZYMATIC, e.isEnzymaticProduct("LGHRPHVVGRLMM", "RPHVVG")); Assert.assertEquals(DualEnzyme.FULLY_ENZYMATIC, e.isEnzymaticProduct("LGHDHVVGRLMM", "DHVVG")); // Test exception handling. try { e.isEnzymaticProduct("LENNARTMARTENS", "FILIBERKE"); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence 'FILIBERKE' in 'LENNARTMARTENS' for 'isEnzymaticProduct(String, String)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", "FILIBERKE"); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence 'FILIBERKE' in 'LENNARTMARTENS' for 'isEnzymaticProduct(String, String)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", -1, 12); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence indices (-1, 12) and 'LENNARTMARTENS' for 'isEnzymaticProduct(String, int, int)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", 1, -1); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence indices (1, -1) and 'LENNARTMARTENS' for 'isEnzymaticProduct(String, int, int)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", 3, 2); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence indices (3, 2) and 'LENNARTMARTENS' for 'isEnzymaticProduct(String, int, int)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", 3, 3); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence indices (3, 3) and 'LENNARTMARTENS' for 'isEnzymaticProduct(String, int, int)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", 6, 15); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence indices (6, 15) and 'LENNARTMARTENS' (last char at 14) for 'isEnzymaticProduct(String, int, int)'!"); } catch(IllegalArgumentException iae) { // Perfect. } try { e.isEnzymaticProduct("LENNARTMARTENS", 6, 129); fail("No IllegalArgumentException thrown when confronting an Enzyme with subsequence indices (6, 129) and 'LENNARTMARTENS' (last char at 14) for 'isEnzymaticProduct(String, int, int)'!"); } catch(IllegalArgumentException iae) { // Perfect. } } }