Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git] / test / jalview / schemes / ResiduePropertiesTest.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
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.
11  *  
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.
16  * 
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.
20  */
21 package jalview.schemes;
22
23 import static org.testng.AssertJUnit.assertEquals;
24 import static org.testng.AssertJUnit.assertNull;
25
26 import java.util.Collections;
27 import java.util.List;
28 import java.util.Map;
29
30 import org.testng.annotations.BeforeClass;
31 import org.testng.annotations.Test;
32
33 import jalview.gui.JvOptionPane;
34
35 public class ResiduePropertiesTest
36 {
37
38   @BeforeClass(alwaysRun = true)
39   public void setUpJvOptionPane()
40   {
41     JvOptionPane.setInteractiveMode(false);
42     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
43   }
44
45   /**
46    * Test 'standard' codon translations (no ambiguity codes)
47    */
48   @Test(groups = { "Functional" })
49   public void testCodonTranslate()
50   {
51     // standard translation table order column 1/2/3/4
52     assertEquals("F", ResidueProperties.codonTranslate("TTT"));
53     assertEquals("F", ResidueProperties.codonTranslate("TTC"));
54     assertEquals("L", ResidueProperties.codonTranslate("TTA"));
55     assertEquals("L", ResidueProperties.codonTranslate("TTG"));
56     assertEquals("L", ResidueProperties.codonTranslate("CTT"));
57     assertEquals("L", ResidueProperties.codonTranslate("CTC"));
58     assertEquals("L", ResidueProperties.codonTranslate("CTA"));
59     assertEquals("L", ResidueProperties.codonTranslate("CTG"));
60     assertEquals("I", ResidueProperties.codonTranslate("ATT"));
61     assertEquals("I", ResidueProperties.codonTranslate("ATC"));
62     assertEquals("I", ResidueProperties.codonTranslate("ATA"));
63     assertEquals("M", ResidueProperties.codonTranslate("ATG"));
64     assertEquals("V", ResidueProperties.codonTranslate("GTT"));
65     assertEquals("V", ResidueProperties.codonTranslate("GTC"));
66     assertEquals("V", ResidueProperties.codonTranslate("GTA"));
67     assertEquals("V", ResidueProperties.codonTranslate("GTG"));
68     assertEquals("S", ResidueProperties.codonTranslate("TCT"));
69     assertEquals("S", ResidueProperties.codonTranslate("TCC"));
70     assertEquals("S", ResidueProperties.codonTranslate("TCA"));
71     assertEquals("S", ResidueProperties.codonTranslate("TCG"));
72     assertEquals("P", ResidueProperties.codonTranslate("CCT"));
73     assertEquals("P", ResidueProperties.codonTranslate("CCC"));
74     assertEquals("P", ResidueProperties.codonTranslate("CCA"));
75     assertEquals("P", ResidueProperties.codonTranslate("CCG"));
76     assertEquals("T", ResidueProperties.codonTranslate("ACT"));
77     assertEquals("T", ResidueProperties.codonTranslate("ACC"));
78     assertEquals("T", ResidueProperties.codonTranslate("ACA"));
79     assertEquals("T", ResidueProperties.codonTranslate("ACG"));
80     assertEquals("A", ResidueProperties.codonTranslate("GCT"));
81     assertEquals("A", ResidueProperties.codonTranslate("GCC"));
82     assertEquals("A", ResidueProperties.codonTranslate("GCA"));
83     assertEquals("A", ResidueProperties.codonTranslate("GCG"));
84     assertEquals("Y", ResidueProperties.codonTranslate("TAT"));
85     assertEquals("Y", ResidueProperties.codonTranslate("TAC"));
86     assertEquals("STOP", ResidueProperties.codonTranslate("TAA"));
87     assertEquals("STOP", ResidueProperties.codonTranslate("TAG"));
88     assertEquals("H", ResidueProperties.codonTranslate("CAT"));
89     assertEquals("H", ResidueProperties.codonTranslate("CAC"));
90     assertEquals("Q", ResidueProperties.codonTranslate("CAA"));
91     assertEquals("Q", ResidueProperties.codonTranslate("CAG"));
92     assertEquals("N", ResidueProperties.codonTranslate("AAT"));
93     assertEquals("N", ResidueProperties.codonTranslate("AAC"));
94     assertEquals("K", ResidueProperties.codonTranslate("AAA"));
95     assertEquals("K", ResidueProperties.codonTranslate("AAG"));
96     assertEquals("D", ResidueProperties.codonTranslate("GAT"));
97     assertEquals("D", ResidueProperties.codonTranslate("GAC"));
98     assertEquals("E", ResidueProperties.codonTranslate("GAA"));
99     assertEquals("E", ResidueProperties.codonTranslate("GAG"));
100     assertEquals("C", ResidueProperties.codonTranslate("TGT"));
101     assertEquals("C", ResidueProperties.codonTranslate("TGC"));
102     assertEquals("STOP", ResidueProperties.codonTranslate("TGA"));
103     assertEquals("W", ResidueProperties.codonTranslate("TGG"));
104     assertEquals("R", ResidueProperties.codonTranslate("CGT"));
105     assertEquals("R", ResidueProperties.codonTranslate("CGC"));
106     assertEquals("R", ResidueProperties.codonTranslate("CGA"));
107     assertEquals("R", ResidueProperties.codonTranslate("CGG"));
108     assertEquals("S", ResidueProperties.codonTranslate("AGT"));
109     assertEquals("S", ResidueProperties.codonTranslate("AGC"));
110     assertEquals("R", ResidueProperties.codonTranslate("AGA"));
111     assertEquals("R", ResidueProperties.codonTranslate("AGG"));
112     assertEquals("G", ResidueProperties.codonTranslate("GGT"));
113     assertEquals("G", ResidueProperties.codonTranslate("GGC"));
114     assertEquals("G", ResidueProperties.codonTranslate("GGA"));
115     assertEquals("G", ResidueProperties.codonTranslate("GGG"));
116   }
117
118   /**
119    * Test a sample of codon translations involving ambiguity codes. Should
120    * return a protein value where the ambiguity does not affect the translation.
121    */
122   @Test(groups = { "Functional" })
123   public void testCodonTranslate_ambiguityCodes()
124   {
125     // Y is C or T
126     assertEquals("C", ResidueProperties.codonTranslate("TGY"));
127     // Phenylalanine first base variation
128     assertEquals("L", ResidueProperties.codonTranslate("YTA"));
129
130     // W is A or T
131     assertEquals("L", ResidueProperties.codonTranslate("CTW"));
132     assertNull(ResidueProperties.codonTranslate("TTW"));
133
134     // S is G or C
135     assertEquals("G", ResidueProperties.codonTranslate("GGS"));
136     assertNull(ResidueProperties.codonTranslate("ATS"));
137
138     // K is T or G
139     assertEquals("S", ResidueProperties.codonTranslate("TCK"));
140     assertNull(ResidueProperties.codonTranslate("ATK"));
141
142     // M is C or A
143     assertEquals("T", ResidueProperties.codonTranslate("ACM"));
144     // Arginine first base variation
145     assertEquals("R", ResidueProperties.codonTranslate("MGA"));
146     assertEquals("R", ResidueProperties.codonTranslate("MGG"));
147     assertNull(ResidueProperties.codonTranslate("TAM"));
148
149     // D is A, G or T
150     assertEquals("P", ResidueProperties.codonTranslate("CCD"));
151     assertNull(ResidueProperties.codonTranslate("AAD"));
152
153     // V is A, C or G
154     assertEquals("V", ResidueProperties.codonTranslate("GTV"));
155     assertNull(ResidueProperties.codonTranslate("TTV"));
156
157     // H is A, C or T
158     assertEquals("A", ResidueProperties.codonTranslate("GCH"));
159     assertEquals("I", ResidueProperties.codonTranslate("ATH"));
160     assertNull(ResidueProperties.codonTranslate("AGH"));
161
162     // B is C, G or T
163     assertEquals("P", ResidueProperties.codonTranslate("CCB"));
164     assertNull(ResidueProperties.codonTranslate("TAB"));
165
166     // R is A or G
167     // additional tests for JAL-1685 (resolved)
168     assertEquals("L", ResidueProperties.codonTranslate("CTR"));
169     assertEquals("V", ResidueProperties.codonTranslate("GTR"));
170     assertEquals("S", ResidueProperties.codonTranslate("TCR"));
171     assertEquals("P", ResidueProperties.codonTranslate("CCR"));
172     assertEquals("T", ResidueProperties.codonTranslate("ACR"));
173     assertEquals("A", ResidueProperties.codonTranslate("GCR"));
174     assertEquals("R", ResidueProperties.codonTranslate("CGR"));
175     assertEquals("G", ResidueProperties.codonTranslate("GGR"));
176     assertEquals("R", ResidueProperties.codonTranslate("AGR"));
177     assertEquals("E", ResidueProperties.codonTranslate("GAR"));
178     assertEquals("K", ResidueProperties.codonTranslate("AAR"));
179     assertEquals("L", ResidueProperties.codonTranslate("TTR"));
180     assertEquals("Q", ResidueProperties.codonTranslate("CAR"));
181     assertEquals("STOP", ResidueProperties.codonTranslate("TAR"));
182     assertEquals("STOP", ResidueProperties.codonTranslate("TRA"));
183     // Arginine first and third base ambiguity
184     assertEquals("R", ResidueProperties.codonTranslate("MGR"));
185     assertNull(ResidueProperties.codonTranslate("ATR"));
186
187     // N is any base; 8 proteins accept any base in 3rd position
188     assertEquals("L", ResidueProperties.codonTranslate("CTN"));
189     assertEquals("V", ResidueProperties.codonTranslate("GTN"));
190     assertEquals("S", ResidueProperties.codonTranslate("TCN"));
191     assertEquals("P", ResidueProperties.codonTranslate("CCN"));
192     assertEquals("T", ResidueProperties.codonTranslate("ACN"));
193     assertEquals("A", ResidueProperties.codonTranslate("GCN"));
194     assertEquals("R", ResidueProperties.codonTranslate("CGN"));
195     assertEquals("G", ResidueProperties.codonTranslate("GGN"));
196     assertNull(ResidueProperties.codonTranslate("ATN"));
197     assertNull(ResidueProperties.codonTranslate("ANT"));
198     assertNull(ResidueProperties.codonTranslate("NAT"));
199     assertNull(ResidueProperties.codonTranslate("ANN"));
200     assertNull(ResidueProperties.codonTranslate("NNA"));
201     assertNull(ResidueProperties.codonTranslate("NNN"));
202
203     // some random stuff
204     assertNull(ResidueProperties.codonTranslate("YWB"));
205     assertNull(ResidueProperties.codonTranslate("VHD"));
206     assertNull(ResidueProperties.codonTranslate("WSK"));
207   }
208
209   @Test(groups = { "Functional" })
210   public void testGetResidues_nucleotide()
211   {
212     /*
213      * Non-ambiguous only; we don't care about the order of the list, it is just
214      * sorted here to make assertions reliable
215      */
216     List<String> residues = ResidueProperties.getResidues(true, false);
217     Collections.sort(residues);
218     assertEquals("[A, C, G, T, U]", residues.toString());
219
220     /*
221      * Including ambiguity codes I N R X Y
222      */
223     residues = ResidueProperties.getResidues(true, true);
224     Collections.sort(residues);
225     assertEquals("[A, B, C, D, G, H, I, K, M, N, R, S, T, U, V, W, X, Y]",
226             residues.toString());
227   }
228
229   @Test(groups = { "Functional" })
230   public void testGetResidues_peptide()
231   {
232     /*
233      * Non-ambiguous only; we don't care about the order of the list, it is just
234      * sorted here to make assertions reliable
235      */
236     List<String> residues = ResidueProperties.getResidues(false, false);
237     Collections.sort(residues);
238     assertEquals(
239             "[ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL]",
240             residues.toString());
241
242     /*
243      * Including ambiguity codes ASX, GLX, XAA
244      */
245     residues = ResidueProperties.getResidues(false, true);
246     Collections.sort(residues);
247     assertEquals(
248             "[ALA, ARG, ASN, ASP, ASX, CYS, GLN, GLU, GLX, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, XAA]",
249             residues.toString());
250   }
251
252   @Test(groups = { "Functional" })
253   public void testGetCanonicalAminoAcid()
254   {
255     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MET"));
256     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MSE"));
257
258     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("00C"));
259     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("01W"));
260     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("02K"));
261     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("03Y"));
262     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("07O"));
263     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("08P"));
264     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("0A0"));
265     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("0A1"));
266     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("0A2"));
267     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("0A8"));
268     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("0AA"));
269     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("0AB"));
270     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("0AC"));
271     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("0AD"));
272     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("0AF"));
273     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("0AG"));
274     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("0AH"));
275     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("0AK"));
276     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("0AM"));
277     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("0AP"));
278     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("0AU"));
279     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("0AV"));
280     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("0AZ"));
281     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("0BN"));
282     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("0C "));
283     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("0CS"));
284     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("0DC"));
285     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("0DG"));
286     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("0DT"));
287     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("0FL"));
288     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("0G "));
289     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("0NC"));
290     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("0SP"));
291     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("0U "));
292     assertEquals("YG", ResidueProperties.getCanonicalAminoAcid("0YG"));
293     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("10C"));
294     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("125"));
295     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("126"));
296     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("127"));
297     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("128"));
298     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("12A"));
299     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("143"));
300     assertEquals("ASG", ResidueProperties.getCanonicalAminoAcid("175"));
301     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("193"));
302     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("1AP"));
303     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("1MA"));
304     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("1MG"));
305     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("1PA"));
306     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("1PI"));
307     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("1PR"));
308     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("1SC"));
309     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("1TQ"));
310     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("1TY"));
311     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("1X6"));
312     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("200"));
313     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("23F"));
314     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("23S"));
315     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("26B"));
316     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("2AD"));
317     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("2AG"));
318     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("2AO"));
319     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("2AR"));
320     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("2AS"));
321     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2AT"));
322     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("2AU"));
323     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("2BD"));
324     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2BT"));
325     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("2BU"));
326     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("2CO"));
327     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("2DA"));
328     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("2DF"));
329     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("2DM"));
330     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("2DO"));
331     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2DT"));
332     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("2EG"));
333     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("2FE"));
334     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("2FI"));
335     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("2FM"));
336     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2GT"));
337     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("2HF"));
338     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("2LU"));
339     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("2MA"));
340     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("2MG"));
341     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("2ML"));
342     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("2MR"));
343     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("2MT"));
344     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("2MU"));
345     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2NT"));
346     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("2OM"));
347     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2OT"));
348     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("2PI"));
349     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("2PR"));
350     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("2SA"));
351     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("2SI"));
352     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2ST"));
353     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("2TL"));
354     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("2TY"));
355     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("2VA"));
356     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("2XA"));
357     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("32S"));
358     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("32T"));
359     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("3AH"));
360     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("3AR"));
361     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("3CF"));
362     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("3DA"));
363     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("3DR"));
364     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("3GA"));
365     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("3MD"));
366     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("3ME"));
367     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("3NF"));
368     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("3QN"));
369     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("3TY"));
370     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("3XH"));
371     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("4AC"));
372     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("4BF"));
373     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("4CF"));
374     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("4CY"));
375     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("4DP"));
376     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("4F3"));
377     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("4FB"));
378     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("4FW"));
379     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("4HT"));
380     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("4IN"));
381     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("4MF"));
382     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("4MM"));
383     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("4OC"));
384     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("4PC"));
385     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("4PD"));
386     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("4PE"));
387     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("4PH"));
388     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("4SC"));
389     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("4SU"));
390     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("4TA"));
391     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("4U7"));
392     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("56A"));
393     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("5AA"));
394     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("5AB"));
395     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("5AT"));
396     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("5BU"));
397     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("5CG"));
398     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5CM"));
399     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5CS"));
400     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("5FA"));
401     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5FC"));
402     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("5FU"));
403     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("5HP"));
404     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("5HT"));
405     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("5HU"));
406     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5IC"));
407     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("5IT"));
408     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("5IU"));
409     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5MC"));
410     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("5MD"));
411     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("5MU"));
412     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5NC"));
413     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("5PC"));
414     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("5PY"));
415     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("5SE"));
416     assertEquals("TWG", ResidueProperties.getCanonicalAminoAcid("5ZA"));
417     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("64T"));
418     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("6CL"));
419     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("6CT"));
420     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("6CW"));
421     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("6HA"));
422     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("6HC"));
423     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("6HG"));
424     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("6HN"));
425     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("6HT"));
426     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("6IA"));
427     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("6MA"));
428     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("6MC"));
429     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("6MI"));
430     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("6MT"));
431     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("6MZ"));
432     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("6OG"));
433     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("70U"));
434     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("7DA"));
435     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("7GU"));
436     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("7JA"));
437     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("7MG"));
438     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("8AN"));
439     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("8FG"));
440     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("8MG"));
441     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("8OG"));
442     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("9NE"));
443     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("9NF"));
444     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("9NR"));
445     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("9NV"));
446     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A  "));
447     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("A1P"));
448     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A23"));
449     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A2L"));
450     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A2M"));
451     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A34"));
452     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A35"));
453     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A38"));
454     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A39"));
455     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A3A"));
456     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A3P"));
457     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A40"));
458     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A43"));
459     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A44"));
460     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A47"));
461     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A5L"));
462     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("A5M"));
463     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("A5N"));
464     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("A5O"));
465     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("A66"));
466     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AA3"));
467     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AA4"));
468     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("AAR"));
469     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AB7"));
470     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ABA"));
471     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ABR"));
472     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ABS"));
473     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ABT"));
474     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ACB"));
475     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("ACL"));
476     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AD2"));
477     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("ADD"));
478     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ADX"));
479     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AEA"));
480     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("AEI"));
481     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AET"));
482     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("AFA"));
483     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("AFF"));
484     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("AFG"));
485     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("AGM"));
486     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("AGT"));
487     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("AHB"));
488     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AHH"));
489     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AHO"));
490     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AHP"));
491     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AHS"));
492     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AHT"));
493     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AIB"));
494     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("AKL"));
495     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("AKZ"));
496     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALA"));
497     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALC"));
498     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALM"));
499     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALN"));
500     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("ALO"));
501     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("ALQ"));
502     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALS"));
503     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALT"));
504     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ALV"));
505     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("ALY"));
506     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AN8"));
507     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AP7"));
508     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("APE"));
509     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("APH"));
510     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("API"));
511     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("APK"));
512     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("APM"));
513     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("APP"));
514     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("AR2"));
515     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("AR4"));
516     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("AR7"));
517     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("ARG"));
518     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("ARM"));
519     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("ARO"));
520     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("ARV"));
521     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AS "));
522     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("AS2"));
523     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AS9"));
524     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASA"));
525     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASB"));
526     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASI"));
527     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASK"));
528     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASL"));
529     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("ASM"));
530     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ASN"));
531     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASP"));
532     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("ASQ"));
533     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ASU"));
534     assertEquals("ASX", ResidueProperties.getCanonicalAminoAcid("ASX"));
535     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("ATD"));
536     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("ATL"));
537     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("ATM"));
538     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AVC"));
539     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("AVN"));
540     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("AYA"));
541     assertEquals("AYG", ResidueProperties.getCanonicalAminoAcid("AYG"));
542     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("AZK"));
543     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("AZS"));
544     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("AZY"));
545     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("B1F"));
546     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("B1P"));
547     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("B2A"));
548     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("B2F"));
549     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("B2I"));
550     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("B2V"));
551     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("B3A"));
552     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("B3D"));
553     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("B3E"));
554     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("B3K"));
555     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("B3L"));
556     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("B3M"));
557     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("B3Q"));
558     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("B3S"));
559     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("B3T"));
560     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("B3U"));
561     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("B3X"));
562     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("B3Y"));
563     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BB6"));
564     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BB7"));
565     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("BB8"));
566     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BB9"));
567     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BBC"));
568     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BCS"));
569     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("BE2"));
570     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("BFD"));
571     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("BG1"));
572     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("BGM"));
573     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("BH2"));
574     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("BHD"));
575     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("BIF"));
576     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("BIL"));
577     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("BIU"));
578     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("BJH"));
579     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("BLE"));
580     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("BLY"));
581     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("BMP"));
582     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("BMT"));
583     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("BNN"));
584     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("BNO"));
585     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("BOE"));
586     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("BOR"));
587     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BPE"));
588     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("BRU"));
589     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("BSE"));
590     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("BT5"));
591     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("BTA"));
592     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BTC"));
593     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("BTR"));
594     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("BUC"));
595     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("BUG"));
596     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("BVP"));
597     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("BZG"));
598     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C  "));
599     assertEquals("TYG", ResidueProperties.getCanonicalAminoAcid("C12"));
600     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("C1X"));
601     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C25"));
602     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C2L"));
603     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C2S"));
604     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C31"));
605     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C32"));
606     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C34"));
607     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C36"));
608     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C37"));
609     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C38"));
610     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C3Y"));
611     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C42"));
612     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C43"));
613     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C45"));
614     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C46"));
615     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C49"));
616     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C4R"));
617     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C4S"));
618     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C5C"));
619     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("C66"));
620     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("C6C"));
621     assertEquals("TFG", ResidueProperties.getCanonicalAminoAcid("C99"));
622     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CAF"));
623     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CAL"));
624     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CAR"));
625     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CAS"));
626     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CAV"));
627     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CAY"));
628     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CB2"));
629     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CBR"));
630     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CBV"));
631     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CCC"));
632     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("CCL"));
633     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CCS"));
634     assertEquals("CYG", ResidueProperties.getCanonicalAminoAcid("CCY"));
635     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CDE"));
636     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CDV"));
637     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CDW"));
638     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CEA"));
639     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CFL"));
640     assertEquals("FCYG", ResidueProperties.getCanonicalAminoAcid("CFY")); // check
641     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("CG1"));
642     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("CGA"));
643     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("CGU"));
644     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CH "));
645     assertEquals("MYG", ResidueProperties.getCanonicalAminoAcid("CH6"));
646     assertEquals("KYG", ResidueProperties.getCanonicalAminoAcid("CH7"));
647     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CHF"));
648     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CHG"));
649     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("CHP"));
650     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CHS"));
651     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("CIR"));
652     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("CJO"));
653     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("CLE"));
654     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("CLG"));
655     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("CLH"));
656     assertEquals("AFG", ResidueProperties.getCanonicalAminoAcid("CLV"));
657     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("CM0"));
658     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CME"));
659     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CMH"));
660     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CML"));
661     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CMR"));
662     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CMT"));
663     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("CNU"));
664     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CP1"));
665     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CPC"));
666     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CPI"));
667     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("CQR"));
668     assertEquals("TLG", ResidueProperties.getCanonicalAminoAcid("CR0"));
669     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("CR2"));
670     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("CR5"));
671     assertEquals("KYG", ResidueProperties.getCanonicalAminoAcid("CR7"));
672     assertEquals("HYG", ResidueProperties.getCanonicalAminoAcid("CR8"));
673     assertEquals("TWG", ResidueProperties.getCanonicalAminoAcid("CRF"));
674     assertEquals("THG", ResidueProperties.getCanonicalAminoAcid("CRG"));
675     assertEquals("MYG", ResidueProperties.getCanonicalAminoAcid("CRK"));
676     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("CRO"));
677     assertEquals("QYG", ResidueProperties.getCanonicalAminoAcid("CRQ"));
678     assertEquals("EYG", ResidueProperties.getCanonicalAminoAcid("CRU"));
679     assertEquals("ASG", ResidueProperties.getCanonicalAminoAcid("CRW"));
680     assertEquals("ASG", ResidueProperties.getCanonicalAminoAcid("CRX"));
681     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CS0"));
682     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CS1"));
683     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CS3"));
684     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CS4"));
685     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("CS8"));
686     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSA"));
687     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSB"));
688     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSD"));
689     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSE"));
690     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSF"));
691     assertEquals("SHG", ResidueProperties.getCanonicalAminoAcid("CSH"));
692     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("CSI"));
693     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSJ"));
694     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSL"));
695     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSO"));
696     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSP"));
697     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSR"));
698     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSS"));
699     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSU"));
700     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSW"));
701     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSX"));
702     assertEquals("SYG", ResidueProperties.getCanonicalAminoAcid("CSY"));
703     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CSZ"));
704     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("CTE"));
705     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("CTG"));
706     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("CTH"));
707     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CUC"));
708     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("CWR"));
709     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("CXM"));
710     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CY0"));
711     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CY1"));
712     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CY3"));
713     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CY4"));
714     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYA"));
715     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYD"));
716     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYF"));
717     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYG"));
718     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("CYJ"));
719     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYM"));
720     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYQ"));
721     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYR"));
722     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CYS"));
723     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CZ2"));
724     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("CZO"));
725     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("CZZ"));
726     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("D11"));
727     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("D1P"));
728     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("D3 "));
729     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("D33"));
730     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("D3P"));
731     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("D3T"));
732     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("D4M"));
733     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("D4P"));
734     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DA "));
735     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DA2"));
736     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DAB"));
737     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("DAH"));
738     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DAL"));
739     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("DAR"));
740     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("DAS"));
741     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("DBB"));
742     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DBM"));
743     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("DBS"));
744     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("DBU"));
745     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("DBY"));
746     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DBZ"));
747     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DC "));
748     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DC2"));
749     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("DCG"));
750     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DCI"));
751     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DCL"));
752     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DCT"));
753     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DCY"));
754     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("DDE"));
755     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("DDG"));
756     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("DDN"));
757     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DDX"));
758     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DFC"));
759     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("DFG"));
760     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DFI"));
761     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DFO"));
762     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DFT"));
763     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("DG "));
764     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("DGH"));
765     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("DGI"));
766     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("DGL"));
767     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("DGN"));
768     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("DHA"));
769     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("DHI"));
770     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DHL"));
771     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("DHN"));
772     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DHP"));
773     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("DHU"));
774     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("DHV"));
775     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("DI "));
776     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("DIL"));
777     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("DIR"));
778     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("DIV"));
779     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("DLE"));
780     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("DLS"));
781     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("DLY"));
782     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("DM0"));
783     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DMH"));
784     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("DMK"));
785     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DMT"));
786     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DN "));
787     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("DNE"));
788     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("DNG"));
789     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("DNL"));
790     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("DNM"));
791     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DNP"));
792     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DNR"));
793     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("DNS"));
794     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("DOA"));
795     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DOC"));
796     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("DOH"));
797     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("DON"));
798     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("DPB"));
799     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("DPH"));
800     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("DPL"));
801     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DPP"));
802     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("DPQ"));
803     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("DPR"));
804     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DPY"));
805     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("DRM"));
806     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DRP"));
807     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("DRT"));
808     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DRZ"));
809     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("DSE"));
810     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DSG"));
811     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("DSN"));
812     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("DSP"));
813     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("DT "));
814     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("DTH"));
815     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("DTR"));
816     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("DTY"));
817     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("DU "));
818     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("DVA"));
819     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DXD"));
820     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("DXN"));
821     assertEquals("DYG", ResidueProperties.getCanonicalAminoAcid("DYG"));
822     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("DYS"));
823     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("DZM"));
824     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("E  "));
825     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("E1X"));
826     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("ECC"));
827     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("EDA"));
828     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("EFC"));
829     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("EHP"));
830     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("EIT"));
831     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ENP"));
832     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("ESB"));
833     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("ESC"));
834     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("EXB"));
835     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("EXY"));
836     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("EY5"));
837     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("EYS"));
838     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("F2F"));
839     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("FA2"));
840     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("FA5"));
841     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("FAG"));
842     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("FAI"));
843     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("FB5"));
844     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("FB6"));
845     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("FCL"));
846     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("FFD"));
847     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("FGA"));
848     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("FGL"));
849     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("FGP"));
850     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("FHL"));
851     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("FHO"));
852     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("FHU"));
853     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("FLA"));
854     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("FLE"));
855     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("FLT"));
856     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("FME"));
857     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("FMG"));
858     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("FMU"));
859     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("FOE"));
860     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("FOX"));
861     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("FP9"));
862     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("FPA"));
863     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("FRD"));
864     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("FT6"));
865     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("FTR"));
866     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("FTY"));
867     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("FVA"));
868     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("FZN"));
869     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G  "));
870     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G25"));
871     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G2L"));
872     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G2S"));
873     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G31"));
874     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G32"));
875     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G33"));
876     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G36"));
877     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G38"));
878     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G42"));
879     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G46"));
880     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G47"));
881     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G48"));
882     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G49"));
883     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("G4P"));
884     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("G7M"));
885     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GAO"));
886     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GAU"));
887     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("GCK"));
888     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("GCM"));
889     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GDP"));
890     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GDR"));
891     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GFL"));
892     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GGL"));
893     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GH3"));
894     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("GHG"));
895     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GHP"));
896     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GL3"));
897     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("GLH"));
898     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GLJ"));
899     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GLK"));
900     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("GLM"));
901     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("GLN"));
902     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GLQ"));
903     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GLU"));
904     assertEquals("GLX", ResidueProperties.getCanonicalAminoAcid("GLX"));
905     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GLY"));
906     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GLZ"));
907     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GMA"));
908     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GMS"));
909     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("GMU"));
910     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GN7"));
911     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("GND"));
912     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("GNE"));
913     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GOM"));
914     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("GPL"));
915     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GS "));
916     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GSC"));
917     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GSR"));
918     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GSS"));
919     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("GSU"));
920     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("GT9"));
921     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("GTP"));
922     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("GVL"));
923     assertEquals("CYG", ResidueProperties.getCanonicalAminoAcid("GYC"));
924     assertEquals("SYG", ResidueProperties.getCanonicalAminoAcid("GYS"));
925     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("H2U"));
926     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("H5M"));
927     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("HAC"));
928     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("HAR"));
929     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HBN"));
930     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("HCS"));
931     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("HDP"));
932     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("HEU"));
933     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("HFA"));
934     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("HGL"));
935     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HHI"));
936     assertEquals("AK", ResidueProperties.getCanonicalAminoAcid("HHK")); // check
937     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HIA"));
938     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HIC"));
939     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HIP"));
940     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HIQ"));
941     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HIS"));
942     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("HL2"));
943     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("HLU"));
944     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("HMR"));
945     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("HOL"));
946     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("HPC"));
947     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("HPE"));
948     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("HPH"));
949     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("HPQ"));
950     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("HQA"));
951     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("HRG"));
952     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("HRP"));
953     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HS8"));
954     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HS9"));
955     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("HSE"));
956     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("HSL"));
957     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("HSO"));
958     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("HTI"));
959     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("HTN"));
960     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("HTR"));
961     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("HV5"));
962     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("HVA"));
963     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("HY3"));
964     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("HYP"));
965     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("HZP"));
966     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("I  "));
967     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("I2M"));
968     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("I58"));
969     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("I5C"));
970     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("IAM"));
971     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("IAR"));
972     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("IAS"));
973     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("IC "));
974     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("IEL"));
975     assertEquals("HYG", ResidueProperties.getCanonicalAminoAcid("IEY"));
976     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("IG "));
977     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("IGL"));
978     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("IGU"));
979     assertEquals("SHG", ResidueProperties.getCanonicalAminoAcid("IIC"));
980     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("IIL"));
981     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("ILE"));
982     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("ILG"));
983     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("ILX"));
984     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("IMC"));
985     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("IML"));
986     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("IOY"));
987     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("IPG"));
988     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("IPN"));
989     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("IRN"));
990     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("IT1"));
991     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("IU "));
992     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("IYR"));
993     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("IYT"));
994     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("IZO"));
995     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("JJJ"));
996     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("JJK"));
997     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("JJL"));
998     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("JW5"));
999     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("K1R"));
1000     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("KAG"));
1001     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("KCX"));
1002     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("KGC"));
1003     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("KNB"));
1004     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("KOR"));
1005     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("KPI"));
1006     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("KST"));
1007     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("KYQ"));
1008     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("L2A"));
1009     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LA2"));
1010     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("LAA"));
1011     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("LAL"));
1012     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LBY"));
1013     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("LC "));
1014     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("LCA"));
1015     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("LCC"));
1016     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("LCG"));
1017     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("LCH"));
1018     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LCK"));
1019     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LCX"));
1020     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LDH"));
1021     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LED"));
1022     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LEF"));
1023     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LEH"));
1024     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("LEI"));
1025     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LEM"));
1026     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LEN"));
1027     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("LET"));
1028     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LEU"));
1029     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("LEX"));
1030     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("LG "));
1031     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("LGP"));
1032     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("LHC"));
1033     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("LHU"));
1034     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("LKC"));
1035     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LLP"));
1036     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LLY"));
1037     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("LME"));
1038     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LMF"));
1039     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("LMQ"));
1040     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("LMS"));
1041     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LP6"));
1042     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("LPD"));
1043     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("LPG"));
1044     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("LPL"));
1045     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("LPS"));
1046     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("LSO"));
1047     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("LTA"));
1048     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("LTR"));
1049     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("LVG"));
1050     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("LVN"));
1051     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYF"));
1052     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYK"));
1053     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYM"));
1054     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYN"));
1055     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYR"));
1056     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYS"));
1057     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYX"));
1058     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("LYZ"));
1059     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("M0H"));
1060     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("M1G"));
1061     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("M2G"));
1062     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("M2L"));
1063     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("M2S"));
1064     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("M30"));
1065     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("M3L"));
1066     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("M5M"));
1067     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MA "));
1068     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MA6"));
1069     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MA7"));
1070     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MAA"));
1071     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MAD"));
1072     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("MAI"));
1073     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("MBQ"));
1074     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("MBZ"));
1075     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("MC1"));
1076     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MCG"));
1077     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("MCL"));
1078     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("MCS"));
1079     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("MCY"));
1080     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("MD3"));
1081     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MD6"));
1082     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MDH"));
1083     assertEquals("ASG", ResidueProperties.getCanonicalAminoAcid("MDO"));
1084     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("MDR"));
1085     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("MEA"));
1086     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MED"));
1087     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("MEG"));
1088     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("MEN"));
1089     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("MEP"));
1090     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("MEQ"));
1091     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MET"));
1092     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MEU"));
1093     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MF3"));
1094     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("MFC"));
1095     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MG1"));
1096     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("MGG"));
1097     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("MGN"));
1098     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MGQ"));
1099     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MGV"));
1100     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MGY"));
1101     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("MHL"));
1102     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MHO"));
1103     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("MHS"));
1104     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MIA"));
1105     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("MIS"));
1106     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("MK8"));
1107     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("ML3"));
1108     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("MLE"));
1109     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("MLL"));
1110     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("MLY"));
1111     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("MLZ"));
1112     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MME"));
1113     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("MMO"));
1114     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("MMT"));
1115     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("MND"));
1116     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("MNL"));
1117     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("MNU"));
1118     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("MNV"));
1119     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MOD"));
1120     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("MP8"));
1121     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MPH"));
1122     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MPJ"));
1123     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MPQ"));
1124     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MRG"));
1125     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("MSA"));
1126     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MSE"));
1127     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MSL"));
1128     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MSO"));
1129     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("MSP"));
1130     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("MT2"));
1131     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("MTR"));
1132     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("MTU"));
1133     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("MTY"));
1134     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("MVA"));
1135     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("N  "));
1136     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("N10"));
1137     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("N2C"));
1138     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("N5I"));
1139     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("N5M"));
1140     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("N6G"));
1141     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("N7P"));
1142     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("NA8"));
1143     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("NAL"));
1144     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("NAM"));
1145     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("NB8"));
1146     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("NBQ"));
1147     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("NC1"));
1148     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("NCB"));
1149     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("NCX"));
1150     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("NCY"));
1151     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("NDF"));
1152     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("NDN"));
1153     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("NEM"));
1154     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("NEP"));
1155     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("NF2"));
1156     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("NFA"));
1157     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("NHL"));
1158     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("NIT"));
1159     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("NIY"));
1160     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("NLE"));
1161     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("NLN"));
1162     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("NLO"));
1163     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("NLP"));
1164     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("NLQ"));
1165     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("NMC"));
1166     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("NMM"));
1167     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("NMS"));
1168     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("NMT"));
1169     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("NNH"));
1170     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("NP3"));
1171     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("NPH"));
1172     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("NPI"));
1173     assertEquals("LYG", ResidueProperties.getCanonicalAminoAcid("NRP"));
1174     assertEquals("MYG", ResidueProperties.getCanonicalAminoAcid("NRQ"));
1175     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("NSK"));
1176     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("NTY"));
1177     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("NVA"));
1178     assertEquals("TWG", ResidueProperties.getCanonicalAminoAcid("NYC"));
1179     assertEquals("NYG", ResidueProperties.getCanonicalAminoAcid("NYG"));
1180     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("NYM"));
1181     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("NYS"));
1182     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("NZH"));
1183     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("O12"));
1184     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("O2C"));
1185     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("O2G"));
1186     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("OAD"));
1187     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("OAS"));
1188     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("OBF"));
1189     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("OBS"));
1190     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("OCS"));
1191     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("OCY"));
1192     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ODP"));
1193     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("OHI"));
1194     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("OHS"));
1195     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("OIC"));
1196     assertEquals("ILE", ResidueProperties.getCanonicalAminoAcid("OIP"));
1197     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("OLE"));
1198     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("OLT"));
1199     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("OLZ"));
1200     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("OMC"));
1201     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("OMG"));
1202     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("OMT"));
1203     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("OMU"));
1204     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("ONE"));
1205     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ONH"));
1206     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("ONL"));
1207     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("OPR"));
1208     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ORN"));
1209     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("ORQ"));
1210     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("OSE"));
1211     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("OTB"));
1212     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("OTH"));
1213     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("OTY"));
1214     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("OXX"));
1215     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("P  "));
1216     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("P1L"));
1217     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("P1P"));
1218     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("P2T"));
1219     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("P2U"));
1220     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("P2Y"));
1221     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("P5P"));
1222     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("PAQ"));
1223     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("PAS"));
1224     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("PAT"));
1225     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("PAU"));
1226     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("PBB"));
1227     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PBF"));
1228     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("PBT"));
1229     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("PCA"));
1230     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("PCC"));
1231     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PCE"));
1232     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PCS"));
1233     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PDL"));
1234     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("PDU"));
1235     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("PEC"));
1236     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PF5"));
1237     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PFF"));
1238     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PFX"));
1239     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("PG1"));
1240     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("PG7"));
1241     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("PG9"));
1242     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PGL"));
1243     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("PGN"));
1244     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("PGP"));
1245     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("PGY"));
1246     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PHA"));
1247     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("PHD"));
1248     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PHE"));
1249     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PHI"));
1250     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PHL"));
1251     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PHM"));
1252     assertEquals("AYG", ResidueProperties.getCanonicalAminoAcid("PIA"));
1253     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PIV"));
1254     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("PLE"));
1255     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PM3"));
1256     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("PMT"));
1257     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("POM"));
1258     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PPN"));
1259     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("PPU"));
1260     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("PPW"));
1261     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("PQ1"));
1262     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("PR3"));
1263     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("PR5"));
1264     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("PR9"));
1265     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("PRN"));
1266     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("PRO"));
1267     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("PRS"));
1268     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("PSA"));
1269     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("PSH"));
1270     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("PST"));
1271     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("PSU"));
1272     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("PSW"));
1273     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PTA"));
1274     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("PTH"));
1275     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("PTM"));
1276     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("PTR"));
1277     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("PU "));
1278     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("PUY"));
1279     assertEquals("HIS", ResidueProperties.getCanonicalAminoAcid("PVH"));
1280     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("PVL"));
1281     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("PYA"));
1282     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("PYO"));
1283     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("PYX"));
1284     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("PYY"));
1285     assertEquals("QLG", ResidueProperties.getCanonicalAminoAcid("QLG"));
1286     assertEquals("GLN", ResidueProperties.getCanonicalAminoAcid("QMM"));
1287     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("QPA"));
1288     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("QPH"));
1289     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("QUO"));
1290     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("R  "));
1291     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("R1A"));
1292     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("R4K"));
1293     assertEquals("HYG", ResidueProperties.getCanonicalAminoAcid("RC7"));
1294     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("RE0"));
1295     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("RE3"));
1296     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("RIA"));
1297     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("RMP"));
1298     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("RON"));
1299     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("RT "));
1300     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("RTP"));
1301     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("S1H"));
1302     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("S2C"));
1303     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("S2D"));
1304     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("S2M"));
1305     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("S2P"));
1306     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("S4A"));
1307     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("S4C"));
1308     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("S4G"));
1309     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("S4U"));
1310     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("S6G"));
1311     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SAC"));
1312     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SAH"));
1313     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("SAR"));
1314     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SBL"));
1315     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SC "));
1316     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SCH"));
1317     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SCS"));
1318     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SCY"));
1319     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("SD2"));
1320     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("SDG"));
1321     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SDP"));
1322     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SEB"));
1323     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("SEC"));
1324     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("SEG"));
1325     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SEL"));
1326     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SEM"));
1327     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SEN"));
1328     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SEP"));
1329     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SER"));
1330     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SET"));
1331     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SGB"));
1332     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SHC"));
1333     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("SHP"));
1334     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("SHR"));
1335     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SIB"));
1336     assertEquals("DC", ResidueProperties.getCanonicalAminoAcid("SIC")); // check
1337     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("SLA"));
1338     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("SLR"));
1339     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("SLZ"));
1340     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SMC"));
1341     assertEquals("MET", ResidueProperties.getCanonicalAminoAcid("SME"));
1342     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("SMF"));
1343     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("SMP"));
1344     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("SMT"));
1345     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SNC"));
1346     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("SNN"));
1347     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SOC"));
1348     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("SOS"));
1349     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SOY"));
1350     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("SPT"));
1351     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("SRA"));
1352     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("SSU"));
1353     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("STY"));
1354     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("SUB"));
1355     assertEquals("DG", ResidueProperties.getCanonicalAminoAcid("SUI"));
1356     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SUN"));
1357     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("SUR"));
1358     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SVA"));
1359     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SVV"));
1360     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SVW"));
1361     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SVX"));
1362     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("SVY"));
1363     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("SVZ"));
1364     assertEquals("SWG", ResidueProperties.getCanonicalAminoAcid("SWG"));
1365     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("SYS"));
1366     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T  "));
1367     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("T11"));
1368     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T23"));
1369     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T2S"));
1370     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("T2T"));
1371     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("T31"));
1372     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T32"));
1373     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T36"));
1374     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T37"));
1375     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T38"));
1376     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T39"));
1377     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T3P"));
1378     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T41"));
1379     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T48"));
1380     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T49"));
1381     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T4S"));
1382     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("T5O"));
1383     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("T5S"));
1384     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("T66"));
1385     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("T6A"));
1386     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TA3"));
1387     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("TA4"));
1388     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TAF"));
1389     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("TAL"));
1390     assertEquals("ASP", ResidueProperties.getCanonicalAminoAcid("TAV"));
1391     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("TBG"));
1392     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TBM"));
1393     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("TC1"));
1394     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TCP"));
1395     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TCQ"));
1396     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TCR"));
1397     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("TCY"));
1398     assertEquals("LEU", ResidueProperties.getCanonicalAminoAcid("TDD"));
1399     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TDY"));
1400     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TFE"));
1401     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("TFO"));
1402     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("TFQ"));
1403     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TFT"));
1404     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("TGP"));
1405     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TH6"));
1406     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("THC"));
1407     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("THO"));
1408     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("THR"));
1409     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("THX"));
1410     assertEquals("ARG", ResidueProperties.getCanonicalAminoAcid("THZ"));
1411     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("TIH"));
1412     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("TLB"));
1413     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TLC"));
1414     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("TLN"));
1415     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TMB"));
1416     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TMD"));
1417     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("TNB"));
1418     assertEquals("SER", ResidueProperties.getCanonicalAminoAcid("TNR"));
1419     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TOX"));
1420     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TP1"));
1421     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("TPC"));
1422     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("TPG"));
1423     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("TPH"));
1424     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TPL"));
1425     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TPO"));
1426     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TPQ"));
1427     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TQI"));
1428     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TQQ"));
1429     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRF"));
1430     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("TRG"));
1431     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRN"));
1432     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRO"));
1433     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRP"));
1434     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRQ"));
1435     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRW"));
1436     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TRX"));
1437     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("TS "));
1438     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("TST"));
1439     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("TT "));
1440     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TTD"));
1441     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("TTI"));
1442     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("TTM"));
1443     assertEquals("TRP", ResidueProperties.getCanonicalAminoAcid("TTQ"));
1444     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TTS"));
1445     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TY1"));
1446     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TY2"));
1447     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TY3"));
1448     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TY5"));
1449     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYB"));
1450     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYI"));
1451     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYJ"));
1452     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYN"));
1453     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYO"));
1454     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYQ"));
1455     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYR"));
1456     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYS"));
1457     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYT"));
1458     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("TYU"));
1459     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYW"));
1460     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("TYX"));
1461     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("TYY"));
1462     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("TZB"));
1463     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("TZO"));
1464     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U  "));
1465     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U25"));
1466     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U2L"));
1467     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U2N"));
1468     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U2P"));
1469     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U31"));
1470     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U33"));
1471     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U34"));
1472     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U36"));
1473     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U37"));
1474     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("U8U"));
1475     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UAR"));
1476     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UCL"));
1477     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UD5"));
1478     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("UDP"));
1479     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("UFP"));
1480     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UFR"));
1481     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UFT"));
1482     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("UMA"));
1483     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UMP"));
1484     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UMS"));
1485     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("UN1"));
1486     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("UN2"));
1487     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("UNK"));
1488     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("UR3"));
1489     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("URD"));
1490     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("US1"));
1491     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("US2"));
1492     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("US3"));
1493     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("US5"));
1494     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("USM"));
1495     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("VAD"));
1496     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("VAF"));
1497     assertEquals("VAL", ResidueProperties.getCanonicalAminoAcid("VAL"));
1498     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("VB1"));
1499     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("VDL"));
1500     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("VLL"));
1501     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("VLM"));
1502     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("VMS"));
1503     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("VOL"));
1504     assertEquals("GYG", ResidueProperties.getCanonicalAminoAcid("WCR"));
1505     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("X  "));
1506     assertEquals("GLU", ResidueProperties.getCanonicalAminoAcid("X2W"));
1507     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("X4A"));
1508     assertEquals("AFG", ResidueProperties.getCanonicalAminoAcid("X9Q"));
1509     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("XAD"));
1510     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("XAE"));
1511     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("XAL"));
1512     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("XAR"));
1513     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("XCL"));
1514     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("XCN"));
1515     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("XCP"));
1516     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("XCR"));
1517     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("XCS"));
1518     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("XCT"));
1519     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("XCY"));
1520     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("XGA"));
1521     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("XGL"));
1522     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("XGR"));
1523     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("XGU"));
1524     assertEquals("PRO", ResidueProperties.getCanonicalAminoAcid("XPR"));
1525     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("XSN"));
1526     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("XTH"));
1527     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("XTL"));
1528     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("XTR"));
1529     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("XTS"));
1530     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("XTY"));
1531     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("XUA"));
1532     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("XUG"));
1533     assertEquals("LYS", ResidueProperties.getCanonicalAminoAcid("XX1"));
1534     assertEquals("THG", ResidueProperties.getCanonicalAminoAcid("XXY"));
1535     assertEquals("DYG", ResidueProperties.getCanonicalAminoAcid("XYG"));
1536     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("Y  "));
1537     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("YCM"));
1538     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("YG "));
1539     assertEquals("TYR", ResidueProperties.getCanonicalAminoAcid("YOF"));
1540     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("YRR"));
1541     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("YYG"));
1542     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("Z  "));
1543     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("Z01"));
1544     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ZAD"));
1545     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ZAL"));
1546     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("ZBC"));
1547     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("ZBU"));
1548     assertEquals("PHE", ResidueProperties.getCanonicalAminoAcid("ZCL"));
1549     assertEquals("CYS", ResidueProperties.getCanonicalAminoAcid("ZCY"));
1550     assertEquals("UR3", ResidueProperties.getCanonicalAminoAcid("ZDU"));
1551     assertEquals("XAA", ResidueProperties.getCanonicalAminoAcid("ZFB"));
1552     assertEquals("GLY", ResidueProperties.getCanonicalAminoAcid("ZGU"));
1553     assertEquals("ASN", ResidueProperties.getCanonicalAminoAcid("ZHP"));
1554     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("ZTH"));
1555     assertEquals("THR", ResidueProperties.getCanonicalAminoAcid("ZU0"));
1556     assertEquals("ALA", ResidueProperties.getCanonicalAminoAcid("ZZJ"));
1557
1558     assertEquals(null, ResidueProperties.getCanonicalAminoAcid(null));
1559   }
1560
1561   @Test(groups = { "Functional" })
1562   public void testGetSingleCharacterCode()
1563   {
1564     assertEquals('0', ResidueProperties.getSingleCharacterCode(null));
1565     assertEquals('0', ResidueProperties.getSingleCharacterCode(null));
1566     assertEquals('0', ResidueProperties.getSingleCharacterCode(""));
1567     assertEquals('Q', ResidueProperties.getSingleCharacterCode("GLN"));
1568     assertEquals('Q', ResidueProperties.getSingleCharacterCode("Gln"));
1569     assertEquals('Q', ResidueProperties.getSingleCharacterCode("gln"));
1570   }
1571
1572   @Test(groups = { "Functional" })
1573   public void testGetDssp3State()
1574   {
1575     assertNull(ResidueProperties.getDssp3state(null));
1576     assertEquals("", ResidueProperties.getDssp3state(""));
1577     String foo = "0123 []<>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
1578     String bar = "                                    E  E HHH                 ";
1579     assertEquals(bar, ResidueProperties.getDssp3state(foo));
1580   }
1581
1582   @Test(groups = { "Functional" })
1583   public void testPhysicoChemicalProperties()
1584   {
1585     checkProperty("aromatic", "FYWH-*");
1586     checkProperty("aliphatic", "IVL-*");
1587     checkProperty("tiny", "GAS-*");
1588     checkProperty("small", "VCTGACSDNP-*");
1589     checkProperty("charged", "HKRDE-*");
1590     checkProperty("negative", "DE-*");
1591     checkProperty("polar", "YWHRKTSNDEQ-*X");
1592     checkProperty("positive", "HKR-*");
1593     checkProperty("proline", "P-*");
1594     checkProperty("hydrophobic", "MILVFYWHKTGAC-*X");
1595   }
1596
1597   /**
1598    * Verify that the residues in the list have the named property, and other
1599    * residues do not
1600    * 
1601    * @param property
1602    * @param residues
1603    */
1604   void checkProperty(String property, String residues)
1605   {
1606     Map<String, Integer> props = ResidueProperties.propHash.get(property);
1607
1608     /*
1609      * assert residues have the property (value 1 in lookup)
1610      */
1611     for (char res : residues.toCharArray())
1612     {
1613       assertEquals(res + " should be " + property, 1,
1614               props.get(String.valueOf(res)).intValue());
1615     }
1616
1617     /*
1618      * assert other residues do not (value 0 in lookup)
1619      */
1620     for (String res : ResidueProperties.aa)
1621     {
1622       if (!residues.contains(res))
1623       {
1624         Integer propValue = props.get(String.valueOf(res));
1625
1626         if (propValue != null)
1627         {
1628           /*
1629            * conservation calculation assigns unexpected symbols
1630            * the same value as '-'; here we just check those which
1631            * explicitly do not have the property
1632            */
1633           assertEquals(res + " should not be " + property, 0,
1634                   propValue.intValue());
1635         }
1636       }
1637     }
1638   }
1639 }