/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * * Created on June 10, 2010 * Author: Mark Chapman */ package org.biojava.nbio.alignment; import org.biojava.nbio.core.alignment.matrices.SimpleSubstitutionMatrix; import org.biojava.nbio.core.alignment.template.SubstitutionMatrix; import org.biojava.nbio.core.exceptions.CompoundNotFoundException; import org.biojava.nbio.core.sequence.DNASequence; import org.biojava.nbio.core.sequence.compound.AminoAcidCompound; import org.biojava.nbio.core.sequence.compound.AminoAcidCompoundSet; import org.biojava.nbio.core.sequence.compound.DNACompoundSet; import org.biojava.nbio.core.sequence.compound.NucleotideCompound; import org.junit.Test; import java.io.File; import java.io.FileNotFoundException; import static org.junit.Assert.assertEquals; public class SimpleSubstitutionMatrixTest { @Test(expected=FileNotFoundException.class) public void testSimpleSubstitutionMatrixNotFound() throws FileNotFoundException { new SimpleSubstitutionMatrix<AminoAcidCompound>(AminoAcidCompoundSet.getAminoAcidCompoundSet(), new File("blosum63.txt")); } @Test public void test() throws CompoundNotFoundException { NucleotideCompound A = new DNASequence("A").getCompoundAt(1); NucleotideCompound a = new DNASequence("a").getCompoundAt(1); NucleotideCompound c = new DNASequence("c").getCompoundAt(1); SubstitutionMatrix<NucleotideCompound> matrix = new SimpleSubstitutionMatrix<NucleotideCompound>(DNACompoundSet.getDNACompoundSet(), (short)1, (short)0); assertEquals(1, (matrix.getValue(A, A))); assertEquals(1, (matrix.getValue(a, a))); assertEquals(1, (matrix.getValue(A, a))); assertEquals(0, (matrix.getValue(a, c))); } @Test() public void testSimpleSubstitutionMatrix() { SubstitutionMatrix<AminoAcidCompound> matrix = SimpleSubstitutionMatrix.getBlosum62(); assertEquals(matrix.getCompoundSet(), AminoAcidCompoundSet.getAminoAcidCompoundSet()); assertEquals(matrix.getName(), "blosum62"); assertEquals(matrix.getMaxValue(), 11); assertEquals(matrix.getMinValue(), -4); } @Test public void testSimpleSubstitutionMatrixCompoundSetOfCStringString() { DNACompoundSet dnacs = DNACompoundSet.getDNACompoundSet(); SubstitutionMatrix<NucleotideCompound> dnaTest = new SimpleSubstitutionMatrix<NucleotideCompound>(dnacs, "# Test\nA C G T\nA 5 0 0 0\nC 0 5 0 0\nG 0 0 5 0\nT 0 0 0 1\n", "DNA Test"); short[][] matrix = dnaTest.getMatrix(); assertEquals(matrix[1][1], 5); assertEquals(matrix[3][3], 1); assertEquals(matrix[3][1], 0); assertEquals(dnaTest.getMatrixAsString().substring(2,9), "A C G T"); assertEquals(dnaTest.getValue(dnacs.getCompoundForString("G"), dnacs.getCompoundForString("G")), 5); assertEquals(dnaTest.getValue(dnacs.getCompoundForString("A"), dnacs.getCompoundForString("G")), 0); } @Test public void testSimpleSubstitutionMatrixCompoundSetOfCShortShort() { SubstitutionMatrix<AminoAcidCompound> matrix = new SimpleSubstitutionMatrix<AminoAcidCompound>( AminoAcidCompoundSet.getAminoAcidCompoundSet(), (short) 5, (short) 1); assertEquals(matrix.getName(), "IDENTITY_5_1"); } @Test public void testSetDescription() { SubstitutionMatrix<AminoAcidCompound> matrix = SimpleSubstitutionMatrix.getBlosum62(); assertEquals(matrix.getDescription().substring(0, 2), "# "); matrix.setDescription("blah"); assertEquals(matrix.getDescription().substring(0, 2), "bl"); } @Test public void testSetName() { SubstitutionMatrix<AminoAcidCompound> matrix = SimpleSubstitutionMatrix.getBlosum62(); assertEquals(matrix.getName(), "blosum62"); matrix.setName("blah"); assertEquals(matrix.getName(), "blah"); } @Test public void testToString() { SubstitutionMatrix<NucleotideCompound> matrix = new SimpleSubstitutionMatrix<NucleotideCompound>( DNACompoundSet.getDNACompoundSet(), "# Test\nA C G T\nA 5 0 0 0\nC 0 5 0 0 \nG 0 0 5 0\n T 0 0 0 1\n", "DNAtest"); assertEquals(matrix.toString().substring(0,6), "# Test"); assertEquals(matrix.toString(), String.format("# Test%n A C G T%nA 5 0 0 0%nC 0 5 0 0%nG 0 0 5 0%nT 0 0 0 1%n")); } /* * Author: Daniel Cameron */ @Test public void testCaseEquivalence() { DNACompoundSet dnacs = DNACompoundSet.getDNACompoundSet(); SubstitutionMatrix<NucleotideCompound> dnaTest = new SimpleSubstitutionMatrix<NucleotideCompound>(dnacs, "# Test\nA C G T\nA 5 0 0 0\nC 0 5 0 0\nG 0 0 5 0\nT 0 0 0 1\n", "DNA Test"); @SuppressWarnings("unused") short[][] matrix = dnaTest.getMatrix(); assertEquals(dnaTest.getValue(dnacs.getCompoundForString("G"), dnacs.getCompoundForString("g")), 5); assertEquals(dnaTest.getValue(dnacs.getCompoundForString("A"), dnacs.getCompoundForString("g")), 0); assertEquals(dnaTest.getValue(dnacs.getCompoundForString("g"), dnacs.getCompoundForString("G")), 5); assertEquals(dnaTest.getValue(dnacs.getCompoundForString("g"), dnacs.getCompoundForString("A")), 0); } }