JAL-3291 issue fixed, passing tests added
[jalview.git] / test / jalview / datamodel / HiddenMarkovModelTest.java
index d13b0bc..65241b4 100644 (file)
@@ -18,6 +18,8 @@ public class HiddenMarkovModelTest {
 
   HiddenMarkovModel hmm;
 
+  HiddenMarkovModel alignmentHmm;
+
   @BeforeClass(alwaysRun = true)
   public void setUp() throws MalformedURLException, IOException
   {
@@ -27,6 +29,12 @@ public class HiddenMarkovModelTest {
     HMMFile file = new HMMFile(new FileParse(
             "test/jalview/io/test_PKinase_hmm.txt", DataSourceType.FILE));
     hmm = file.getHMM();
+
+    // used to check if consensus sequence is automatically aligned with alignment
+    HMMFile alignmentTest = new HMMFile(
+            new FileParse("test/jalview/io/HMMAlignmentTestHMM.hmm",
+                    DataSourceType.FILE));
+    alignmentHmm = alignmentTest.getHMM();
   }
 
   @Test(groups = "Functional")
@@ -59,6 +67,8 @@ public class HiddenMarkovModelTest {
   {
     double iep = hmm.getInsertEmissionProbability(2, 'A');
     assertEquals(iep, Math.pow(Math.E, -2.68618), 0.0001d);
+    // symbol is not case-sensitive
+    assertEquals(iep, hmm.getInsertEmissionProbability(2, 'a'));
 
     iep = hmm.getInsertEmissionProbability(5, 'T');
     assertEquals(iep, Math.pow(Math.E, -2.77519), 0.0001d);
@@ -106,23 +116,21 @@ public class HiddenMarkovModelTest {
   }
   
   @Test(groups = "Functional")
-  public void testGetConsensusAtAlignColumn()
-  {
-    assertEquals(hmm.getConsensusAtAlignColumn(10), 's');
-    assertEquals(hmm.getConsensusAtAlignColumn(50), 'k');
-    hmm.setProperty(HMMFile.CONSENSUS_RESIDUE, "no");
-    assertEquals(hmm.getConsensusAtAlignColumn(100), 'l');
-    assertEquals(hmm.getConsensusAtAlignColumn(400), 'k');
-  }
-
-  @Test(groups = "Functional")
   public void testGetConsensusSequence()
   {
     SequenceI seq = hmm.getConsensusSequence();
     String subStr = seq.getSequenceAsString().substring(0, 10);
-    assertEquals(subStr, "YELLEKLGSG");
+    assertEquals(subStr, "yelleklGsG");
     subStr = seq.getSequenceAsString().substring(150, 161);
-    assertEquals(subStr, "-DLLK------");
+    assertEquals(subStr, "-dllk------");
+
+    // test to see if consensus sequence maps to alignment correctly
+    // see HMMAlignmentTest.sto for corresponding alignment file
+    SequenceI seq2 = alignmentHmm.getConsensusSequence();
+    assertEquals(seq2.getCharAt(0), '-');
+    assertEquals(seq2.getCharAt(7), '-');
+    assertEquals(seq2.getCharAt(8), 's');
+
   }
 
   /**