Merge develop to Release_2_8_3_Branch
[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     // Phenylalanine first base variation
94     assertEquals("L", ResidueProperties.codonTranslate("YTA"));
95
96     // W is A or T
97     assertEquals("L", ResidueProperties.codonTranslate("CTW"));
98     assertNull(ResidueProperties.codonTranslate("TTW"));
99
100     // S is G or C
101     assertEquals("G", ResidueProperties.codonTranslate("GGS"));
102     assertNull(ResidueProperties.codonTranslate("ATS"));
103
104     // K is T or G
105     assertEquals("S", ResidueProperties.codonTranslate("TCK"));
106     assertNull(ResidueProperties.codonTranslate("ATK"));
107
108     // M is C or A
109     assertEquals("T", ResidueProperties.codonTranslate("ACM"));
110     // Arginine first base variation
111     assertEquals("R", ResidueProperties.codonTranslate("MGA"));
112     assertEquals("R", ResidueProperties.codonTranslate("MGG"));
113     assertNull(ResidueProperties.codonTranslate("TAM"));
114
115     // D is A, G or T
116     assertEquals("P", ResidueProperties.codonTranslate("CCD"));
117     assertNull(ResidueProperties.codonTranslate("AAD"));
118
119     // V is A, C or G
120     assertEquals("V", ResidueProperties.codonTranslate("GTV"));
121     assertNull(ResidueProperties.codonTranslate("TTV"));
122
123     // H is A, C or T
124     assertEquals("A", ResidueProperties.codonTranslate("GCH"));
125     assertEquals("I", ResidueProperties.codonTranslate("ATH"));
126     assertNull(ResidueProperties.codonTranslate("AGH"));
127
128     // B is C, G or T
129     assertEquals("P", ResidueProperties.codonTranslate("CCB"));
130     assertNull(ResidueProperties.codonTranslate("TAB"));
131
132     // R is A or G
133     // additional tests for JAL-1685 (resolved)
134     assertEquals("L", ResidueProperties.codonTranslate("CTR"));
135     assertEquals("V", ResidueProperties.codonTranslate("GTR"));
136     assertEquals("S", ResidueProperties.codonTranslate("TCR"));
137     assertEquals("P", ResidueProperties.codonTranslate("CCR"));
138     assertEquals("T", ResidueProperties.codonTranslate("ACR"));
139     assertEquals("A", ResidueProperties.codonTranslate("GCR"));
140     assertEquals("R", ResidueProperties.codonTranslate("CGR"));
141     assertEquals("G", ResidueProperties.codonTranslate("GGR"));
142     assertEquals("R", ResidueProperties.codonTranslate("AGR"));
143     assertEquals("E", ResidueProperties.codonTranslate("GAR"));
144     assertEquals("K", ResidueProperties.codonTranslate("AAR"));
145     assertEquals("L", ResidueProperties.codonTranslate("TTR"));
146     assertEquals("Q", ResidueProperties.codonTranslate("CAR"));
147     assertEquals("STOP", ResidueProperties.codonTranslate("TAR"));
148     assertEquals("STOP", ResidueProperties.codonTranslate("TRA"));
149     // Arginine first and third base ambiguity
150     assertEquals("R", ResidueProperties.codonTranslate("MGR"));
151     assertNull(ResidueProperties.codonTranslate("ATR"));
152
153     // N is any base; 8 proteins accept any base in 3rd position
154     assertEquals("L", ResidueProperties.codonTranslate("CTN"));
155     assertEquals("V", ResidueProperties.codonTranslate("GTN"));
156     assertEquals("S", ResidueProperties.codonTranslate("TCN"));
157     assertEquals("P", ResidueProperties.codonTranslate("CCN"));
158     assertEquals("T", ResidueProperties.codonTranslate("ACN"));
159     assertEquals("A", ResidueProperties.codonTranslate("GCN"));
160     assertEquals("R", ResidueProperties.codonTranslate("CGN"));
161     assertEquals("G", ResidueProperties.codonTranslate("GGN"));
162     assertNull(ResidueProperties.codonTranslate("ATN"));
163     assertNull(ResidueProperties.codonTranslate("ANT"));
164     assertNull(ResidueProperties.codonTranslate("NAT"));
165     assertNull(ResidueProperties.codonTranslate("ANN"));
166     assertNull(ResidueProperties.codonTranslate("NNA"));
167     assertNull(ResidueProperties.codonTranslate("NNN"));
168
169     // some random stuff
170     assertNull(ResidueProperties.codonTranslate("YWB"));
171     assertNull(ResidueProperties.codonTranslate("VHD"));
172     assertNull(ResidueProperties.codonTranslate("WSK"));
173   }
174 }