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