X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fanalysis%2FConservationTest.java;fp=test%2Fjalview%2Fanalysis%2FConservationTest.java;h=0000000000000000000000000000000000000000;hb=4f77328104498504339216829abf5ea87e2791ec;hp=fb58655be2316b2dd4c39b6c93fde563494dd435;hpb=2b8c0785318a3528e1876e8e2dd48b7d831eae69;p=jalview.git diff --git a/test/jalview/analysis/ConservationTest.java b/test/jalview/analysis/ConservationTest.java deleted file mode 100644 index fb58655..0000000 --- a/test/jalview/analysis/ConservationTest.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.analysis; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; - -import jalview.datamodel.Sequence; -import jalview.datamodel.SequenceI; -import jalview.gui.JvOptionPane; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class ConservationTest -{ - - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() - { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); - } - - @Test(groups = "Functional") - public void testRecordConservation() - { - Map resultMap = new HashMap(); - - // V is hydrophobic, aliphatic, small - Conservation.recordConservation(resultMap, "V"); - assertEquals(resultMap.get("hydrophobic").intValue(), 1); - assertEquals(resultMap.get("aliphatic").intValue(), 1); - assertEquals(resultMap.get("small").intValue(), 1); - assertEquals(resultMap.get("tiny").intValue(), 0); - assertEquals(resultMap.get("polar").intValue(), 0); - assertEquals(resultMap.get("charged").intValue(), 0); - - // now add S: not hydrophobic, small, tiny, polar, not aliphatic - Conservation.recordConservation(resultMap, "s"); - assertEquals(resultMap.get("hydrophobic").intValue(), -1); - assertEquals(resultMap.get("aliphatic").intValue(), -1); - assertEquals(resultMap.get("small").intValue(), 1); - assertEquals(resultMap.get("tiny").intValue(), -1); - assertEquals(resultMap.get("polar").intValue(), -1); - assertEquals(resultMap.get("charged").intValue(), 0); - } - - @Test(groups = "Functional") - public void testCountConservationAndGaps() - { - List seqs = new ArrayList(); - seqs.add(new Sequence("seq1", "VGnY")); // not case sensitive - seqs.add(new Sequence("seq2", "-G-y")); - seqs.add(new Sequence("seq3", "VG-Y")); - seqs.add(new Sequence("seq4", "VGNW")); - - Conservation cons = new Conservation("", seqs, 0, 50); - int[] counts = cons.countConservationAndGaps(0); - assertEquals(counts[0], 1); // conserved - assertEquals(counts[1], 1); // gap count - counts = cons.countConservationAndGaps(1); - assertEquals(counts[0], 1); - assertEquals(counts[1], 0); - counts = cons.countConservationAndGaps(2); - assertEquals(counts[0], 1); - assertEquals(counts[1], 2); - counts = cons.countConservationAndGaps(3); - assertEquals(counts[0], 0); // not conserved - assertEquals(counts[1], 0); - } - - @Test(groups = "Functional") - public void testCalculate_noThreshold() - { - List seqs = new ArrayList(); - seqs.add(new Sequence("seq1", "VGIV-N")); - seqs.add(new Sequence("seq2", "V-iL-N")); // not case sensitive - seqs.add(new Sequence("seq3", "V-IW-N")); - seqs.add(new Sequence("seq4", "VGLH-L")); - - Conservation cons = new Conservation("", 0, seqs, 0, 5); - cons.calculate(); - - /* - * column 0: all V (hydrophobic/aliphatic/small) - */ - Map colCons = cons.total[0]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 1); - assertEquals(colCons.get("small").intValue(), 1); - assertEquals(colCons.get("tiny").intValue(), 0); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), 0); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), 0); - assertEquals(colCons.get("positive").intValue(), 0); - assertEquals(colCons.get("aromatic").intValue(), 0); - - /* - * column 1: all G (hydrophobic/small/tiny) - * gaps take default value of property present - */ - colCons = cons.total[1]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), -1); - assertEquals(colCons.get("small").intValue(), 1); - assertEquals(colCons.get("tiny").intValue(), 1); - assertEquals(colCons.get("proline").intValue(), -1); - assertEquals(colCons.get("charged").intValue(), -1); - assertEquals(colCons.get("negative").intValue(), -1); - assertEquals(colCons.get("polar").intValue(), -1); - assertEquals(colCons.get("positive").intValue(), -1); - assertEquals(colCons.get("aromatic").intValue(), -1); - - /* - * column 2: I/L (aliphatic/hydrophobic), all others negatively conserved - */ - colCons = cons.total[2]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 1); - assertEquals(colCons.get("small").intValue(), 0); - assertEquals(colCons.get("tiny").intValue(), 0); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), 0); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), 0); - assertEquals(colCons.get("positive").intValue(), 0); - assertEquals(colCons.get("aromatic").intValue(), 0); - - /* - * column 3: VLWH all hydrophobic, none is tiny, negative or proline - */ - colCons = cons.total[3]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), -1); - assertEquals(colCons.get("small").intValue(), -1); - assertEquals(colCons.get("tiny").intValue(), 0); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), -1); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), -1); - assertEquals(colCons.get("positive").intValue(), -1); - assertEquals(colCons.get("aromatic").intValue(), -1); - - /* - * column 4: all gaps - counted as having all properties - */ - colCons = cons.total[4]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 1); - assertEquals(colCons.get("small").intValue(), 1); - assertEquals(colCons.get("tiny").intValue(), 1); - assertEquals(colCons.get("proline").intValue(), 1); - assertEquals(colCons.get("charged").intValue(), 1); - assertEquals(colCons.get("negative").intValue(), 1); - assertEquals(colCons.get("polar").intValue(), 1); - assertEquals(colCons.get("positive").intValue(), 1); - assertEquals(colCons.get("aromatic").intValue(), 1); - - /* - * column 5: N (small polar) and L (aliphatic hydrophobic) - * have nothing in common! - */ - colCons = cons.total[5]; - assertEquals(colCons.get("hydrophobic").intValue(), -1); - assertEquals(colCons.get("aliphatic").intValue(), -1); - assertEquals(colCons.get("small").intValue(), -1); - assertEquals(colCons.get("tiny").intValue(), 0); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), 0); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), -1); - assertEquals(colCons.get("positive").intValue(), 0); - assertEquals(colCons.get("aromatic").intValue(), 0); - } - - /** - * Test for the case whether the number of non-gapped sequences in a column - * has to be above a threshold - */ - @Test(groups = "Functional") - public void testCalculate_threshold() - { - List seqs = new ArrayList(); - seqs.add(new Sequence("seq1", "VGIV-")); - seqs.add(new Sequence("seq2", "V-iL-")); // not case sensitive - seqs.add(new Sequence("seq3", "V-IW-")); - seqs.add(new Sequence("seq4", "VGLH-")); - seqs.add(new Sequence("seq5", "VGLH-")); - - /* - * threshold 50% means a residue has to occur 3 or more times - * in a column to be counted for conservation - */ - // TODO: ConservationThread uses a value of 3 - // calculateConservation states it is the minimum number of sequences - // but it is treated as percentage threshold in calculate() ? - Conservation cons = new Conservation("", 50, seqs, 0, 4); - cons.calculate(); - - /* - * column 0: all V (hydrophobic/aliphatic/small) - */ - Map colCons = cons.total[0]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 1); - assertEquals(colCons.get("small").intValue(), 1); - assertEquals(colCons.get("tiny").intValue(), 0); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), 0); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), 0); - assertEquals(colCons.get("positive").intValue(), 0); - assertEquals(colCons.get("aromatic").intValue(), 0); - - /* - * column 1: all G (hydrophobic/small/tiny) - * gaps are ignored as not above threshold - */ - colCons = cons.total[1]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 0); - assertEquals(colCons.get("small").intValue(), 1); - assertEquals(colCons.get("tiny").intValue(), 1); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), 0); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), 0); - assertEquals(colCons.get("positive").intValue(), 0); - assertEquals(colCons.get("aromatic").intValue(), 0); - - /* - * column 2: I/L (aliphatic/hydrophobic), all others negatively conserved - */ - colCons = cons.total[2]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 1); - assertEquals(colCons.get("small").intValue(), 0); - assertEquals(colCons.get("tiny").intValue(), 0); - assertEquals(colCons.get("proline").intValue(), 0); - assertEquals(colCons.get("charged").intValue(), 0); - assertEquals(colCons.get("negative").intValue(), 0); - assertEquals(colCons.get("polar").intValue(), 0); - assertEquals(colCons.get("positive").intValue(), 0); - assertEquals(colCons.get("aromatic").intValue(), 0); - - /* - * column 3: nothing above threshold - */ - colCons = cons.total[3]; - assertTrue(colCons.isEmpty()); - - /* - * column 4: all gaps - counted as having all properties - */ - colCons = cons.total[4]; - assertEquals(colCons.get("hydrophobic").intValue(), 1); - assertEquals(colCons.get("aliphatic").intValue(), 1); - assertEquals(colCons.get("small").intValue(), 1); - assertEquals(colCons.get("tiny").intValue(), 1); - assertEquals(colCons.get("proline").intValue(), 1); - assertEquals(colCons.get("charged").intValue(), 1); - assertEquals(colCons.get("negative").intValue(), 1); - assertEquals(colCons.get("polar").intValue(), 1); - assertEquals(colCons.get("positive").intValue(), 1); - assertEquals(colCons.get("aromatic").intValue(), 1); - } - - /** - * Test the method that derives the conservation 'sequence' and the mouseover - * tooltips from the computed conservation - */ - @Test(groups = "Functional") - public void testVerdict() - { - List seqs = new ArrayList(); - seqs.add(new Sequence("seq1", "VGIVV-H")); - seqs.add(new Sequence("seq2", "VGILL-H")); - seqs.add(new Sequence("seq3", "VGIW--R")); - seqs.add(new Sequence("seq4", "VGLHH--")); - seqs.add(new Sequence("seq5", "VGLHH-R")); - seqs.add(new Sequence("seq6", "VGLHH--")); - seqs.add(new Sequence("seq7", "VGLHH-R")); - seqs.add(new Sequence("seq8", "VGLHH-R")); - - // calculate with no threshold - Conservation cons = new Conservation("", 0, seqs, 0, 6); - cons.calculate(); - // positive and negative conservation where <25% gaps in columns - cons.verdict(false, 25); - - /* - * verify conservation 'sequence' - * cols 0 fully conserved and above threshold (*) - * col 2 properties fully conserved (+) - * col 3 VLWH 1 positively and 3 negatively conserved properties - * col 4 has 1 positively conserved property, but because gap contributes a - * 'positive' for all properties, no negative conservation is counted - * col 5 is all gaps - * col 6 has 25% gaps so fails threshold test - */ - assertEquals(cons.getConsSequence().getSequenceAsString(), "**+41--"); - - /* - * verify tooltips; conserved properties are sorted alphabetically within - * positive followed by negative - */ - assertEquals( - cons.getTooltip(0), - "aliphatic hydrophobic small !aromatic !charged !negative !polar !positive !proline !tiny"); - assertEquals( - cons.getTooltip(1), - "hydrophobic small tiny !aliphatic !aromatic !charged !negative !polar !positive !proline"); - assertEquals( - cons.getTooltip(2), - "aliphatic hydrophobic !aromatic !charged !negative !polar !positive !proline !small !tiny"); - assertEquals(cons.getTooltip(3), "hydrophobic !negative !proline !tiny"); - assertEquals(cons.getTooltip(4), "hydrophobic"); - assertEquals(cons.getTooltip(5), ""); - assertEquals(cons.getTooltip(6), ""); - } -}