/* * 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 July 7, 2010 * Author: Mark Chapman */ package org.biojava.nbio.alignment; import org.biojava.nbio.core.alignment.matrices.SubstitutionMatrixHelper; import org.biojava.nbio.alignment.Alignments.PairwiseSequenceScorerType; import org.biojava.nbio.alignment.Alignments.ProfileProfileAlignerType; import org.biojava.nbio.alignment.template.GapPenalty; import org.biojava.nbio.alignment.template.GuideTreeNode; import org.biojava.nbio.core.alignment.template.SubstitutionMatrix; import org.biojava.nbio.core.exceptions.CompoundNotFoundException; import org.biojava.nbio.core.sequence.ProteinSequence; import org.biojava.nbio.core.sequence.compound.AminoAcidCompound; import org.junit.Before; import org.junit.Test; import java.util.Arrays; import java.util.List; import static org.junit.Assert.*; public class GuideTreeTest { private List<ProteinSequence> proteins; private GapPenalty gaps; private SubstitutionMatrix<AminoAcidCompound> blosum62; private GuideTree<ProteinSequence, AminoAcidCompound> tree; @Before public void setup() throws CompoundNotFoundException { proteins = Arrays.asList(new ProteinSequence[] {new ProteinSequence("ARND"), new ProteinSequence("ARND"), new ProteinSequence("HILK"), new ProteinSequence("ANDR")}); gaps = new SimpleGapPenalty((short) 2, (short) 1); blosum62 = SubstitutionMatrixHelper.getBlosum62(); tree = new GuideTree<ProteinSequence, AminoAcidCompound>(proteins, Alignments.getAllPairsScorers(proteins, PairwiseSequenceScorerType.GLOBAL_IDENTITIES, gaps, blosum62)); } @Test public void testGuideTree() { assertNotNull(tree); } @Test public void testGetAllPairsScores() { assertArrayEquals(tree.getAllPairsScores(), new double[] {4, 0, 3, 0, 3, 0}, 0.00001); } @Test public void testGetDistanceMatrix() { assertArrayEquals(tree.getDistanceMatrix(), new double[][] { {0.0, 0.0, 1.0, 0.4}, {0.0, 0.0, 1.0, 0.4}, {1.0, 1.0, 0.0, 1.0}, {0.4, 0.4, 1.0, 0.0}}); } @Test public void testGetRoot() { assertEquals(Alignments.getProgressiveAlignment(tree, ProfileProfileAlignerType.GLOBAL, gaps, blosum62).toString(), String.format("%s%n%s%n%s%n%s%n", "--ARND-", "--ARND-", "HILK---", "--A-NDR")); } @Test public void testGetScoreMatrix() { assertArrayEquals(tree.getScoreMatrix(), new double[][] { {4, 4, 0, 3}, {4, 6, 0, 3}, {0, 0, 5, 0}, {3, 3, 0, 6}}); } @Test public void testGetSequences() { List<ProteinSequence> list = tree.getSequences(); assertEquals(list.size(), 4); assertEquals(list.get(0), proteins.get(0)); assertEquals(list.get(1), proteins.get(1)); assertEquals(list.get(2), proteins.get(2)); assertEquals(list.get(3), proteins.get(3)); } @Test public void testIterator() { int i = 0; for (GuideTreeNode<ProteinSequence, AminoAcidCompound> n : tree) { switch (i++) { case 0: assertEquals(n.getName(), "1"); break; case 1: assertEquals(n.getName(), "2"); break; case 2: assertEquals(n.getName(), ""); break; case 3: assertEquals(n.getName(), "3"); break; case 4: assertEquals(n.getName(), ""); break; case 5: assertEquals(n.getName(), "4"); break; case 6: assertEquals(n.getName(), ""); break; } } } @Test public void testToString() { assertEquals("(((1:0.0,2:0.0):0.19999999999999996,3:0.8):" + "0.09999999999999998,4:0.09999999999999998)", tree.toString()); } }