X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FComparisonTest.java;h=99c097fb4a3e252492a8d1ae4410f83e0ef9b4f0;hb=6125140c3ea968b79423882d1191a897af9d76be;hp=6f6841ddefecc1ae87fd9c816ff3f995fd6e9f6d;hpb=b0f76adef2787dd14566525e66a4073278e75d67;p=jalview.git diff --git a/test/jalview/util/ComparisonTest.java b/test/jalview/util/ComparisonTest.java index 6f6841d..99c097f 100644 --- a/test/jalview/util/ComparisonTest.java +++ b/test/jalview/util/ComparisonTest.java @@ -24,13 +24,15 @@ import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import jalview.bin.Cache; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; import jalview.gui.JvOptionPane; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - public class ComparisonTest { @@ -41,6 +43,12 @@ public class ComparisonTest JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } + @BeforeMethod(alwaysRun = true) + public void loadProperties() + { + Cache.loadProperties("test/jalview/util/comparisonTestProps.jvprops"); + } + @Test(groups = { "Functional" }) public void testIsGap() { @@ -60,23 +68,41 @@ public class ComparisonTest @Test(groups = { "Functional" }) public void testIsNucleotide_sequences() { - SequenceI seq = new Sequence("eightypercent", "agctuAGCPV"); + SequenceI seq = new Sequence("eightypercent+fivepercent", "agctuagcPV"); + assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); + assertFalse( + Comparison.isNucleotide(new SequenceI[][] + { new SequenceI[] { seq } })); + + seq = new Sequence("eightyfivepercent+tenpercent", + "agctuagcgVagctuagcuVE"); assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); - assertFalse(Comparison.isNucleotide(new SequenceI[][] { new SequenceI[] - { seq } })); - seq = new Sequence("eightyfivepercent", "agctuAGCPVagctuAGCUV"); + seq = new Sequence(">nineyfivepercent+0percent", + "aagctuagcgEagctuagcua"); assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); - seq = new Sequence("nineypercent", "agctuAGCgVagctuAGCUV"); + seq = new Sequence("nineyfivepercent+0percent", "agctuagcgEagctuagcua"); + assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); + + seq = new Sequence("nineyfivepercent+fivepercent", + "agctuagcgWagctuagcua"); assertTrue(Comparison.isNucleotide(new SequenceI[] { seq })); + seq = new Sequence("nineyfivepercent+tenpercent", + "agctuagcgEWWctuagcua"); + assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); + + seq = new Sequence("eightyfivepercent+fifteenpercent", + "agctuagcgWWWctuagcua"); + assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); + seq = new Sequence("eightyfivepercentgapped", "--agc--tuA--GCPV-a---gct-uA-GC---UV"); assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); - seq = new Sequence("nineypercentgapped", - "ag--ct-u-A---GC---g----Vag--c---tuAGCUV"); + seq = new Sequence("ninetyfivepercentgapped", + "ag--ct-u-a---gc---g----aag--c---tuagcuV"); assertTrue(Comparison.isNucleotide(new SequenceI[] { seq })); seq = new Sequence("allgap", "---------"); @@ -85,24 +111,32 @@ public class ComparisonTest seq = new Sequence("DNA", "ACTugGCCAG"); SequenceI seq2 = new Sequence("Protein", "FLIMVSPTYW"); /* - * 90% DNA: + * 90% DNA but one protein sequence - expect false */ - assertTrue(Comparison.isNucleotide(new SequenceI[] { seq, seq, seq, - seq, seq, seq, seq, seq, seq, seq2 })); - assertTrue(Comparison.isNucleotide(new SequenceI[][] { - new SequenceI[] { seq }, new SequenceI[] { seq, seq, seq }, - new SequenceI[] { seq, seq, seq, seq, seq, seq2 } })); + assertFalse( + Comparison.isNucleotide(new SequenceI[] + { seq, seq, seq, seq, seq, seq, seq, seq, seq, seq2 })); + assertFalse( + Comparison.isNucleotide(new SequenceI[][] + { new SequenceI[] { seq }, new SequenceI[] { seq, seq, seq }, + new SequenceI[] + { seq, seq, seq, seq, seq, seq2 } })); /* - * 80% DNA: + * 80% DNA but one protein sequence - Expect false */ - assertFalse(Comparison.isNucleotide(new SequenceI[] { seq, seq, seq, - seq, seq, seq, seq, seq, seq2, seq2 })); - assertFalse(Comparison.isNucleotide(new SequenceI[][] { new SequenceI[] - { seq }, new SequenceI[] { seq, seq, seq }, - new SequenceI[] { seq, seq, seq, seq, seq2, seq2, null } })); - - seq = new Sequence("ProteinThatLooksLikeDNA", "WYATGCCTGAgtcgt"); - // 12/14 = 85.7% + assertFalse( + Comparison.isNucleotide(new SequenceI[] + { seq, seq, seq, seq, seq, seq, seq, seq, seq2, seq2 })); + assertFalse( + Comparison.isNucleotide(new SequenceI[][] + { new SequenceI[] { seq }, new SequenceI[] { seq, seq, seq }, + new SequenceI[] + { seq, seq, seq, seq, seq2, seq2, null } })); + + String seqString = "aaatatatatgEcctgagtcgt"; + seq = new Sequence("ShortProteinThatLooksLikeDNA", seqString); + assertFalse(Comparison.isNucleotide(new SequenceI[] { seq })); + seq = new Sequence("LongProteinThatLooksLikeDNA", seqString.repeat(10)); assertTrue(Comparison.isNucleotide(new SequenceI[] { seq })); assertFalse(Comparison.isNucleotide((SequenceI[]) null)); @@ -158,6 +192,25 @@ public class ComparisonTest assertFalse(Comparison.isNucleotide('P')); } + @Test(groups = { "Functional" }) + public void testIsNucleotideAmbiguity() + { + assertTrue(Comparison.isNucleotide('b', true)); + assertTrue(Comparison.isNucleotide('B', true)); + assertTrue(Comparison.isNucleotide('d', true)); + assertTrue(Comparison.isNucleotide('V', true)); + assertTrue(Comparison.isNucleotide('M', true)); + assertTrue(Comparison.isNucleotide('s', true)); + assertTrue(Comparison.isNucleotide('W', true)); + assertTrue(Comparison.isNucleotide('x', true)); + assertTrue(Comparison.isNucleotide('Y', true)); + assertTrue(Comparison.isNucleotide('r', true)); + assertTrue(Comparison.isNucleotide('i', true)); + assertFalse(Comparison.isNucleotide('-', true)); + assertFalse(Comparison.isNucleotide('n', true)); + assertFalse(Comparison.isNucleotide('P', true)); + } + /** * Test the percentage identity calculation for two sequences */ @@ -199,6 +252,30 @@ public class ComparisonTest assertFalse(Comparison.isNucleotideSequence("aAgGcCtTuUx", false)); assertTrue(Comparison.isNucleotideSequence("a A-g.GcCtTuU", true)); assertFalse(Comparison.isNucleotideSequence("a A-g.GcCtTuU", false)); + assertFalse(Comparison.isNucleotideSequence("gatactawgataca", false)); + // including nucleotide ambiguity + assertTrue( + Comparison.isNucleotideSequence("gatacaWgataca", true, true)); + assertFalse( + Comparison.isNucleotideSequence("gatacaEgataca", true, true)); + + // not quite all nucleotides and ambiguity codes + Sequence seq = new Sequence("Ambiguity DNA codes", "gatacagatacabve"); + assertFalse(Comparison.isNucleotide(seq)); + // all nucleotide and nucleotide ambiguity codes + seq = new Sequence("Ambiguity DNA codes", "gatacagatacabvt"); + assertFalse(Comparison.isNucleotide(seq)); + seq = new Sequence("Ambiguity DNA codes", "agatacabb"); + assertFalse(Comparison.isNucleotide(seq)); + // 55% nucleotide with only Xs or Ns + assertTrue(Comparison + .isNucleotide(new Sequence("dnaWithXs", "gatacaXXXX"))); + assertTrue(Comparison + .isNucleotide(new Sequence("dnaWithXs", "gatacaNNNN"))); + assertFalse(Comparison + .isNucleotide(new Sequence("dnaWithXs", "gatacXXXXX"))); + assertFalse(Comparison + .isNucleotide(new Sequence("dnaWithXs", "gatacNNNNN"))); } @Test(groups = { "Functional" }) @@ -212,4 +289,23 @@ public class ComparisonTest assertFalse(Comparison.isSameResidue('a', 'A', true)); assertFalse(Comparison.isSameResidue('A', 'a', true)); } + + @Test(groups = { "Functional" }) + public void testNucleotideProportion() + { + assertFalse(Comparison.myShortSequenceNucleotideProportionCount(2, 3)); + assertTrue(Comparison.myShortSequenceNucleotideProportionCount(3, 3)); + assertFalse(Comparison.myShortSequenceNucleotideProportionCount(2, 4)); + assertTrue(Comparison.myShortSequenceNucleotideProportionCount(3, 4)); + assertFalse( + Comparison.myShortSequenceNucleotideProportionCount(17, 20)); + assertTrue(Comparison.myShortSequenceNucleotideProportionCount(18, 20)); + assertFalse( + Comparison.myShortSequenceNucleotideProportionCount(38, 50)); + assertTrue(Comparison.myShortSequenceNucleotideProportionCount(39, 50)); + assertFalse( + Comparison.myShortSequenceNucleotideProportionCount(54, 100)); + assertTrue( + Comparison.myShortSequenceNucleotideProportionCount(55, 100)); + } }