1 package jalview.schemes;
3 import static org.testng.Assert.assertEquals;
5 import jalview.datamodel.Alignment;
6 import jalview.datamodel.AnnotatedCollectionI;
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceI;
9 import jalview.io.DataSourceType;
10 import jalview.io.HMMFile;
12 import java.awt.Color;
13 import java.io.IOException;
14 import java.net.MalformedURLException;
16 import org.testng.annotations.Test;
18 public class HmmerLocalBackgroundTest {
20 @Test(groups = "Functional")
21 public void testFindColour() throws MalformedURLException, IOException
23 HMMFile file = new HMMFile("test/jalview/io/test_PKinase_hmm.txt",
27 * alignment with 20 residues and background frequencies:
32 * log(totalCount) = log(20) = 2.996
34 SequenceI seq1 = new Sequence("seq1", "AAMMMKKKVV");
35 SequenceI seq2 = new Sequence("seq2", "aAM-QKRSSSL");
36 SequenceI hmmSeq = file.getSeqsAsArray()[0];
37 AnnotatedCollectionI ac = new Alignment(
39 { hmmSeq, seq1, seq2 });
40 ac.setHmmConsensus(hmmSeq);
41 ColourSchemeI scheme = new HmmerLocalBackground(ac);
44 * 'A' in column 1, node 2, match emission 2.77204
46 * background frequency is 0.15
47 * ratio is < 1, log is negative, colour is Orange
49 Color actual = scheme.findColour('A', 1, null, null, 0);
50 assertEquals(actual, Color.ORANGE);
53 actual = scheme.findColour('-', 2, null, null, 0);
54 assertEquals(actual, Color.WHITE);
55 actual = scheme.findColour(' ', 2, null, null, 0);
56 assertEquals(actual, Color.WHITE);
57 actual = scheme.findColour('.', 2, null, null, 0);
58 assertEquals(actual, Color.WHITE);
61 * 'L' in column 3, node 4, match emission 1.98342
63 * background frequency is 0.05
64 * ratio is 2.752, log is 1.012
65 * colour is graduated 1.012/2.996 or 86/255 of the way from
66 * white(255, 255, 255) to blue(0, 0, 255)
68 actual = scheme.findColour('L', 3, null, null, 0);
69 assertEquals(actual, new Color(169, 169, 255));
72 * invalid symbol is White
74 actual = scheme.findColour('X', 2, null, null, 0);
75 assertEquals(actual, Color.WHITE);