test HMM annotaTION
[jalview.git] / test / jalview / analysis / AAFrequencyTest.java
index 58601a9..646412f 100644 (file)
@@ -25,15 +25,32 @@ 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;
 
 public class AAFrequencyTest
 {
+
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   @Test(groups = { "Functional" })
   public void testCalculate_noProfile()
   {
@@ -222,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);
+      }
+    }
+  }
 }