package jalview.schemes; import static org.testng.Assert.assertEquals; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.HMMFile; import java.awt.Color; import java.io.IOException; import java.net.MalformedURLException; import org.testng.annotations.Test; public class HmmerGlobalBackgroundTest { @Test(groups = "Functional") public void testFindColour() throws MalformedURLException, IOException { HMMFile file = new HMMFile("test/jalview/io/test_PKinase_hmm.txt", DataSourceType.FILE); SequenceI hmmSeq = file.getSeqsAsArray()[0]; AlignmentI al = new Alignment(new SequenceI[] { hmmSeq }); ColourSchemeI scheme = new HmmerGlobalBackground(al); /* * '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); // 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); 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); 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); assertEquals(actual, new Color(129, 129, 255)); /* * invalid symbol is White */ actual = scheme.findColour('X', 2, null, null, 0); assertEquals(actual, Color.WHITE); } }