2 * Jalview - A Sequence Alignment Editor and Viewer
\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
\r
5 * This program is free software; you can redistribute it and/or
\r
6 * modify it under the terms of the GNU General Public License
\r
7 * as published by the Free Software Foundation; either version 2
\r
8 * of the License, or (at your option) any later version.
\r
10 * This program is distributed in the hope that it will be useful,
\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 * GNU General Public License for more details.
\r
15 * You should have received a copy of the GNU General Public License
\r
16 * along with this program; if not, write to the Free Software
\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
\r
19 package jalview.schemes;
\r
25 public class ResidueProperties
\r
27 //Stores residue codes/names and colours and other things
\r
28 public static Hashtable aaHash = new Hashtable(); // stores the number value of the aa
\r
29 public static Hashtable aa3Hash = new Hashtable();
\r
30 public static Hashtable aa2Triplet = new Hashtable();
\r
31 public static Hashtable nucleotideHash = new Hashtable();
\r
35 aaHash.put("A", new Integer(0));
\r
36 aaHash.put("R", new Integer(1));
\r
37 aaHash.put("N", new Integer(2));
\r
38 aaHash.put("D", new Integer(3));
\r
39 aaHash.put("C", new Integer(4));
\r
40 aaHash.put("Q", new Integer(5));
\r
41 aaHash.put("E", new Integer(6));
\r
42 aaHash.put("G", new Integer(7));
\r
43 aaHash.put("H", new Integer(8));
\r
44 aaHash.put("I", new Integer(9));
\r
45 aaHash.put("L", new Integer(10));
\r
46 aaHash.put("K", new Integer(11));
\r
47 aaHash.put("M", new Integer(12));
\r
48 aaHash.put("F", new Integer(13));
\r
49 aaHash.put("P", new Integer(14));
\r
50 aaHash.put("S", new Integer(15));
\r
51 aaHash.put("T", new Integer(16));
\r
52 aaHash.put("W", new Integer(17));
\r
53 aaHash.put("Y", new Integer(18));
\r
54 aaHash.put("V", new Integer(19));
\r
55 aaHash.put("B", new Integer(20));
\r
56 aaHash.put("Z", new Integer(21));
\r
57 aaHash.put("X", new Integer(22));
\r
58 aaHash.put("a", new Integer(0));
\r
59 aaHash.put("r", new Integer(1));
\r
60 aaHash.put("n", new Integer(2));
\r
61 aaHash.put("d", new Integer(3));
\r
62 aaHash.put("c", new Integer(4));
\r
63 aaHash.put("q", new Integer(5));
\r
64 aaHash.put("e", new Integer(6));
\r
65 aaHash.put("g", new Integer(7));
\r
66 aaHash.put("h", new Integer(8));
\r
67 aaHash.put("i", new Integer(9));
\r
68 aaHash.put("l", new Integer(10));
\r
69 aaHash.put("k", new Integer(11));
\r
70 aaHash.put("m", new Integer(12));
\r
71 aaHash.put("f", new Integer(13));
\r
72 aaHash.put("p", new Integer(14));
\r
73 aaHash.put("s", new Integer(15));
\r
74 aaHash.put("t", new Integer(16));
\r
75 aaHash.put("w", new Integer(17));
\r
76 aaHash.put("y", new Integer(18));
\r
77 aaHash.put("v", new Integer(19));
\r
78 aaHash.put("b", new Integer(20));
\r
79 aaHash.put("z", new Integer(21));
\r
80 aaHash.put("x", new Integer(22));
\r
81 aaHash.put("-", new Integer(23));
\r
82 aaHash.put("*", new Integer(23));
\r
83 aaHash.put(".", new Integer(23));
\r
84 aaHash.put(" ", new Integer(23));
\r
89 nucleotideHash.put("A", new Integer(0));
\r
90 nucleotideHash.put("C", new Integer(1));
\r
91 nucleotideHash.put("G", new Integer(2));
\r
92 nucleotideHash.put("T", new Integer(3));
\r
93 nucleotideHash.put("U", new Integer(4));
\r
96 // These numbers should correspond to the indices in the Color hashes
\r
97 public static Hashtable aaSpecialsHash = new Hashtable();
\r
101 aaSpecialsHash.put("-", new Integer(23));
\r
102 aaSpecialsHash.put("*", new Integer(24));
\r
103 aaSpecialsHash.put(".", new Integer(25));
\r
104 aaSpecialsHash.put(" ", new Integer(26));
\r
109 aa3Hash.put("ALA", new Integer(0));
\r
110 aa3Hash.put("ARG", new Integer(1));
\r
111 aa3Hash.put("ASN", new Integer(2));
\r
112 aa3Hash.put("ASP", new Integer(3)); //D
\r
113 aa3Hash.put("CYS", new Integer(4));
\r
114 aa3Hash.put("GLN", new Integer(5)); //Q
\r
115 aa3Hash.put("GLU", new Integer(6)); // E
\r
116 aa3Hash.put("GLY", new Integer(7));
\r
117 aa3Hash.put("HIS", new Integer(8));
\r
118 aa3Hash.put("ILE", new Integer(9));
\r
119 aa3Hash.put("LEU", new Integer(10));
\r
120 aa3Hash.put("LYS", new Integer(11));
\r
121 aa3Hash.put("MET", new Integer(12));
\r
122 aa3Hash.put("PHE", new Integer(13));
\r
123 aa3Hash.put("PRO", new Integer(14));
\r
124 aa3Hash.put("SER", new Integer(15));
\r
125 aa3Hash.put("THR", new Integer(16));
\r
126 aa3Hash.put("TRP", new Integer(17));
\r
127 aa3Hash.put("TYR", new Integer(18));
\r
128 aa3Hash.put("VAL", new Integer(19));
\r
129 aa3Hash.put("B", new Integer(20));
\r
130 aa3Hash.put("Z", new Integer(21));
\r
131 aa3Hash.put("X", new Integer(22));
\r
132 aa3Hash.put("-", new Integer(23));
\r
133 aa3Hash.put("*", new Integer(23));
\r
134 aa3Hash.put(".", new Integer(23));
\r
135 aa3Hash.put(" ", new Integer(23));
\r
140 aa2Triplet.put("A", "ALA");
\r
141 aa2Triplet.put("R", "ARG");
\r
142 aa2Triplet.put("N", "ASN");
\r
143 aa2Triplet.put("D", "ASP");
\r
144 aa2Triplet.put("C", "CYS");
\r
145 aa2Triplet.put("Q", "GLN");
\r
146 aa2Triplet.put("E", "GLU");
\r
147 aa2Triplet.put("G", "GLY");
\r
148 aa2Triplet.put("H", "HIS");
\r
149 aa2Triplet.put("I", "ILE");
\r
150 aa2Triplet.put("L", "LEU");
\r
151 aa2Triplet.put("K", "LYS");
\r
152 aa2Triplet.put("M", "MET");
\r
153 aa2Triplet.put("F", "PHE");
\r
154 aa2Triplet.put("P", "PRO");
\r
155 aa2Triplet.put("S", "SER");
\r
156 aa2Triplet.put("T", "THR");
\r
157 aa2Triplet.put("W", "TRP");
\r
158 aa2Triplet.put("Y", "TYR");
\r
159 aa2Triplet.put("V", "VAL");
\r
162 public static String[] aa =
\r
164 "A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F",
\r
165 "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "
\r
167 public static Color midBlue = new Color(100, 100, 255);
\r
168 public static Vector scaleColours = new Vector();
\r
172 scaleColours.addElement(new Color(114, 0, 147));
\r
173 scaleColours.addElement(new Color(156, 0, 98));
\r
174 scaleColours.addElement(new Color(190, 0, 0));
\r
175 scaleColours.addElement(Color.red);
\r
176 scaleColours.addElement(new Color(255, 125, 0));
\r
177 scaleColours.addElement(Color.orange);
\r
178 scaleColours.addElement(new Color(255, 194, 85));
\r
179 scaleColours.addElement(Color.yellow);
\r
180 scaleColours.addElement(new Color(255, 255, 181));
\r
181 scaleColours.addElement(Color.white);
\r
184 public static Color[] taylor =
\r
186 new Color(204, 255, 0), // A Greenish-yellowy-yellow
\r
187 new Color(0, 0, 255), // R Blueish-bluey-blue
\r
188 new Color(204, 0, 255), // N Blueish-reddy-blue
\r
189 new Color(255, 0, 0), // D Reddish-reddy-red
\r
190 new Color(255, 255, 0), // C Yellowish-yellowy-yellow
\r
191 new Color(255, 0, 204), // Q Reddish-bluey-red
\r
192 new Color(255, 0, 102), // E Blueish-reddy-red
\r
193 new Color(255, 153, 0), // G Yellowy-reddy-yellow
\r
194 new Color(0, 102, 255), // H Greenish-bluey-blue
\r
195 new Color(102, 255, 0), // I Greenish-yellowy-green
\r
196 new Color(51, 255, 0), // L Yellowish-greeny-green
\r
197 new Color(102, 0, 255), // K Reddish-bluey-blue
\r
198 new Color(0, 255, 0), // M Greenish-greeny-green
\r
199 new Color(0, 255, 102), // F Blueish-greeny-green
\r
200 new Color(255, 204, 0), // P Reddish-yellowy-yellow
\r
201 new Color(255, 51, 0), // S Yellowish-reddy-red
\r
202 new Color(255, 102, 0), // T Reddish-yellowy-red
\r
203 new Color(0, 204, 255), // W Blueish-greeny-green
\r
204 new Color(0, 255, 204), // Y Greenish-bluey-green
\r
205 new Color(153, 255, 0), // V Yellowish-greeny-yellow
\r
213 public static Color[] nucleotide =
\r
215 new Color(100, 247, 63), // A
\r
216 new Color(255, 179, 64), // C
\r
217 new Color(235, 65, 60), // G
\r
218 new Color(60, 136, 238), // T
\r
219 new Color(60, 136, 238) // U
\r
221 public static Color[] color =
\r
230 Color.magenta, // G
\r
237 Color.magenta, // P
\r
252 // Dunno where I got these numbers from
\r
253 public static double[] hyd2 =
\r
279 public static double[] helix =
\r
281 1.42, 0.98, 0.67, 1.01, 0.70, 1.11, 1.51, 0.57, 1.00, 1.08, 1.21, 1.16,
\r
282 1.45, 1.13, 0.57, 0.77, 0.83, 1.08, 0.69, 1.06, 0.84, 1.31, 1.00, 0.0
\r
284 public static double helixmin = 0.57;
\r
285 public static double helixmax = 1.51;
\r
286 public static double[] strand =
\r
288 0.83, 0.93, 0.89, 0.54, 1.19, 1.10, 0.37, 0.75, 0.87, 1.60, 1.30, 0.74,
\r
289 1.05, 1.38, 0.55, 0.75, 1.19, 1.37, 1.47, 1.70, 0.72, 0.74, 1.0, 0.0
\r
291 public static double strandmin = 0.37;
\r
292 public static double strandmax = 1.7;
\r
293 public static double[] turn =
\r
295 0.66, 0.95, 1.56, 1.46, 1.19, 0.98, 0.74, 1.56, 0.95, 0.47, 0.59, 1.01,
\r
296 0.60, 0.60, 1.52, 1.43, 0.96, 0.96, 1.14, 0.50, 1.51, 0.86, 1.00, 0, 0
\r
298 public static double turnmin = 0.47;
\r
299 public static double turnmax = 1.56;
\r
300 public static double[] buried =
\r
302 1.7, 0.1, 0.4, 0.4, 4.6, 0.3, 0.3, 1.8, 0.8, 3.1, 2.4, 0.05, 1.9, 2.2,
\r
303 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00
\r
305 public static double buriedmin = 0.05;
\r
306 public static double buriedmax = 4.6;
\r
308 // This is hydropathy index
\r
309 // Kyte, J., and Doolittle, R.F., J. Mol. Biol.
\r
310 // 1157, 105-132, 1982
\r
311 public static double[] hyd =
\r
313 1.8, -4.5, -3.5, -3.5, 2.5, -3.5, -3.5, -0.4, -3.2, 4.5, 3.8, -3.9, 1.9,
\r
314 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0
\r
316 public static final double hydmax = 4.5;
\r
317 public static final double hydmin = -3.9;
\r
319 //public static final double hydmax = 1.38;
\r
320 //public static final double hydmin = -2.53;
\r
321 static final int[][] BLOSUM62 =
\r
324 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3,
\r
325 -2, 0, -2, -1, 0, -4
\r
328 -1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2,
\r
332 -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3,
\r
336 -2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4,
\r
337 -3, -3, 4, 1, -1, -4
\r
340 0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2,
\r
341 -2, -1, -3, -3, -2, -4
\r
344 -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1,
\r
348 -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2,
\r
352 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2,
\r
353 -3, -3, -1, -2, -1, -4
\r
356 -2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2,
\r
360 -1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3,
\r
361 -1, 3, -3, -3, -1, -4
\r
364 -1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2,
\r
365 -1, 1, -4, -3, -1, -4
\r
368 -1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2,
\r
372 -1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1,
\r
373 -1, 1, -3, -1, -1, -4
\r
376 -2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3,
\r
380 -1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1,
\r
381 -4, -3, -2, -2, -1, -2, -4
\r
384 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2,
\r
388 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2,
\r
389 -2, 0, -1, -1, 0, -4
\r
392 -3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2,
\r
393 11, 2, -3, -4, -3, -2, -4
\r
396 -2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2,
\r
397 7, -1, -3, -2, -1, -4
\r
400 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3,
\r
401 -1, 4, -3, -2, -1, -4
\r
404 -2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3,
\r
408 -1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2,
\r
412 0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2,
\r
413 -1, -1, -1, -1, -1, -4
\r
416 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
\r
417 -4, -4, -4, -4, -4, -4, 1
\r
420 static final int[][] PAM250 =
\r
423 2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0,
\r
427 -2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4,
\r
431 0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2,
\r
435 0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2,
\r
439 -2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2,
\r
440 -8, 0, -2, -4, -5, -3, -8
\r
443 0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4,
\r
447 0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2,
\r
451 1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5,
\r
455 -1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0,
\r
459 -1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5,
\r
460 -1, 4, -2, -2, -1, -8
\r
463 -2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2,
\r
464 -1, 2, -3, -3, -1, -8
\r
467 -1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2,
\r
471 -1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2,
\r
475 -3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7,
\r
479 1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5,
\r
483 1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1,
\r
487 1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0,
\r
491 -6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17,
\r
492 0, -6, -5, -6, -4, -8
\r
495 -3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0,
\r
496 10, -2, -3, -4, -2, -8
\r
499 0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6,
\r
500 -2, 4, -2, -2, -1, -8
\r
503 0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2,
\r
507 0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2,
\r
511 0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4,
\r
512 -2, -1, -1, -1, -1, -8
\r
515 -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,
\r
516 -8, -8, -8, -8, -8, -8, 1
\r
519 public static Hashtable ssHash = new Hashtable(); // stores the number value of the aa
\r
523 ssHash.put("H", Color.magenta);
\r
524 ssHash.put("E", Color.yellow);
\r
525 ssHash.put("-", Color.white);
\r
526 ssHash.put(".", Color.white);
\r
527 ssHash.put("S", Color.cyan);
\r
528 ssHash.put("T", Color.blue);
\r
529 ssHash.put("G", Color.pink);
\r
530 ssHash.put("I", Color.pink);
\r
531 ssHash.put("B", Color.yellow);
\r
534 static final int[][] DNA =
\r
537 5, -4, -4, -4, 1}, // C
\r
539 -4, 5, -4, -4, 1}, // T
\r
541 -4, -4, 5, -4, 1}, // A
\r
543 -4, -4, -4, 5, 1}, // G
\r
545 1, 1, 1, 1, 1}, // -
\r
547 public static Color[] pidColours =
\r
549 midBlue, new Color(153, 153, 255),
\r
550 // Color.lightGray,
\r
551 new Color(204, 204, 255),
\r
553 public static float[] pidThresholds =
\r
556 public static Hashtable codonHash = new Hashtable();
\r
557 public static Vector Lys = new Vector();
\r
558 public static Vector Asn = new Vector();
\r
559 public static Vector Gln = new Vector();
\r
560 public static Vector His = new Vector();
\r
561 public static Vector Glu = new Vector();
\r
562 public static Vector Asp = new Vector();
\r
563 public static Vector Tyr = new Vector();
\r
564 public static Vector Thr = new Vector();
\r
565 public static Vector Pro = new Vector();
\r
566 public static Vector Ala = new Vector();
\r
567 public static Vector Ser = new Vector();
\r
568 public static Vector Arg = new Vector();
\r
569 public static Vector Gly = new Vector();
\r
570 public static Vector Trp = new Vector();
\r
571 public static Vector Cys = new Vector();
\r
572 public static Vector Ile = new Vector();
\r
573 public static Vector Met = new Vector();
\r
574 public static Vector Leu = new Vector();
\r
575 public static Vector Val = new Vector();
\r
576 public static Vector Phe = new Vector();
\r
577 public static Vector STOP = new Vector();
\r
581 codonHash.put("K", Lys);
\r
582 codonHash.put("N", Asn);
\r
583 codonHash.put("Q", Gln);
\r
584 codonHash.put("H", His);
\r
585 codonHash.put("E", Glu);
\r
586 codonHash.put("D", Asp);
\r
587 codonHash.put("Y", Tyr);
\r
588 codonHash.put("T", Thr);
\r
589 codonHash.put("P", Pro);
\r
590 codonHash.put("A", Ala);
\r
591 codonHash.put("S", Ser);
\r
592 codonHash.put("R", Arg);
\r
593 codonHash.put("G", Gly);
\r
594 codonHash.put("W", Trp);
\r
595 codonHash.put("C", Cys);
\r
596 codonHash.put("I", Ile);
\r
597 codonHash.put("M", Met);
\r
598 codonHash.put("L", Leu);
\r
599 codonHash.put("V", Val);
\r
600 codonHash.put("F", Phe);
\r
601 codonHash.put("STOP", STOP);
\r
604 public static Hashtable codonHash2 = new Hashtable();
\r
608 codonHash2.put("AAA", "K");
\r
609 codonHash2.put("AAG", "K");
\r
610 codonHash2.put("AAC", "N");
\r
611 codonHash2.put("AAT", "N");
\r
613 codonHash2.put("CAA", "E");
\r
614 codonHash2.put("CAG", "E");
\r
615 codonHash2.put("CAC", "H");
\r
616 codonHash2.put("CAT", "H");
\r
618 codonHash2.put("GAA", "Q");
\r
619 codonHash2.put("GAG", "Q");
\r
620 codonHash2.put("GAC", "D");
\r
621 codonHash2.put("GAT", "D");
\r
623 codonHash2.put("TAC", "Y");
\r
624 codonHash2.put("TAT", "Y");
\r
626 codonHash2.put("ACA", "T");
\r
627 codonHash2.put("AAG", "T");
\r
628 codonHash2.put("ACC", "T");
\r
629 codonHash2.put("ACT", "T");
\r
631 codonHash2.put("CCA", "P");
\r
632 codonHash2.put("CCG", "P");
\r
633 codonHash2.put("CCC", "P");
\r
634 codonHash2.put("CCT", "P");
\r
636 codonHash2.put("GCA", "A");
\r
637 codonHash2.put("GCG", "A");
\r
638 codonHash2.put("GCC", "A");
\r
639 codonHash2.put("GCT", "A");
\r
641 codonHash2.put("TCA", "S");
\r
642 codonHash2.put("TCG", "S");
\r
643 codonHash2.put("TCC", "S");
\r
644 codonHash2.put("TCT", "S");
\r
645 codonHash2.put("AGC", "S");
\r
646 codonHash2.put("AGT", "S");
\r
648 codonHash2.put("AGA", "R");
\r
649 codonHash2.put("AGG", "R");
\r
650 codonHash2.put("CGA", "R");
\r
651 codonHash2.put("CGG", "R");
\r
652 codonHash2.put("CGC", "R");
\r
653 codonHash2.put("CGT", "R");
\r
655 codonHash2.put("GGA", "G");
\r
656 codonHash2.put("GGG", "G");
\r
657 codonHash2.put("GGC", "G");
\r
658 codonHash2.put("GGT", "G");
\r
660 codonHash2.put("TGA", "*");
\r
661 codonHash2.put("TAA", "*");
\r
662 codonHash2.put("TAG", "*");
\r
664 codonHash2.put("TGG", "W");
\r
666 codonHash2.put("TGC", "C");
\r
667 codonHash2.put("TGT", "C");
\r
669 codonHash2.put("ATA", "I");
\r
670 codonHash2.put("ATC", "I");
\r
671 codonHash2.put("ATT", "I");
\r
673 codonHash2.put("ATG", "M");
\r
675 codonHash2.put("CTA", "L");
\r
676 codonHash2.put("CTG", "L");
\r
677 codonHash2.put("CTC", "L");
\r
678 codonHash2.put("CTT", "L");
\r
679 codonHash2.put("TTA", "L");
\r
680 codonHash2.put("TTG", "L");
\r
682 codonHash2.put("GTA", "V");
\r
683 codonHash2.put("GTG", "V");
\r
684 codonHash2.put("GTC", "V");
\r
685 codonHash2.put("GTT", "V");
\r
687 codonHash2.put("TTC", "F");
\r
688 codonHash2.put("TTT", "F");
\r
693 Lys.addElement("AAA");
\r
694 Lys.addElement("AAG");
\r
695 Asn.addElement("AAC");
\r
696 Asn.addElement("AAT");
\r
698 Gln.addElement("CAA");
\r
699 Gln.addElement("CAG");
\r
700 His.addElement("CAC");
\r
701 His.addElement("CAT");
\r
703 Glu.addElement("GAA");
\r
704 Glu.addElement("GAG");
\r
705 Asp.addElement("GAC");
\r
706 Asp.addElement("GAT");
\r
708 Tyr.addElement("TAC");
\r
709 Tyr.addElement("TAT");
\r
711 Thr.addElement("ACA");
\r
712 Thr.addElement("ACG");
\r
713 Thr.addElement("ACC");
\r
714 Thr.addElement("ACT");
\r
716 Pro.addElement("CCA");
\r
717 Pro.addElement("CCG");
\r
718 Pro.addElement("CCC");
\r
719 Pro.addElement("CCT");
\r
721 Ala.addElement("GCA");
\r
722 Ala.addElement("GCG");
\r
723 Ala.addElement("GCC");
\r
724 Ala.addElement("GCT");
\r
726 Ser.addElement("TCA");
\r
727 Ser.addElement("TCG");
\r
728 Ser.addElement("TCC");
\r
729 Ser.addElement("TCT");
\r
730 Ser.addElement("AGC");
\r
731 Ser.addElement("AGT");
\r
733 Arg.addElement("AGA");
\r
734 Arg.addElement("AGG");
\r
735 Arg.addElement("CGA");
\r
736 Arg.addElement("CGG");
\r
737 Arg.addElement("CGC");
\r
738 Arg.addElement("CGT");
\r
740 Gly.addElement("GGA");
\r
741 Gly.addElement("GGG");
\r
742 Gly.addElement("GGC");
\r
743 Gly.addElement("GGT");
\r
745 STOP.addElement("TGA");
\r
746 STOP.addElement("TAA");
\r
747 STOP.addElement("TAG");
\r
749 Trp.addElement("TGG");
\r
751 Cys.addElement("TGC");
\r
752 Cys.addElement("TGT");
\r
754 Ile.addElement("ATA");
\r
755 Ile.addElement("ATC");
\r
756 Ile.addElement("ATT");
\r
758 Met.addElement("ATG");
\r
760 Leu.addElement("CTA");
\r
761 Leu.addElement("CTG");
\r
762 Leu.addElement("CTC");
\r
763 Leu.addElement("CTT");
\r
764 Leu.addElement("TTA");
\r
765 Leu.addElement("TTG");
\r
767 Val.addElement("GTA");
\r
768 Val.addElement("GTG");
\r
769 Val.addElement("GTC");
\r
770 Val.addElement("GTT");
\r
772 Phe.addElement("TTC");
\r
773 Phe.addElement("TTT");
\r
776 public static Color[][] groupColors =
\r
779 Color.red, Color.red.brighter(), Color.red.brighter().brighter()},
\r
781 Color.orange, Color.orange.brighter(),
\r
782 Color.orange.brighter().brighter()
\r
785 Color.green, Color.green.brighter(), Color.green.brighter().brighter()},
\r
787 Color.blue, Color.blue.brighter(), Color.blue.brighter().brighter()},
\r
789 Color.magenta, Color.magenta.brighter(),
\r
790 Color.magenta.brighter().brighter()
\r
793 Color.cyan, Color.cyan.brighter(), Color.cyan.brighter().brighter()},
\r
795 Color.pink, Color.pink.brighter(), Color.pink.brighter().brighter()},
\r
798 //Stores residue codes/names and colours and other things
\r
799 public static Hashtable propHash = new Hashtable();
\r
800 public static Hashtable hydrophobic = new Hashtable();
\r
801 public static Hashtable polar = new Hashtable();
\r
802 public static Hashtable small = new Hashtable();
\r
803 public static Hashtable positive = new Hashtable();
\r
804 public static Hashtable negative = new Hashtable();
\r
805 public static Hashtable charged = new Hashtable();
\r
806 public static Hashtable aromatic = new Hashtable();
\r
807 public static Hashtable aliphatic = new Hashtable();
\r
808 public static Hashtable tiny = new Hashtable();
\r
809 public static Hashtable proline = new Hashtable();
\r
813 hydrophobic.put("I", new Integer(1));
\r
814 hydrophobic.put("L", new Integer(1));
\r
815 hydrophobic.put("V", new Integer(1));
\r
816 hydrophobic.put("C", new Integer(1));
\r
817 hydrophobic.put("A", new Integer(1));
\r
818 hydrophobic.put("G", new Integer(1));
\r
819 hydrophobic.put("M", new Integer(1));
\r
820 hydrophobic.put("F", new Integer(1));
\r
821 hydrophobic.put("Y", new Integer(1));
\r
822 hydrophobic.put("W", new Integer(1));
\r
823 hydrophobic.put("H", new Integer(1));
\r
824 hydrophobic.put("K", new Integer(1));
\r
825 hydrophobic.put("X", new Integer(1));
\r
826 hydrophobic.put("-", new Integer(1));
\r
827 hydrophobic.put("*", new Integer(1));
\r
828 hydrophobic.put("R", new Integer(0));
\r
829 hydrophobic.put("E", new Integer(0));
\r
830 hydrophobic.put("Q", new Integer(0));
\r
831 hydrophobic.put("D", new Integer(0));
\r
832 hydrophobic.put("N", new Integer(0));
\r
833 hydrophobic.put("S", new Integer(0));
\r
834 hydrophobic.put("T", new Integer(0));
\r
835 hydrophobic.put("P", new Integer(0));
\r
840 polar.put("Y", new Integer(1));
\r
841 polar.put("W", new Integer(1));
\r
842 polar.put("H", new Integer(1));
\r
843 polar.put("K", new Integer(1));
\r
844 polar.put("R", new Integer(1));
\r
845 polar.put("E", new Integer(1));
\r
846 polar.put("Q", new Integer(1));
\r
847 polar.put("D", new Integer(1));
\r
848 polar.put("N", new Integer(1));
\r
849 polar.put("S", new Integer(1));
\r
850 polar.put("T", new Integer(1));
\r
851 polar.put("X", new Integer(1));
\r
852 polar.put("-", new Integer(1));
\r
853 polar.put("*", new Integer(1));
\r
854 polar.put("I", new Integer(0));
\r
855 polar.put("L", new Integer(0));
\r
856 polar.put("V", new Integer(0));
\r
857 polar.put("C", new Integer(0));
\r
858 polar.put("A", new Integer(0));
\r
859 polar.put("G", new Integer(0));
\r
860 polar.put("M", new Integer(0));
\r
861 polar.put("F", new Integer(0));
\r
862 polar.put("P", new Integer(0));
\r
867 small.put("I", new Integer(0));
\r
868 small.put("L", new Integer(0));
\r
869 small.put("V", new Integer(1));
\r
870 small.put("C", new Integer(1));
\r
871 small.put("A", new Integer(1));
\r
872 small.put("G", new Integer(1));
\r
873 small.put("M", new Integer(0));
\r
874 small.put("F", new Integer(0));
\r
875 small.put("Y", new Integer(0));
\r
876 small.put("W", new Integer(0));
\r
877 small.put("H", new Integer(0));
\r
878 small.put("K", new Integer(0));
\r
879 small.put("R", new Integer(0));
\r
880 small.put("E", new Integer(0));
\r
881 small.put("Q", new Integer(0));
\r
882 small.put("D", new Integer(1));
\r
883 small.put("N", new Integer(1));
\r
884 small.put("S", new Integer(1));
\r
885 small.put("T", new Integer(1));
\r
886 small.put("P", new Integer(1));
\r
887 small.put("-", new Integer(1));
\r
888 small.put("*", new Integer(1));
\r
893 positive.put("I", new Integer(0));
\r
894 positive.put("L", new Integer(0));
\r
895 positive.put("V", new Integer(0));
\r
896 positive.put("C", new Integer(0));
\r
897 positive.put("A", new Integer(0));
\r
898 positive.put("G", new Integer(0));
\r
899 positive.put("M", new Integer(0));
\r
900 positive.put("F", new Integer(0));
\r
901 positive.put("Y", new Integer(0));
\r
902 positive.put("W", new Integer(0));
\r
903 positive.put("H", new Integer(1));
\r
904 positive.put("K", new Integer(1));
\r
905 positive.put("R", new Integer(1));
\r
906 positive.put("E", new Integer(0));
\r
907 positive.put("Q", new Integer(0));
\r
908 positive.put("D", new Integer(0));
\r
909 positive.put("N", new Integer(0));
\r
910 positive.put("S", new Integer(0));
\r
911 positive.put("T", new Integer(0));
\r
912 positive.put("P", new Integer(0));
\r
913 positive.put("-", new Integer(1));
\r
914 positive.put("*", new Integer(1));
\r
919 negative.put("I", new Integer(0));
\r
920 negative.put("L", new Integer(0));
\r
921 negative.put("V", new Integer(0));
\r
922 negative.put("C", new Integer(0));
\r
923 negative.put("A", new Integer(0));
\r
924 negative.put("G", new Integer(0));
\r
925 negative.put("M", new Integer(0));
\r
926 negative.put("F", new Integer(0));
\r
927 negative.put("Y", new Integer(0));
\r
928 negative.put("W", new Integer(0));
\r
929 negative.put("H", new Integer(0));
\r
930 negative.put("K", new Integer(0));
\r
931 negative.put("R", new Integer(0));
\r
932 negative.put("E", new Integer(1));
\r
933 negative.put("Q", new Integer(0));
\r
934 negative.put("D", new Integer(1));
\r
935 negative.put("N", new Integer(0));
\r
936 negative.put("S", new Integer(0));
\r
937 negative.put("T", new Integer(0));
\r
938 negative.put("P", new Integer(0));
\r
939 negative.put("-", new Integer(1));
\r
940 negative.put("*", new Integer(1));
\r
945 charged.put("I", new Integer(0));
\r
946 charged.put("L", new Integer(0));
\r
947 charged.put("V", new Integer(0));
\r
948 charged.put("C", new Integer(0));
\r
949 charged.put("A", new Integer(0));
\r
950 charged.put("G", new Integer(0));
\r
951 charged.put("M", new Integer(0));
\r
952 charged.put("F", new Integer(0));
\r
953 charged.put("Y", new Integer(0));
\r
954 charged.put("W", new Integer(0));
\r
955 charged.put("H", new Integer(1));
\r
956 charged.put("K", new Integer(1));
\r
957 charged.put("R", new Integer(1));
\r
958 charged.put("E", new Integer(1));
\r
959 charged.put("Q", new Integer(0));
\r
960 charged.put("D", new Integer(1));
\r
961 charged.put("N", new Integer(1));
\r
962 charged.put("S", new Integer(0));
\r
963 charged.put("T", new Integer(0));
\r
964 charged.put("P", new Integer(0));
\r
965 charged.put("-", new Integer(1));
\r
966 charged.put("*", new Integer(1));
\r
971 aromatic.put("I", new Integer(0));
\r
972 aromatic.put("L", new Integer(0));
\r
973 aromatic.put("V", new Integer(0));
\r
974 aromatic.put("C", new Integer(0));
\r
975 aromatic.put("A", new Integer(0));
\r
976 aromatic.put("G", new Integer(0));
\r
977 aromatic.put("M", new Integer(0));
\r
978 aromatic.put("F", new Integer(1));
\r
979 aromatic.put("Y", new Integer(1));
\r
980 aromatic.put("W", new Integer(1));
\r
981 aromatic.put("H", new Integer(1));
\r
982 aromatic.put("K", new Integer(0));
\r
983 aromatic.put("R", new Integer(0));
\r
984 aromatic.put("E", new Integer(0));
\r
985 aromatic.put("Q", new Integer(0));
\r
986 aromatic.put("D", new Integer(0));
\r
987 aromatic.put("N", new Integer(0));
\r
988 aromatic.put("S", new Integer(0));
\r
989 aromatic.put("T", new Integer(0));
\r
990 aromatic.put("P", new Integer(0));
\r
991 aromatic.put("-", new Integer(1));
\r
992 aromatic.put("*", new Integer(1));
\r
997 aliphatic.put("I", new Integer(1));
\r
998 aliphatic.put("L", new Integer(1));
\r
999 aliphatic.put("V", new Integer(1));
\r
1000 aliphatic.put("C", new Integer(0));
\r
1001 aliphatic.put("A", new Integer(0));
\r
1002 aliphatic.put("G", new Integer(0));
\r
1003 aliphatic.put("M", new Integer(0));
\r
1004 aliphatic.put("F", new Integer(0));
\r
1005 aliphatic.put("Y", new Integer(0));
\r
1006 aliphatic.put("W", new Integer(0));
\r
1007 aliphatic.put("H", new Integer(0));
\r
1008 aliphatic.put("K", new Integer(0));
\r
1009 aliphatic.put("R", new Integer(0));
\r
1010 aliphatic.put("E", new Integer(0));
\r
1011 aliphatic.put("Q", new Integer(0));
\r
1012 aliphatic.put("D", new Integer(0));
\r
1013 aliphatic.put("N", new Integer(0));
\r
1014 aliphatic.put("S", new Integer(0));
\r
1015 aliphatic.put("T", new Integer(0));
\r
1016 aliphatic.put("P", new Integer(0));
\r
1017 aliphatic.put("-", new Integer(1));
\r
1018 aliphatic.put("*", new Integer(1));
\r
1023 tiny.put("I", new Integer(0));
\r
1024 tiny.put("L", new Integer(0));
\r
1025 tiny.put("V", new Integer(0));
\r
1026 tiny.put("C", new Integer(0));
\r
1027 tiny.put("A", new Integer(1));
\r
1028 tiny.put("G", new Integer(1));
\r
1029 tiny.put("M", new Integer(0));
\r
1030 tiny.put("F", new Integer(0));
\r
1031 tiny.put("Y", new Integer(0));
\r
1032 tiny.put("W", new Integer(0));
\r
1033 tiny.put("H", new Integer(0));
\r
1034 tiny.put("K", new Integer(0));
\r
1035 tiny.put("R", new Integer(0));
\r
1036 tiny.put("E", new Integer(0));
\r
1037 tiny.put("Q", new Integer(0));
\r
1038 tiny.put("D", new Integer(0));
\r
1039 tiny.put("N", new Integer(0));
\r
1040 tiny.put("S", new Integer(1));
\r
1041 tiny.put("T", new Integer(0));
\r
1042 tiny.put("P", new Integer(0));
\r
1043 tiny.put("-", new Integer(1));
\r
1044 tiny.put("*", new Integer(1));
\r
1049 proline.put("I", new Integer(0));
\r
1050 proline.put("L", new Integer(0));
\r
1051 proline.put("V", new Integer(0));
\r
1052 proline.put("C", new Integer(0));
\r
1053 proline.put("A", new Integer(0));
\r
1054 proline.put("G", new Integer(0));
\r
1055 proline.put("M", new Integer(0));
\r
1056 proline.put("F", new Integer(0));
\r
1057 proline.put("Y", new Integer(0));
\r
1058 proline.put("W", new Integer(0));
\r
1059 proline.put("H", new Integer(0));
\r
1060 proline.put("K", new Integer(0));
\r
1061 proline.put("R", new Integer(0));
\r
1062 proline.put("E", new Integer(0));
\r
1063 proline.put("Q", new Integer(0));
\r
1064 proline.put("D", new Integer(0));
\r
1065 proline.put("N", new Integer(0));
\r
1066 proline.put("S", new Integer(0));
\r
1067 proline.put("T", new Integer(0));
\r
1068 proline.put("P", new Integer(1));
\r
1069 proline.put("-", new Integer(1));
\r
1070 proline.put("*", new Integer(1));
\r
1075 propHash.put("hydrophobic", hydrophobic);
\r
1076 propHash.put("small", small);
\r
1077 propHash.put("positive", positive);
\r
1078 propHash.put("negative", negative);
\r
1079 propHash.put("charged", charged);
\r
1080 propHash.put("aromatic", aromatic);
\r
1081 propHash.put("aliphatic", aliphatic);
\r
1082 propHash.put("tiny", tiny);
\r
1083 propHash.put("proline", proline);
\r
1084 propHash.put("polar", polar);
\r
1087 public static Hashtable chainColours = new Hashtable();
\r
1091 chainColours.put("A", Color.red);
\r
1092 chainColours.put("B", Color.orange);
\r
1093 chainColours.put("C", Color.yellow);
\r
1094 chainColours.put("D", Color.green);
\r
1095 chainColours.put("E", Color.cyan);
\r
1096 chainColours.put("F", Color.blue);
\r
1097 chainColours.put("G", Color.magenta);
\r
1098 chainColours.put("H", Color.pink);
\r
1101 private ResidueProperties()
\r
1105 public static double getHydmax()
\r
1110 public static double getHydmin()
\r
1115 public static double[] getHyd()
\r
1120 public static Hashtable getAAHash()
\r
1125 public static Hashtable getAA3Hash()
\r
1130 public static int[][] getDNA()
\r
1132 return ResidueProperties.DNA;
\r
1135 public static int[][] getBLOSUM62()
\r
1137 return ResidueProperties.BLOSUM62;
\r
1140 public static int getPAM250(String A1, String A2)
\r
1142 Integer pog1 = (Integer) aaHash.get(A1);
\r
1143 Integer pog2 = (Integer) aaHash.get(A2);
\r
1144 int pog = ResidueProperties.PAM250[pog1.intValue()][pog2.intValue()];
\r
1149 public static int getBLOSUM62(String A1, String A2)
\r
1155 Integer pog1 = (Integer) aaHash.get(A1);
\r
1156 Integer pog2 = (Integer) aaHash.get(A2);
\r
1157 pog = ResidueProperties.BLOSUM62[pog1.intValue()][pog2.intValue()];
\r
1159 catch (Exception e)
\r
1161 //System.out.println("Unknown residue in " + A1 + " " + A2);
\r
1167 public static Vector getCodons(String res)
\r
1169 if (codonHash.containsKey(res))
\r
1171 return (Vector) codonHash.get(res);
\r
1177 public static String codonTranslate(String codon)
\r
1179 Enumeration e = codonHash.keys();
\r
1181 while (e.hasMoreElements())
\r
1183 String key = (String) e.nextElement();
\r
1184 Vector tmp = (Vector) codonHash.get(key);
\r
1186 if (tmp.contains(codon))
\r
1195 public static Hashtable getChainColours()
\r
1197 return chainColours;
\r