JAL-2717 JAL-2668 fixes to HMMER colour scheme display names, enabled state, test...
[jalview.git] / test / jalview / schemes / HMMERColourSchemeTest.java
1 package jalview.schemes;
2
3 import static org.testng.Assert.assertEquals;
4
5 import jalview.io.DataSourceType;
6 import jalview.io.HMMFile;
7
8 import java.awt.Color;
9 import java.io.IOException;
10 import java.net.MalformedURLException;
11
12 import org.testng.annotations.Test;
13
14 public class HMMERColourSchemeTest {
15
16   @Test(groups = "Functional")
17   public void testFindColour() throws MalformedURLException, IOException
18   {
19     HMMFile file = new HMMFile("test/jalview/io/test_PKinase_hmm.txt",
20             DataSourceType.FILE);
21
22     ColourSchemeI scheme = new HMMERColourScheme(file.getHMM());
23
24     /*
25      * 'A' in column 1, node 2, match emission 2.77204
26      * e-2.77204 = 0.0625 
27      * background frequency is 0.0826
28      * ratio is 0.757, log is negative, colour is Orange
29      */
30     Color actual = scheme.findColour('A', 1, null, null, 0);
31     assertEquals(actual, Color.ORANGE);
32
33     // gap is white
34     actual = scheme.findColour('-', 2, null, null, 0);
35     assertEquals(actual, Color.WHITE);
36     actual = scheme.findColour(' ', 2, null, null, 0);
37     assertEquals(actual, Color.WHITE);
38     actual = scheme.findColour('.', 2, null, null, 0);
39     assertEquals(actual, Color.WHITE);
40
41     /*
42      * 'Y' in column 4, node 5, match emission 4.41426
43      * e-4.41426 = 0.0121 
44      * background frequency is 0.0292
45      * ratio is 0.414, log is negative, colour is Orange
46      */
47     actual = scheme.findColour('Y', 4, null, null, 0);
48     assertEquals(actual, Color.ORANGE);
49
50     /*
51      * 'M' in column 109, no matching node, colour is reddish
52      */
53     actual = scheme.findColour('M', 109, null, null, 0);
54     assertEquals(actual, new Color(230, 0, 0));
55
56     /*
57      * 'I' in column 6, node 7, match emission 1.33015
58      * e-1.33015 = 0.2644
59      * background frequency is 0.0593
60      * ratio is 4.459, log is 1.495
61      * colour is graduated 1.495/4.52 or 84/255 of the way from
62      * white(255, 255, 255) to blue(0, 0, 255)
63      */
64     actual = scheme.findColour('I', 6, null, null, 0);
65     assertEquals(actual, new Color(171, 171, 255));
66
67     /*
68      * 'V' in column 14, node 15, match emission 0.44769
69      * e-0.44769 = 0.6391
70      * background frequency is 0.0686
71      * ratio is 9.316, log is 2.232
72      * colour is graduated 2.232/4.52 or 126/255 of the way from
73      * white(255, 255, 255) to blue(0, 0, 255)
74      */
75     actual = scheme.findColour('V', 14, null, null, 0);
76     assertEquals(actual, new Color(129, 129, 255));
77
78     /*
79      * invalid symbol is White
80      */
81     actual = scheme.findColour('X', 2, null, null, 0);
82     assertEquals(actual, Color.WHITE);
83   }
84
85 }