Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.schemes

File ClustalxColourSchemeTest.java

 

Code metrics

0
28
2
1
134
60
2
0.07
14
2
1

Classes

Class Line # Actions
ClustalxColourSchemeTest 14 28 2 0
1.0100%
 

Contributing tests

This file is covered by 2 tests. .

Source view

1    package jalview.schemes;
2   
3    import static org.testng.Assert.assertEquals;
4   
5    import jalview.datamodel.AlignmentI;
6    import jalview.gui.AlignFrame;
7    import jalview.io.DataSourceType;
8    import jalview.io.FileLoader;
9   
10    import java.awt.Color;
11   
12    import org.testng.annotations.Test;
13   
 
14    public class ClustalxColourSchemeTest
15    {
16    // @formatter:off
17    private static final String FASTA =
18    ">seq1\nAAANNNRQ\n" +
19    ">seq2\nAAANNNRQ\n" +
20    ">seq3\nAAANNNRQ\n" +
21    ">seq4\nAAANNNRQ\n" +
22    ">seq5\nAAANYYKQ\n" +
23    ">seq6\nAAANYYKQ\n" +
24    ">seq7\nAVKWYYKQ\n" +
25    ">seq8\nKKKWYYQQ\n" +
26    ">seq9\nKKKWWYQQ\n" +
27    ">seq0\nKKKWWWQW\n";
28    // @formatter:on
29   
 
30  1 toggle @Test(groups = "Functional")
31    public void testFindColour()
32    {
33  1 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(FASTA,
34    DataSourceType.PASTE);
35  1 AlignmentI al = af.getViewport().getAlignment();
36  1 ClustalxColourScheme cs = new ClustalxColourScheme(al, null);
37   
38    /*
39    * column 1 is 70% A which is above Clustalx threshold of 60%
40    */
41  1 Color clustalBlue = new Color(0.5f, 0.7f, 0.9f);
42  1 assertEquals(cs.findColour('A', 0, al.getSequenceAt(0)), clustalBlue);
43   
44    /*
45    * column 2 is 70% A or V which is above Clustalx threshold for group
46    */
47  1 assertEquals(cs.findColour('A', 0, al.getSequenceAt(1)), clustalBlue);
48   
49    /*
50    * column 3 is 60% A which is not above Clustalx threshold
51    * the Ks in the other rows are not in the same Clustalx group
52    */
53  1 assertEquals(cs.findColour('A', 2, al.getSequenceAt(1)), Color.white);
54   
55    /*
56    * column 4 is 60% N which is above Clustalx threshold of 50%
57    */
58  1 Color clustalGreen = new Color(0.1f, 0.8f, 0.1f);
59  1 assertEquals(cs.findColour('N', 3, al.getSequenceAt(1)), clustalGreen);
60   
61    /*
62    * column 5 is 40% N and 40% Y which fails to pass the threshold of
63    * 50% N or 85% either
64    */
65  1 assertEquals(cs.findColour('N', 4, al.getSequenceAt(1)), Color.white);
66   
67    /*
68    * column 6 is 40% N and 50% Y which fails to pass the threshold of
69    * 85% for either
70    */
71  1 assertEquals(cs.findColour('N', 5, al.getSequenceAt(1)), Color.white);
72   
73    /*
74    * column 7 is 40% R and 30% K which combine to make > 60%
75    */
76  1 Color clustalRed = new Color(0.9f, 0.2f, 0.1f);
77  1 assertEquals(cs.findColour('R', 6, al.getSequenceAt(1)), clustalRed);
78  1 assertEquals(cs.findColour('K', 6, al.getSequenceAt(7)), clustalRed);
79   
80    /*
81    * column 8 is >85% Q which qualifies K and R to be red
82    */
83  1 assertEquals(cs.findColour('R', 7, al.getSequenceAt(1)), clustalRed);
84  1 assertEquals(cs.findColour('K', 7, al.getSequenceAt(1)), clustalRed);
85   
86    // TODO more test cases; check if help documentation matches implementation
87    }
88   
89    // @formatter:on
90   
91    /**
92    * Test for colour calculation when the consensus percentage ignores gapped
93    * sequences
94    */
 
95  1 toggle @Test(groups = "Functional")
96    public void testFindColour_ignoreGaps()
97    {
98    /*
99    * CCC
100    * CCC
101    * -CC
102    * first column is 66% C (blue) including gaps
103    * or 100% C ignoring gaps
104    */
105  1 String fasta = ">seq1\nCCC\n>seq2\nccc\n>seq3\n-CC\n";
106  1 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(fasta,
107    DataSourceType.PASTE);
108  1 AlignmentI al = af.getViewport().getAlignment();
109  1 ClustalxColourScheme cs = new ClustalxColourScheme(al, null);
110   
111    /*
112    * column 1 is 66% C which is above Clustalx threshold of 60%
113    */
114  1 Color clustalBlue = ClustalxColourScheme.ClustalColour.BLUE.colour;
115  1 assertEquals(cs.findColour('C', 0, al.getSequenceAt(0)), clustalBlue);
116   
117    /*
118    * set directly to ignore gaps
119    */
120  1 cs.setIncludeGaps(false);
121  1 Color clustalPink = ClustalxColourScheme.ClustalColour.PINK.colour;
122  1 assertEquals(cs.findColour('C', 0, al.getSequenceAt(0)), clustalPink);
123   
124    /*
125    * set ignore gaps on the viewport...
126    */
127  1 cs.setIncludeGaps(true);
128  1 assertEquals(cs.findColour('C', 0, al.getSequenceAt(0)), clustalBlue);
129  1 af.getViewport().setIgnoreGapsConsensus(true, af.alignPanel);
130    // next test fails: colour scheme does not read ignore gaps flag from
131    // viewport
132    // assertEquals(cs.findColour('C', 0, al.getSequenceAt(0)), clustalPink);
133    }
134    }