/* * Copyright (C) Lennart Martens * * Contact: lennart.martens AT UGent.be (' AT ' to be replaced with '@') */ /* * Created by IntelliJ IDEA. * User: Lennart * Date: 6-jan-03 * Time: 10:56:32 */ package com.compomics.util.test.nucleotide; import com.compomics.util.interfaces.Sequence; import com.compomics.util.nucleotide.NucleotideSequenceImpl; import com.compomics.util.protein.AASequenceImpl; import com.compomics.util.protein.Header; import com.compomics.util.protein.Protein; import junit.framework.Assert; import junit.framework.TestCase; import org.apache.log4j.Logger; import java.util.HashMap; import java.util.Vector; /* * CVS information: * * $Revision: 1.4 $ * $Date: 2007/07/06 09:41:54 $ */ /** * This class implements the test scenario for the NucleotideSequenceImpl class. * * @author Lennart Martens * @see com.compomics.util.nucleotide.NucleotideSequenceImpl */ public class TestNucleotideSequenceImpl extends TestCase { // Class specific log4j logger for TestNucleotideSequenceImpl instances. Logger logger = Logger.getLogger(TestNucleotideSequenceImpl.class); public TestNucleotideSequenceImpl() { this("Test scenario for the NucleotideSequenceImpl class."); } public TestNucleotideSequenceImpl(String aName) { super(aName); } /** * Test for the construction and reading of variables * as defined in the Sequence interface. */ public void testConstructionAndGetters() { Sequence seq = new NucleotideSequenceImpl("AGCTAGCTAGCTAGCTAG"); Assert.assertEquals("AGCTAGCTAGCTAGCTAG", seq.getSequence()); Assert.assertEquals("AGCTAGCTAGCTAGCTAG".length(), seq.getLength()); Assert.assertEquals(5523.659513, seq.getMass(), Double.MIN_VALUE*2); // Change sequence. seq.setSequence("ACTG"); Assert.assertEquals("ACTG", seq.getSequence()); Assert.assertEquals("ACTG".length(), seq.getLength()); Assert.assertEquals(1173.8434329999998, seq.getMass(), 0.0000002); // Now with lowercase. seq = new NucleotideSequenceImpl("actg"); Assert.assertEquals("ACTG", seq.getSequence()); Assert.assertEquals("ACTG".length(), seq.getLength()); Assert.assertEquals(1173.8434329999998, seq.getMass(), 0.0000002); seq.setSequence("actg"); Assert.assertEquals("ACTG", seq.getSequence()); Assert.assertEquals("ACTG".length(), seq.getLength()); Assert.assertEquals(1173.8434329999998, seq.getMass(), 0.0000002); // Now with spaces. seq = new NucleotideSequenceImpl(" actg "); Assert.assertEquals("ACTG", seq.getSequence()); Assert.assertEquals("ACTG".length(), seq.getLength()); Assert.assertEquals(1173.8434329999998, seq.getMass(), 0.0000002); seq.setSequence(" ACTG "); Assert.assertEquals("ACTG", seq.getSequence()); Assert.assertEquals("ACTG".length(), seq.getLength()); Assert.assertEquals(1173.8434329999998, seq.getMass(), 0.0000002); } /** * Test translation of DNA sequence. */ public void testTranslation() { NucleotideSequenceImpl seq = new NucleotideSequenceImpl("ATG"); AASequenceImpl[] aas = seq.translate(); Assert.assertEquals(2, aas.length); Assert.assertEquals("M", aas[0].getSequence()); seq.setSequence("GATTACATTACAGAGAGAGAGGGGATAT"); aas = seq.translate(); Assert.assertEquals(6, aas.length); Assert.assertEquals("DYITEREGI", aas[0].getSequence()); Assert.assertEquals("ITLQRERGY", aas[1].getSequence()); Assert.assertEquals("LHYRERGD", aas[2].getSequence()); Assert.assertEquals("ISPLSL_CN", aas[3].getSequence()); Assert.assertEquals("YPLSLCNVI", aas[4].getSequence()); Assert.assertEquals("IPSLSVM_", aas[5].getSequence()); // Unknown nucleotide translation into aminoacid X. seq.setSequence("GANNACATTACAGAGAGAGAGGGGATAT"); aas = seq.translate(); Assert.assertEquals(6, aas.length); Assert.assertEquals("XXITEREGI", aas[0].getSequence()); Assert.assertEquals("XTLQRERGY", aas[1].getSequence()); Assert.assertEquals(1054.043115, aas[0].getMass(), 1e-10); } /** * Test translation of DNA sequence. */ public void testTranslateToStopCodonSeparatedEntries() { // Test sequence with stop codons in sense and anti-sense. NucleotideSequenceImpl seq = new NucleotideSequenceImpl("GATTAGATAAGTACAGAGAGTAGAGGGGATATA"); Vector translations = seq.translateToStopCodonSeparatedEntries("chromX", "hum"); HashMap translationframe = (HashMap) translations.get(0); Header[] lHeaders = new Header[2]; translationframe.keySet().toArray(lHeaders); Header lHeader = null; Protein lProtein = null; String lProteinSequence = ""; String lNucleicSequence = ""; // a) first entry is "D" or "ISTESRGDI" because we're dealing with a HashMap. lHeader = lHeaders[0]; lNucleicSequence = (String) lHeader.getRest(); lProteinSequence = (String) translationframe.get(lHeader); lProtein = new Protein(lHeader, new AASequenceImpl(lProteinSequence)); Assert.assertEquals(2,translationframe.keySet().size()); Assert.assertEquals(6, translations.size()); if(lProteinSequence.equals("D")){ Assert.assertEquals("D", lProtein.getSequence().getSequence()); Assert.assertEquals("GAT", lNucleicSequence); }else{ Assert.assertEquals("ISTESRGDI", lProtein.getSequence().getSequence()); Assert.assertEquals("ATAAGTACAGAGAGTAGAGGGGATATA", lNucleicSequence); } // b) next entry in first reading frame. lHeader = lHeaders[1]; lProteinSequence = (String) translationframe.get(lHeader); lNucleicSequence = (String) lHeader.getRest(); lProtein = new Protein(lHeader, new AASequenceImpl(lProteinSequence)); if(lProteinSequence.equals("D")){ Assert.assertEquals("D", lProtein.getSequence().getSequence()); Assert.assertEquals("GAT", lNucleicSequence); }else{ Assert.assertEquals("ISTESRGDI", lProtein.getSequence().getSequence()); Assert.assertEquals("ATAAGTACAGAGAGTAGAGGGGATATA", lNucleicSequence); } // c) one and only entry in the last(5) reading frame. translationframe = (HashMap) translations.get(5); lHeaders = new Header[1]; translationframe.keySet().toArray(lHeaders); lHeader = lHeaders[0]; lProteinSequence = (String) translationframe.get(lHeader); lNucleicSequence = (String) lHeader.getRest(); lProtein = new Protein(lHeader, new AASequenceImpl(lProteinSequence)); Assert.assertEquals(1,translationframe.keySet().size()); Assert.assertEquals("YPLYSLYLSN", lProtein.getSequence().getSequence()); Assert.assertEquals("TATCCCCTCTACTCTCTGTACTTATCTAAT", lNucleicSequence); } /** * Test generation of complementary sequence. */ public void testComplement() { NucleotideSequenceImpl seq = new NucleotideSequenceImpl("ACTG"); Assert.assertEquals("CAGT", seq.getReverseComplementary()); // Standard complement. seq.setSequence("ACTTGACCGATGAATG"); Assert.assertEquals("CATTCATCGGTCAAGT", seq.getReverseComplementary()); // Unknown nucleotide complement. seq.setSequence("ACTTGACCGATGNNTG"); Assert.assertEquals("CANNCATCGGTCAAGT", seq.getReverseComplementary()); } }