JAL-2717 JAL-2668 fixes to HMMER colour scheme display names, enabled state, test...
[jalview.git] / test / jalview / schemes / HMMERColourSchemeTest.java
index f411708..9d8093d 100644 (file)
@@ -3,7 +3,6 @@ package jalview.schemes;
 import static org.testng.Assert.assertEquals;
 
 import jalview.io.DataSourceType;
-import jalview.io.FileParse;
 import jalview.io.HMMFile;
 
 import java.awt.Color;
@@ -13,40 +12,74 @@ import java.net.MalformedURLException;
 import org.testng.annotations.Test;
 
 public class HMMERColourSchemeTest {
-  HMMERColourScheme scheme = new HMMERColourScheme();
 
-  @Test
+  @Test(groups = "Functional")
   public void testFindColour() throws MalformedURLException, IOException
   {
+    HMMFile file = new HMMFile("test/jalview/io/test_PKinase_hmm.txt",
+            DataSourceType.FILE);
 
-    HMMFile file = new HMMFile(new FileParse(
-            "test/jalview/io/test_PKinase_hmm.txt", DataSourceType.FILE));
-
-    scheme.hmm = file.getHMM();
-    Color expected;
+    ColourSchemeI scheme = new HMMERColourScheme(file.getHMM());
 
+    /*
+     * 'A' in column 1, node 2, match emission 2.77204
+     * e-2.77204 = 0.0625 
+     * background frequency is 0.0826
+     * ratio is 0.757, log is negative, colour is Orange
+     */
     Color actual = scheme.findColour('A', 1, null, null, 0);
     assertEquals(actual, Color.ORANGE);
 
-    actual = scheme.findColour('Y', 3, null, null, 0);
+    // gap is white
+    actual = scheme.findColour('-', 2, null, null, 0);
+    assertEquals(actual, Color.WHITE);
+    actual = scheme.findColour(' ', 2, null, null, 0);
+    assertEquals(actual, Color.WHITE);
+    actual = scheme.findColour('.', 2, null, null, 0);
+    assertEquals(actual, Color.WHITE);
+
+    /*
+     * 'Y' in column 4, node 5, match emission 4.41426
+     * e-4.41426 = 0.0121 
+     * background frequency is 0.0292
+     * ratio is 0.414, log is negative, colour is Orange
+     */
+    actual = scheme.findColour('Y', 4, null, null, 0);
     assertEquals(actual, Color.ORANGE);
 
+    /*
+     * 'M' in column 109, no matching node, colour is reddish
+     */
     actual = scheme.findColour('M', 109, null, null, 0);
-    expected = new Color(230, 0, 0);
-    assertEquals(actual, expected);
-
+    assertEquals(actual, new Color(230, 0, 0));
+
+    /*
+     * 'I' in column 6, node 7, match emission 1.33015
+     * e-1.33015 = 0.2644
+     * background frequency is 0.0593
+     * ratio is 4.459, log is 1.495
+     * colour is graduated 1.495/4.52 or 84/255 of the way from
+     * white(255, 255, 255) to blue(0, 0, 255)
+     */
     actual = scheme.findColour('I', 6, null, null, 0);
-    expected = new Color(171, 171, 255);
-    assertEquals(actual, expected);
-
+    assertEquals(actual, new Color(171, 171, 255));
+
+    /*
+     * 'V' in column 14, node 15, match emission 0.44769
+     * e-0.44769 = 0.6391
+     * background frequency is 0.0686
+     * ratio is 9.316, log is 2.232
+     * colour is graduated 2.232/4.52 or 126/255 of the way from
+     * white(255, 255, 255) to blue(0, 0, 255)
+     */
     actual = scheme.findColour('V', 14, null, null, 0);
-    expected = new Color(129, 129, 255);
-    assertEquals(actual, expected);
+    assertEquals(actual, new Color(129, 129, 255));
 
-    actual = scheme.findColour('X', 100000000, null, null, 0);
+    /*
+     * invalid symbol is White
+     */
+    actual = scheme.findColour('X', 2, null, null, 0);
     assertEquals(actual, Color.WHITE);
-
-
   }
 
 }