/* * Copyright (C) Lennart Martens * * Contact: lennart.martens AT UGent.be (' AT ' to be replaced with '@') */ /* * Created by IntelliJ IDEA. * User: Lennart * Date: 8-okt-02 * Time: 15:28:41 */ package com.compomics.util.test.nucleotide; import com.compomics.util.junit.TestCaseLM; import com.compomics.util.nucleotide.NucleotideSequence; import com.compomics.util.nucleotide.NucleotideSequenceImpl; 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.io.*; /* * CVS information: * * $Revision: 1.3 $ * $Date: 2007/07/06 09:41:54 $ */ /** * This class implements the test scenario for the NucleotideSequence class. * * @author Lennart Martens * @see com.compomics.util.nucleotide.NucleotideSequence */ public class TestNucleotideSequence extends TestCase { // Class specific log4j logger for TestNucleotideSequence instances. Logger logger = Logger.getLogger(TestNucleotideSequence.class); public TestNucleotideSequence() { this("The test scenario for the NucleotideSequence class."); } public TestNucleotideSequence(String aName) { super(aName); } /** * This method test the different ways of creating a Protein instance. */ public void testConstruction() { final String sequence = "AGCTAGCTAGCTAGCTAG"; final String header = ">sw|O95229|ZWIN_HUMAN ZW10 interactor (ZW10 interacting protein-1) (Zwint-1)."; final String fasta = header + "\n" + sequence; final Header head = Header.parseFromFASTA(header); final NucleotideSequenceImpl seq = new NucleotideSequenceImpl(sequence); // First without header, just a sequence. NucleotideSequence p = new NucleotideSequence(seq); Assert.assertTrue(p.getHeader() == null); Assert.assertEquals(seq, p.getSequence()); p = new NucleotideSequence(null, seq); Assert.assertTrue(p.getHeader() == null); Assert.assertEquals(seq, p.getSequence()); p = new NucleotideSequence(null, sequence); Assert.assertTrue(p.getHeader() == null); Assert.assertEquals(sequence, p.getSequence().getSequence()); // Now with a Header. p = new NucleotideSequence(head, seq); Assert.assertEquals(head, p.getHeader()); Assert.assertEquals(seq, p.getSequence()); p = new NucleotideSequence(header, sequence); Assert.assertEquals(header, p.getHeader().toString()); Assert.assertEquals(sequence, p.getSequence().getSequence()); p = new NucleotideSequence(fasta); Assert.assertEquals(header, p.getHeader().toString()); Assert.assertEquals(sequence, p.getSequence().getSequence()); } /** * This method test the reporting by the NucleotideSequence about its length. */ public void testLength() { NucleotideSequence p = new NucleotideSequence(null, "AGCTAGCTAGCTAGCTAG"); Assert.assertTrue(p.getLength() == p.getSequence().getLength()); } /** * This method test the reporting by the NucleotideSequence about its mass. */ public void testMass() { NucleotideSequence p = new NucleotideSequence(null, "AGCTAGCTAGCTAGCTAG"); Assert.assertEquals(p.getMass(), p.getSequence().getMass(), 1e-15); } /** * This method test the FASTA printing behaviour. */ public void testPrintToFASTAFile() { final String inputFile = "fastaNucleotideFile.fas"; final String input = TestCaseLM.getFullFilePath(inputFile).replace("%20", " "); try { NucleotideSequence p1 = new NucleotideSequence(">sw|O95229|ZWIN_HUMAN ZW10 interactor (ZW10 interacting NucleotideSequence-1) (Zwint-1).\nAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAG"); NucleotideSequence p2 = new NucleotideSequence(">sw|O95230|ZWIN_HUMAN ZW10 interactor (ZW10 interacting NucleotideSequence-2) (Zwint-2).\nAGCTAGCTAGCTAGCTAGAGCTAGCTAGCTAGCTAG"); PipedReader pr = new PipedReader(); PrintWriter out = new PrintWriter(new PipedWriter(pr)); p1.writeToFASTAFile(out); p2.writeToFASTAFile(out); out.flush(); out.close(); BufferedReader br = new BufferedReader(pr); BufferedReader br2 = new BufferedReader(new FileReader(input)); String line1 = null; String line2 = null; while(((line1 = br.readLine()) != null) & ((line2 = br2.readLine()) != null)) { Assert.assertEquals(line1, line2); } // Both should have read an equal amount of lines. Assert.assertTrue(line1 == null); Assert.assertTrue(line2 == null); br.close(); br2.close(); } catch(IOException ioe) { fail("IOException while testing the writeToFASTAFile method: " + ioe.getMessage() + "."); } } /** * This method test the translation of nucleotide sequences. */ public void testTranslation() { NucleotideSequence ns = new NucleotideSequence(">sw|O95229|ZWIN_HUMAN ZW10 interactor (ZW10 interacting NucleotideSequence-1) (Zwint-1).\nGATTACATTACAGAGAGAGAGGGGATAT"); Protein[] proteins = ns.translate(); Assert.assertEquals("DYITEREGI", proteins[0].getSequence().getSequence()); Assert.assertEquals("ITLQRERGY", proteins[1].getSequence().getSequence()); Assert.assertEquals("LHYRERGD", proteins[2].getSequence().getSequence()); Assert.assertEquals("ISPLSL_CN", proteins[3].getSequence().getSequence()); Assert.assertEquals("YPLSLCNVI", proteins[4].getSequence().getSequence()); Assert.assertEquals("IPSLSVM_", proteins[5].getSequence().getSequence()); String originalAccession = ns.getHeader().getAccession(); for(int i=0;i<6;i++) { Assert.assertEquals(originalAccession + "_(RF " + (i+1) + ")", proteins[i].getHeader().getAccession()); } } }