1 package jalview.schemes;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertNull;
6 import java.util.Collections;
9 import org.testng.annotations.Test;
11 public class ResiduePropertiesTest
15 * Test 'standard' codon translations (no ambiguity codes)
17 @Test(groups ={ "Functional" })
18 public void testCodonTranslate()
20 // standard translation table order column 1/2/3/4
21 assertEquals("F", ResidueProperties.codonTranslate("TTT"));
22 assertEquals("F", ResidueProperties.codonTranslate("TTC"));
23 assertEquals("L", ResidueProperties.codonTranslate("TTA"));
24 assertEquals("L", ResidueProperties.codonTranslate("TTG"));
25 assertEquals("L", ResidueProperties.codonTranslate("CTT"));
26 assertEquals("L", ResidueProperties.codonTranslate("CTC"));
27 assertEquals("L", ResidueProperties.codonTranslate("CTA"));
28 assertEquals("L", ResidueProperties.codonTranslate("CTG"));
29 assertEquals("I", ResidueProperties.codonTranslate("ATT"));
30 assertEquals("I", ResidueProperties.codonTranslate("ATC"));
31 assertEquals("I", ResidueProperties.codonTranslate("ATA"));
32 assertEquals("M", ResidueProperties.codonTranslate("ATG"));
33 assertEquals("V", ResidueProperties.codonTranslate("GTT"));
34 assertEquals("V", ResidueProperties.codonTranslate("GTC"));
35 assertEquals("V", ResidueProperties.codonTranslate("GTA"));
36 assertEquals("V", ResidueProperties.codonTranslate("GTG"));
37 assertEquals("S", ResidueProperties.codonTranslate("TCT"));
38 assertEquals("S", ResidueProperties.codonTranslate("TCC"));
39 assertEquals("S", ResidueProperties.codonTranslate("TCA"));
40 assertEquals("S", ResidueProperties.codonTranslate("TCG"));
41 assertEquals("P", ResidueProperties.codonTranslate("CCT"));
42 assertEquals("P", ResidueProperties.codonTranslate("CCC"));
43 assertEquals("P", ResidueProperties.codonTranslate("CCA"));
44 assertEquals("P", ResidueProperties.codonTranslate("CCG"));
45 assertEquals("T", ResidueProperties.codonTranslate("ACT"));
46 assertEquals("T", ResidueProperties.codonTranslate("ACC"));
47 assertEquals("T", ResidueProperties.codonTranslate("ACA"));
48 assertEquals("T", ResidueProperties.codonTranslate("ACG"));
49 assertEquals("A", ResidueProperties.codonTranslate("GCT"));
50 assertEquals("A", ResidueProperties.codonTranslate("GCC"));
51 assertEquals("A", ResidueProperties.codonTranslate("GCA"));
52 assertEquals("A", ResidueProperties.codonTranslate("GCG"));
53 assertEquals("Y", ResidueProperties.codonTranslate("TAT"));
54 assertEquals("Y", ResidueProperties.codonTranslate("TAC"));
55 assertEquals("STOP", ResidueProperties.codonTranslate("TAA"));
56 assertEquals("STOP", ResidueProperties.codonTranslate("TAG"));
57 assertEquals("H", ResidueProperties.codonTranslate("CAT"));
58 assertEquals("H", ResidueProperties.codonTranslate("CAC"));
59 assertEquals("Q", ResidueProperties.codonTranslate("CAA"));
60 assertEquals("Q", ResidueProperties.codonTranslate("CAG"));
61 assertEquals("N", ResidueProperties.codonTranslate("AAT"));
62 assertEquals("N", ResidueProperties.codonTranslate("AAC"));
63 assertEquals("K", ResidueProperties.codonTranslate("AAA"));
64 assertEquals("K", ResidueProperties.codonTranslate("AAG"));
65 assertEquals("D", ResidueProperties.codonTranslate("GAT"));
66 assertEquals("D", ResidueProperties.codonTranslate("GAC"));
67 assertEquals("E", ResidueProperties.codonTranslate("GAA"));
68 assertEquals("E", ResidueProperties.codonTranslate("GAG"));
69 assertEquals("C", ResidueProperties.codonTranslate("TGT"));
70 assertEquals("C", ResidueProperties.codonTranslate("TGC"));
71 assertEquals("STOP", ResidueProperties.codonTranslate("TGA"));
72 assertEquals("W", ResidueProperties.codonTranslate("TGG"));
73 assertEquals("R", ResidueProperties.codonTranslate("CGT"));
74 assertEquals("R", ResidueProperties.codonTranslate("CGC"));
75 assertEquals("R", ResidueProperties.codonTranslate("CGA"));
76 assertEquals("R", ResidueProperties.codonTranslate("CGG"));
77 assertEquals("S", ResidueProperties.codonTranslate("AGT"));
78 assertEquals("S", ResidueProperties.codonTranslate("AGC"));
79 assertEquals("R", ResidueProperties.codonTranslate("AGA"));
80 assertEquals("R", ResidueProperties.codonTranslate("AGG"));
81 assertEquals("G", ResidueProperties.codonTranslate("GGT"));
82 assertEquals("G", ResidueProperties.codonTranslate("GGC"));
83 assertEquals("G", ResidueProperties.codonTranslate("GGA"));
84 assertEquals("G", ResidueProperties.codonTranslate("GGG"));
88 * Test a sample of codon translations involving ambiguity codes. Should
89 * return a protein value where the ambiguity does not affect the translation.
91 @Test(groups ={ "Functional" })
92 public void testCodonTranslate_ambiguityCodes()
95 assertEquals("C", ResidueProperties.codonTranslate("TGY"));
96 // Phenylalanine first base variation
97 assertEquals("L", ResidueProperties.codonTranslate("YTA"));
100 assertEquals("L", ResidueProperties.codonTranslate("CTW"));
101 assertNull(ResidueProperties.codonTranslate("TTW"));
104 assertEquals("G", ResidueProperties.codonTranslate("GGS"));
105 assertNull(ResidueProperties.codonTranslate("ATS"));
108 assertEquals("S", ResidueProperties.codonTranslate("TCK"));
109 assertNull(ResidueProperties.codonTranslate("ATK"));
112 assertEquals("T", ResidueProperties.codonTranslate("ACM"));
113 // Arginine first base variation
114 assertEquals("R", ResidueProperties.codonTranslate("MGA"));
115 assertEquals("R", ResidueProperties.codonTranslate("MGG"));
116 assertNull(ResidueProperties.codonTranslate("TAM"));
119 assertEquals("P", ResidueProperties.codonTranslate("CCD"));
120 assertNull(ResidueProperties.codonTranslate("AAD"));
123 assertEquals("V", ResidueProperties.codonTranslate("GTV"));
124 assertNull(ResidueProperties.codonTranslate("TTV"));
127 assertEquals("A", ResidueProperties.codonTranslate("GCH"));
128 assertEquals("I", ResidueProperties.codonTranslate("ATH"));
129 assertNull(ResidueProperties.codonTranslate("AGH"));
132 assertEquals("P", ResidueProperties.codonTranslate("CCB"));
133 assertNull(ResidueProperties.codonTranslate("TAB"));
136 // additional tests for JAL-1685 (resolved)
137 assertEquals("L", ResidueProperties.codonTranslate("CTR"));
138 assertEquals("V", ResidueProperties.codonTranslate("GTR"));
139 assertEquals("S", ResidueProperties.codonTranslate("TCR"));
140 assertEquals("P", ResidueProperties.codonTranslate("CCR"));
141 assertEquals("T", ResidueProperties.codonTranslate("ACR"));
142 assertEquals("A", ResidueProperties.codonTranslate("GCR"));
143 assertEquals("R", ResidueProperties.codonTranslate("CGR"));
144 assertEquals("G", ResidueProperties.codonTranslate("GGR"));
145 assertEquals("R", ResidueProperties.codonTranslate("AGR"));
146 assertEquals("E", ResidueProperties.codonTranslate("GAR"));
147 assertEquals("K", ResidueProperties.codonTranslate("AAR"));
148 assertEquals("L", ResidueProperties.codonTranslate("TTR"));
149 assertEquals("Q", ResidueProperties.codonTranslate("CAR"));
150 assertEquals("STOP", ResidueProperties.codonTranslate("TAR"));
151 assertEquals("STOP", ResidueProperties.codonTranslate("TRA"));
152 // Arginine first and third base ambiguity
153 assertEquals("R", ResidueProperties.codonTranslate("MGR"));
154 assertNull(ResidueProperties.codonTranslate("ATR"));
156 // N is any base; 8 proteins accept any base in 3rd position
157 assertEquals("L", ResidueProperties.codonTranslate("CTN"));
158 assertEquals("V", ResidueProperties.codonTranslate("GTN"));
159 assertEquals("S", ResidueProperties.codonTranslate("TCN"));
160 assertEquals("P", ResidueProperties.codonTranslate("CCN"));
161 assertEquals("T", ResidueProperties.codonTranslate("ACN"));
162 assertEquals("A", ResidueProperties.codonTranslate("GCN"));
163 assertEquals("R", ResidueProperties.codonTranslate("CGN"));
164 assertEquals("G", ResidueProperties.codonTranslate("GGN"));
165 assertNull(ResidueProperties.codonTranslate("ATN"));
166 assertNull(ResidueProperties.codonTranslate("ANT"));
167 assertNull(ResidueProperties.codonTranslate("NAT"));
168 assertNull(ResidueProperties.codonTranslate("ANN"));
169 assertNull(ResidueProperties.codonTranslate("NNA"));
170 assertNull(ResidueProperties.codonTranslate("NNN"));
173 assertNull(ResidueProperties.codonTranslate("YWB"));
174 assertNull(ResidueProperties.codonTranslate("VHD"));
175 assertNull(ResidueProperties.codonTranslate("WSK"));
178 @Test(groups ={ "Functional" })
179 public void testGetResidues_nucleotide()
182 * Non-ambiguous only; we don't care about the order of the list, it is just
183 * sorted here to make assertions reliable
185 List<String> residues = ResidueProperties.getResidues(true, false);
186 Collections.sort(residues);
187 assertEquals("[A, C, G, T, U]", residues.toString());
190 * Including ambiguity codes I N R X Y
192 residues = ResidueProperties.getResidues(true, true);
193 Collections.sort(residues);
194 assertEquals("[A, C, G, I, N, R, T, U, X, Y]", residues.toString());
197 @Test(groups ={ "Functional" })
198 public void testGetResidues_peptide()
201 * Non-ambiguous only; we don't care about the order of the list, it is just
202 * sorted here to make assertions reliable
204 List<String> residues = ResidueProperties.getResidues(false, false);
205 Collections.sort(residues);
207 "[ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL]",
208 residues.toString());
211 * Including ambiguity codes ASX, GLX, XAA
213 residues = ResidueProperties.getResidues(false, true);
214 Collections.sort(residues);
216 "[ALA, ARG, ASN, ASP, ASX, CYS, GLN, GLU, GLX, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, XAA]",
217 residues.toString());