test HMM annotaTION
[jalview.git] / test / jalview / analysis / AAFrequencyTest.java
index 75fb39e..646412f 100644 (file)
@@ -25,11 +25,18 @@ import static org.testng.AssertJUnit.assertNull;
 
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Annotation;
+import jalview.datamodel.HiddenMarkovModel;
 import jalview.datamodel.ProfileI;
 import jalview.datamodel.ProfilesI;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
+import jalview.io.FileParse;
+import jalview.io.HMMFile;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
 
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -232,4 +239,45 @@ public class AAFrequencyTest
     assertEquals("T 75%", ann.description);
     assertEquals("T", ann.displayCharacter);
   }
+
+  @Test(groups = { "Functional" })
+  public void testGetHMMProfileFor()
+          throws MalformedURLException, IOException
+  {
+
+    HMMFile hmmFile = new HMMFile(new FileParse(
+            "test/jalview/io/test_MADE1_hmm.txt", DataSourceType.FILE));
+    hmmFile.parse();
+    HiddenMarkovModel hmm = hmmFile.getHMM();
+    AlignmentAnnotation aa = hmm.createAnnotation(80);
+    aa.setHMM(hmm);
+
+    int[] expected = { 0, 4, 100, 'T', 71, 'C', 12, 'G', 9, 'A', 9 };
+    int[] actual = AAFrequency.getHMMProfileFor(aa, 17, false);
+    for (int i = 0; i < actual.length; i++)
+    {
+      if (i == 2)
+      {
+        assertEquals(actual[i], expected[i], 5);
+      }
+      else
+      {
+        assertEquals(actual[i], expected[i], 1);
+      }
+    }
+
+    int[] expected2 = { 0, 4, 85, 'A', 85, 'C', 0, 'G', 0, 'T', 0 };
+    int[] actual2 = AAFrequency.getHMMProfileFor(aa, 2, true);
+    for (int i = 0; i < actual.length; i++)
+    {
+      if (i == 2)
+      {
+        assertEquals(actual[i], expected[i], 5);
+      }
+      else
+      {
+        assertEquals(actual[i], expected[i], 1);
+      }
+    }
+  }
 }