JAL-1685 tests added for ambiguity codes (including failing test for R)
[jalview.git] / test / jalview / schemes / ResiduePropertiesTest.java
1 package jalview.schemes;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNull;
5
6 import org.junit.Test;
7
8 public class ResiduePropertiesTest
9 {
10
11   /**
12    * Test 'standard' codon translations (no ambiguity codes)
13    */
14   @Test
15   public void testCodonTranslate()
16   {
17     // standard translation table order column 1/2/3/4
18     assertEquals("F", ResidueProperties.codonTranslate("TTT"));
19     assertEquals("F", ResidueProperties.codonTranslate("TTC"));
20     assertEquals("L", ResidueProperties.codonTranslate("TTA"));
21     assertEquals("L", ResidueProperties.codonTranslate("TTG"));
22     assertEquals("L", ResidueProperties.codonTranslate("CTT"));
23     assertEquals("L", ResidueProperties.codonTranslate("CTC"));
24     assertEquals("L", ResidueProperties.codonTranslate("CTA"));
25     assertEquals("L", ResidueProperties.codonTranslate("CTG"));
26     assertEquals("I", ResidueProperties.codonTranslate("ATT"));
27     assertEquals("I", ResidueProperties.codonTranslate("ATC"));
28     assertEquals("I", ResidueProperties.codonTranslate("ATA"));
29     assertEquals("M", ResidueProperties.codonTranslate("ATG"));
30     assertEquals("V", ResidueProperties.codonTranslate("GTT"));
31     assertEquals("V", ResidueProperties.codonTranslate("GTC"));
32     assertEquals("V", ResidueProperties.codonTranslate("GTA"));
33     assertEquals("V", ResidueProperties.codonTranslate("GTG"));
34     assertEquals("S", ResidueProperties.codonTranslate("TCT"));
35     assertEquals("S", ResidueProperties.codonTranslate("TCC"));
36     assertEquals("S", ResidueProperties.codonTranslate("TCA"));
37     assertEquals("S", ResidueProperties.codonTranslate("TCG"));
38     assertEquals("P", ResidueProperties.codonTranslate("CCT"));
39     assertEquals("P", ResidueProperties.codonTranslate("CCC"));
40     assertEquals("P", ResidueProperties.codonTranslate("CCA"));
41     assertEquals("P", ResidueProperties.codonTranslate("CCG"));
42     assertEquals("T", ResidueProperties.codonTranslate("ACT"));
43     assertEquals("T", ResidueProperties.codonTranslate("ACC"));
44     assertEquals("T", ResidueProperties.codonTranslate("ACA"));
45     assertEquals("T", ResidueProperties.codonTranslate("ACG"));
46     assertEquals("A", ResidueProperties.codonTranslate("GCT"));
47     assertEquals("A", ResidueProperties.codonTranslate("GCC"));
48     assertEquals("A", ResidueProperties.codonTranslate("GCA"));
49     assertEquals("A", ResidueProperties.codonTranslate("GCG"));
50     assertEquals("Y", ResidueProperties.codonTranslate("TAT"));
51     assertEquals("Y", ResidueProperties.codonTranslate("TAC"));
52     assertEquals("STOP", ResidueProperties.codonTranslate("TAA"));
53     assertEquals("STOP", ResidueProperties.codonTranslate("TAG"));
54     assertEquals("H", ResidueProperties.codonTranslate("CAT"));
55     assertEquals("H", ResidueProperties.codonTranslate("CAC"));
56     assertEquals("Q", ResidueProperties.codonTranslate("CAA"));
57     assertEquals("Q", ResidueProperties.codonTranslate("CAG"));
58     assertEquals("N", ResidueProperties.codonTranslate("AAT"));
59     assertEquals("N", ResidueProperties.codonTranslate("AAC"));
60     assertEquals("K", ResidueProperties.codonTranslate("AAA"));
61     assertEquals("K", ResidueProperties.codonTranslate("AAG"));
62     assertEquals("D", ResidueProperties.codonTranslate("GAT"));
63     assertEquals("D", ResidueProperties.codonTranslate("GAC"));
64     assertEquals("E", ResidueProperties.codonTranslate("GAA"));
65     assertEquals("E", ResidueProperties.codonTranslate("GAG"));
66     assertEquals("C", ResidueProperties.codonTranslate("TGT"));
67     assertEquals("C", ResidueProperties.codonTranslate("TGC"));
68     assertEquals("STOP", ResidueProperties.codonTranslate("TGA"));
69     assertEquals("W", ResidueProperties.codonTranslate("TGG"));
70     assertEquals("R", ResidueProperties.codonTranslate("CGT"));
71     assertEquals("R", ResidueProperties.codonTranslate("CGC"));
72     assertEquals("R", ResidueProperties.codonTranslate("CGA"));
73     assertEquals("R", ResidueProperties.codonTranslate("CGG"));
74     assertEquals("S", ResidueProperties.codonTranslate("AGT"));
75     assertEquals("S", ResidueProperties.codonTranslate("AGC"));
76     assertEquals("R", ResidueProperties.codonTranslate("AGA"));
77     assertEquals("R", ResidueProperties.codonTranslate("AGG"));
78     assertEquals("G", ResidueProperties.codonTranslate("GGT"));
79     assertEquals("G", ResidueProperties.codonTranslate("GGC"));
80     assertEquals("G", ResidueProperties.codonTranslate("GGA"));
81     assertEquals("G", ResidueProperties.codonTranslate("GGG"));
82   }
83
84   /**
85    * Test a sample of codon translations involving ambiguity codes. Should
86    * return a protein value where the ambiguity does not affect the translation.
87    */
88   @Test
89   public void testCodonTranslate_ambiguityCodes()
90   {
91     // Y is C or T
92     assertEquals("C", ResidueProperties.codonTranslate("TGY"));
93     assertEquals("L", ResidueProperties.codonTranslate("YTA"));
94
95     // W is A or T
96     assertEquals("L", ResidueProperties.codonTranslate("CTW"));
97     assertNull(ResidueProperties.codonTranslate("TTW"));
98
99     // S is G or C
100     assertEquals("G", ResidueProperties.codonTranslate("GGS"));
101     assertNull(ResidueProperties.codonTranslate("ATS"));
102
103     // K is T or G
104     assertEquals("S", ResidueProperties.codonTranslate("TCS"));
105     assertNull(ResidueProperties.codonTranslate("ATK"));
106
107     // M is C or A
108     assertEquals("T", ResidueProperties.codonTranslate("ACM"));
109     assertNull(ResidueProperties.codonTranslate("TAM"));
110
111     // D is A, G or T
112     assertEquals("P", ResidueProperties.codonTranslate("CCD"));
113     assertNull(ResidueProperties.codonTranslate("AAD"));
114
115     // V is A, C or G
116     assertEquals("V", ResidueProperties.codonTranslate("GTV"));
117     assertNull(ResidueProperties.codonTranslate("TTV"));
118
119     // H is A, C or T
120     assertEquals("A", ResidueProperties.codonTranslate("GCH"));
121     assertEquals("I", ResidueProperties.codonTranslate("ATH"));
122     assertNull(ResidueProperties.codonTranslate("AGH"));
123
124     // B is C, G or T
125     assertEquals("P", ResidueProperties.codonTranslate("CCB"));
126     assertNull(ResidueProperties.codonTranslate("TAB"));
127
128     // R is A or G
129     assertEquals("R", ResidueProperties.codonTranslate("AGR"));
130     assertEquals("STOP", ResidueProperties.codonTranslate("TAR"));
131     assertEquals("STOP", ResidueProperties.codonTranslate("TRA"));
132     assertNull(ResidueProperties.codonTranslate("ATR"));
133
134   }
135 }