2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.schemes;
23 import static org.testng.AssertJUnit.assertEquals;
24 import static org.testng.AssertJUnit.assertNull;
26 import java.util.Collections;
27 import java.util.List;
29 import org.testng.annotations.Test;
31 public class ResiduePropertiesTest
35 * Test 'standard' codon translations (no ambiguity codes)
37 @Test(groups = { "Functional" })
38 public void testCodonTranslate()
40 // standard translation table order column 1/2/3/4
41 assertEquals("F", ResidueProperties.codonTranslate("TTT"));
42 assertEquals("F", ResidueProperties.codonTranslate("TTC"));
43 assertEquals("L", ResidueProperties.codonTranslate("TTA"));
44 assertEquals("L", ResidueProperties.codonTranslate("TTG"));
45 assertEquals("L", ResidueProperties.codonTranslate("CTT"));
46 assertEquals("L", ResidueProperties.codonTranslate("CTC"));
47 assertEquals("L", ResidueProperties.codonTranslate("CTA"));
48 assertEquals("L", ResidueProperties.codonTranslate("CTG"));
49 assertEquals("I", ResidueProperties.codonTranslate("ATT"));
50 assertEquals("I", ResidueProperties.codonTranslate("ATC"));
51 assertEquals("I", ResidueProperties.codonTranslate("ATA"));
52 assertEquals("M", ResidueProperties.codonTranslate("ATG"));
53 assertEquals("V", ResidueProperties.codonTranslate("GTT"));
54 assertEquals("V", ResidueProperties.codonTranslate("GTC"));
55 assertEquals("V", ResidueProperties.codonTranslate("GTA"));
56 assertEquals("V", ResidueProperties.codonTranslate("GTG"));
57 assertEquals("S", ResidueProperties.codonTranslate("TCT"));
58 assertEquals("S", ResidueProperties.codonTranslate("TCC"));
59 assertEquals("S", ResidueProperties.codonTranslate("TCA"));
60 assertEquals("S", ResidueProperties.codonTranslate("TCG"));
61 assertEquals("P", ResidueProperties.codonTranslate("CCT"));
62 assertEquals("P", ResidueProperties.codonTranslate("CCC"));
63 assertEquals("P", ResidueProperties.codonTranslate("CCA"));
64 assertEquals("P", ResidueProperties.codonTranslate("CCG"));
65 assertEquals("T", ResidueProperties.codonTranslate("ACT"));
66 assertEquals("T", ResidueProperties.codonTranslate("ACC"));
67 assertEquals("T", ResidueProperties.codonTranslate("ACA"));
68 assertEquals("T", ResidueProperties.codonTranslate("ACG"));
69 assertEquals("A", ResidueProperties.codonTranslate("GCT"));
70 assertEquals("A", ResidueProperties.codonTranslate("GCC"));
71 assertEquals("A", ResidueProperties.codonTranslate("GCA"));
72 assertEquals("A", ResidueProperties.codonTranslate("GCG"));
73 assertEquals("Y", ResidueProperties.codonTranslate("TAT"));
74 assertEquals("Y", ResidueProperties.codonTranslate("TAC"));
75 assertEquals("STOP", ResidueProperties.codonTranslate("TAA"));
76 assertEquals("STOP", ResidueProperties.codonTranslate("TAG"));
77 assertEquals("H", ResidueProperties.codonTranslate("CAT"));
78 assertEquals("H", ResidueProperties.codonTranslate("CAC"));
79 assertEquals("Q", ResidueProperties.codonTranslate("CAA"));
80 assertEquals("Q", ResidueProperties.codonTranslate("CAG"));
81 assertEquals("N", ResidueProperties.codonTranslate("AAT"));
82 assertEquals("N", ResidueProperties.codonTranslate("AAC"));
83 assertEquals("K", ResidueProperties.codonTranslate("AAA"));
84 assertEquals("K", ResidueProperties.codonTranslate("AAG"));
85 assertEquals("D", ResidueProperties.codonTranslate("GAT"));
86 assertEquals("D", ResidueProperties.codonTranslate("GAC"));
87 assertEquals("E", ResidueProperties.codonTranslate("GAA"));
88 assertEquals("E", ResidueProperties.codonTranslate("GAG"));
89 assertEquals("C", ResidueProperties.codonTranslate("TGT"));
90 assertEquals("C", ResidueProperties.codonTranslate("TGC"));
91 assertEquals("STOP", ResidueProperties.codonTranslate("TGA"));
92 assertEquals("W", ResidueProperties.codonTranslate("TGG"));
93 assertEquals("R", ResidueProperties.codonTranslate("CGT"));
94 assertEquals("R", ResidueProperties.codonTranslate("CGC"));
95 assertEquals("R", ResidueProperties.codonTranslate("CGA"));
96 assertEquals("R", ResidueProperties.codonTranslate("CGG"));
97 assertEquals("S", ResidueProperties.codonTranslate("AGT"));
98 assertEquals("S", ResidueProperties.codonTranslate("AGC"));
99 assertEquals("R", ResidueProperties.codonTranslate("AGA"));
100 assertEquals("R", ResidueProperties.codonTranslate("AGG"));
101 assertEquals("G", ResidueProperties.codonTranslate("GGT"));
102 assertEquals("G", ResidueProperties.codonTranslate("GGC"));
103 assertEquals("G", ResidueProperties.codonTranslate("GGA"));
104 assertEquals("G", ResidueProperties.codonTranslate("GGG"));
108 * Test a sample of codon translations involving ambiguity codes. Should
109 * return a protein value where the ambiguity does not affect the translation.
111 @Test(groups = { "Functional" })
112 public void testCodonTranslate_ambiguityCodes()
115 assertEquals("C", ResidueProperties.codonTranslate("TGY"));
116 // Phenylalanine first base variation
117 assertEquals("L", ResidueProperties.codonTranslate("YTA"));
120 assertEquals("L", ResidueProperties.codonTranslate("CTW"));
121 assertNull(ResidueProperties.codonTranslate("TTW"));
124 assertEquals("G", ResidueProperties.codonTranslate("GGS"));
125 assertNull(ResidueProperties.codonTranslate("ATS"));
128 assertEquals("S", ResidueProperties.codonTranslate("TCK"));
129 assertNull(ResidueProperties.codonTranslate("ATK"));
132 assertEquals("T", ResidueProperties.codonTranslate("ACM"));
133 // Arginine first base variation
134 assertEquals("R", ResidueProperties.codonTranslate("MGA"));
135 assertEquals("R", ResidueProperties.codonTranslate("MGG"));
136 assertNull(ResidueProperties.codonTranslate("TAM"));
139 assertEquals("P", ResidueProperties.codonTranslate("CCD"));
140 assertNull(ResidueProperties.codonTranslate("AAD"));
143 assertEquals("V", ResidueProperties.codonTranslate("GTV"));
144 assertNull(ResidueProperties.codonTranslate("TTV"));
147 assertEquals("A", ResidueProperties.codonTranslate("GCH"));
148 assertEquals("I", ResidueProperties.codonTranslate("ATH"));
149 assertNull(ResidueProperties.codonTranslate("AGH"));
152 assertEquals("P", ResidueProperties.codonTranslate("CCB"));
153 assertNull(ResidueProperties.codonTranslate("TAB"));
156 // additional tests for JAL-1685 (resolved)
157 assertEquals("L", ResidueProperties.codonTranslate("CTR"));
158 assertEquals("V", ResidueProperties.codonTranslate("GTR"));
159 assertEquals("S", ResidueProperties.codonTranslate("TCR"));
160 assertEquals("P", ResidueProperties.codonTranslate("CCR"));
161 assertEquals("T", ResidueProperties.codonTranslate("ACR"));
162 assertEquals("A", ResidueProperties.codonTranslate("GCR"));
163 assertEquals("R", ResidueProperties.codonTranslate("CGR"));
164 assertEquals("G", ResidueProperties.codonTranslate("GGR"));
165 assertEquals("R", ResidueProperties.codonTranslate("AGR"));
166 assertEquals("E", ResidueProperties.codonTranslate("GAR"));
167 assertEquals("K", ResidueProperties.codonTranslate("AAR"));
168 assertEquals("L", ResidueProperties.codonTranslate("TTR"));
169 assertEquals("Q", ResidueProperties.codonTranslate("CAR"));
170 assertEquals("STOP", ResidueProperties.codonTranslate("TAR"));
171 assertEquals("STOP", ResidueProperties.codonTranslate("TRA"));
172 // Arginine first and third base ambiguity
173 assertEquals("R", ResidueProperties.codonTranslate("MGR"));
174 assertNull(ResidueProperties.codonTranslate("ATR"));
176 // N is any base; 8 proteins accept any base in 3rd position
177 assertEquals("L", ResidueProperties.codonTranslate("CTN"));
178 assertEquals("V", ResidueProperties.codonTranslate("GTN"));
179 assertEquals("S", ResidueProperties.codonTranslate("TCN"));
180 assertEquals("P", ResidueProperties.codonTranslate("CCN"));
181 assertEquals("T", ResidueProperties.codonTranslate("ACN"));
182 assertEquals("A", ResidueProperties.codonTranslate("GCN"));
183 assertEquals("R", ResidueProperties.codonTranslate("CGN"));
184 assertEquals("G", ResidueProperties.codonTranslate("GGN"));
185 assertNull(ResidueProperties.codonTranslate("ATN"));
186 assertNull(ResidueProperties.codonTranslate("ANT"));
187 assertNull(ResidueProperties.codonTranslate("NAT"));
188 assertNull(ResidueProperties.codonTranslate("ANN"));
189 assertNull(ResidueProperties.codonTranslate("NNA"));
190 assertNull(ResidueProperties.codonTranslate("NNN"));
193 assertNull(ResidueProperties.codonTranslate("YWB"));
194 assertNull(ResidueProperties.codonTranslate("VHD"));
195 assertNull(ResidueProperties.codonTranslate("WSK"));
198 @Test(groups = { "Functional" })
199 public void testGetResidues_nucleotide()
202 * Non-ambiguous only; we don't care about the order of the list, it is just
203 * sorted here to make assertions reliable
205 List<String> residues = ResidueProperties.getResidues(true, false);
206 Collections.sort(residues);
207 assertEquals("[A, C, G, T, U]", residues.toString());
210 * Including ambiguity codes I N R X Y
212 residues = ResidueProperties.getResidues(true, true);
213 Collections.sort(residues);
214 assertEquals("[A, C, G, I, N, R, T, U, X, Y]", residues.toString());
217 @Test(groups = { "Functional" })
218 public void testGetResidues_peptide()
221 * Non-ambiguous only; we don't care about the order of the list, it is just
222 * sorted here to make assertions reliable
224 List<String> residues = ResidueProperties.getResidues(false, false);
225 Collections.sort(residues);
227 "[ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL]",
228 residues.toString());
231 * Including ambiguity codes ASX, GLX, XAA
233 residues = ResidueProperties.getResidues(false, true);
234 Collections.sort(residues);
236 "[ALA, ARG, ASN, ASP, ASX, CYS, GLN, GLU, GLX, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, XAA]",
237 residues.toString());
240 @Test(groups = { "Functional" })
241 public void testGetCanonicalAminoAcid()
243 assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MET"));
244 assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MSE"));
245 assertEquals(null, ResidueProperties.getCanonicalAminoAcid(null));
248 @Test(groups = { "Functional" })
249 public void testGetSingleCharacterCode()
251 assertEquals('0', ResidueProperties.getSingleCharacterCode(null));
252 assertEquals('0', ResidueProperties.getSingleCharacterCode(null));
253 assertEquals('0', ResidueProperties.getSingleCharacterCode(""));
254 assertEquals('Q', ResidueProperties.getSingleCharacterCode("GLN"));
255 assertEquals('Q', ResidueProperties.getSingleCharacterCode("Gln"));
256 assertEquals('Q', ResidueProperties.getSingleCharacterCode("gln"));