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 final Hashtable aaHash = new Hashtable(); // stores the number value of the aa
\r
29 public static final Hashtable aa3Hash = new Hashtable();
\r
30 public static final Hashtable aa2Triplet = new Hashtable();
\r
31 public static final 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("U", new Integer(22));
\r
59 aaHash.put("a", new Integer(0));
\r
60 aaHash.put("r", new Integer(1));
\r
61 aaHash.put("n", new Integer(2));
\r
62 aaHash.put("d", new Integer(3));
\r
63 aaHash.put("c", new Integer(4));
\r
64 aaHash.put("q", new Integer(5));
\r
65 aaHash.put("e", new Integer(6));
\r
66 aaHash.put("g", new Integer(7));
\r
67 aaHash.put("h", new Integer(8));
\r
68 aaHash.put("i", new Integer(9));
\r
69 aaHash.put("l", new Integer(10));
\r
70 aaHash.put("k", new Integer(11));
\r
71 aaHash.put("m", new Integer(12));
\r
72 aaHash.put("f", new Integer(13));
\r
73 aaHash.put("p", new Integer(14));
\r
74 aaHash.put("s", new Integer(15));
\r
75 aaHash.put("t", new Integer(16));
\r
76 aaHash.put("w", new Integer(17));
\r
77 aaHash.put("y", new Integer(18));
\r
78 aaHash.put("v", new Integer(19));
\r
79 aaHash.put("b", new Integer(20));
\r
80 aaHash.put("z", new Integer(21));
\r
81 aaHash.put("x", new Integer(22));
\r
82 aaHash.put("u", new Integer(22));
\r
83 aaHash.put("-", new Integer(23));
\r
84 aaHash.put("*", new Integer(23));
\r
85 aaHash.put(".", new Integer(23));
\r
86 aaHash.put(" ", new Integer(23));
\r
91 nucleotideHash.put("A", new Integer(0));
\r
92 nucleotideHash.put("C", new Integer(1));
\r
93 nucleotideHash.put("G", new Integer(2));
\r
94 nucleotideHash.put("T", new Integer(3));
\r
95 nucleotideHash.put("U", new Integer(4));
\r
96 nucleotideHash.put("a", new Integer(0));
\r
97 nucleotideHash.put("c", new Integer(1));
\r
98 nucleotideHash.put("g", new Integer(2));
\r
99 nucleotideHash.put("t", new Integer(3));
\r
100 nucleotideHash.put("u", new Integer(4));
\r
103 // These numbers should correspond to the indices in the Color hashes
\r
104 public static final Hashtable aaSpecialsHash = new Hashtable();
\r
108 aaSpecialsHash.put("-", new Integer(23));
\r
109 aaSpecialsHash.put("*", new Integer(24));
\r
110 aaSpecialsHash.put(".", new Integer(25));
\r
111 aaSpecialsHash.put(" ", new Integer(26));
\r
116 aa3Hash.put("ALA", new Integer(0));
\r
117 aa3Hash.put("ARG", new Integer(1));
\r
118 aa3Hash.put("ASN", new Integer(2));
\r
119 aa3Hash.put("ASP", new Integer(3)); //D
\r
120 aa3Hash.put("CYS", new Integer(4));
\r
121 aa3Hash.put("GLN", new Integer(5)); //Q
\r
122 aa3Hash.put("GLU", new Integer(6)); // E
\r
123 aa3Hash.put("GLY", new Integer(7));
\r
124 aa3Hash.put("HIS", new Integer(8));
\r
125 aa3Hash.put("ILE", new Integer(9));
\r
126 aa3Hash.put("LEU", new Integer(10));
\r
127 aa3Hash.put("LYS", new Integer(11));
\r
128 aa3Hash.put("MET", new Integer(12));
\r
129 aa3Hash.put("PHE", new Integer(13));
\r
130 aa3Hash.put("PRO", new Integer(14));
\r
131 aa3Hash.put("SER", new Integer(15));
\r
132 aa3Hash.put("THR", new Integer(16));
\r
133 aa3Hash.put("TRP", new Integer(17));
\r
134 aa3Hash.put("TYR", new Integer(18));
\r
135 aa3Hash.put("VAL", new Integer(19));
\r
136 aa3Hash.put("B", new Integer(20));
\r
137 aa3Hash.put("Z", new Integer(21));
\r
138 aa3Hash.put("X", new Integer(22));
\r
139 aa3Hash.put("-", new Integer(23));
\r
140 aa3Hash.put("*", new Integer(23));
\r
141 aa3Hash.put(".", new Integer(23));
\r
142 aa3Hash.put(" ", new Integer(23));
\r
147 aa2Triplet.put("A", "ALA");
\r
148 aa2Triplet.put("a", "ALA");
\r
149 aa2Triplet.put("R", "ARG");
\r
150 aa2Triplet.put("r", "ARG");
\r
151 aa2Triplet.put("N", "ASN");
\r
152 aa2Triplet.put("n", "ASN");
\r
153 aa2Triplet.put("D", "ASP");
\r
154 aa2Triplet.put("d", "ASP");
\r
155 aa2Triplet.put("C", "CYS");
\r
156 aa2Triplet.put("c", "CYS");
\r
157 aa2Triplet.put("Q", "GLN");
\r
158 aa2Triplet.put("q", "GLN");
\r
159 aa2Triplet.put("E", "GLU");
\r
160 aa2Triplet.put("e", "GLU");
\r
161 aa2Triplet.put("G", "GLY");
\r
162 aa2Triplet.put("g", "GLY");
\r
163 aa2Triplet.put("H", "HIS");
\r
164 aa2Triplet.put("h", "HIS");
\r
165 aa2Triplet.put("I", "ILE");
\r
166 aa2Triplet.put("i", "ILE");
\r
167 aa2Triplet.put("L", "LEU");
\r
168 aa2Triplet.put("l", "LEU");
\r
169 aa2Triplet.put("K", "LYS");
\r
170 aa2Triplet.put("k", "LYS");
\r
171 aa2Triplet.put("M", "MET");
\r
172 aa2Triplet.put("m", "MET");
\r
173 aa2Triplet.put("F", "PHE");
\r
174 aa2Triplet.put("f", "PHE");
\r
175 aa2Triplet.put("P", "PRO");
\r
176 aa2Triplet.put("p", "PRO");
\r
177 aa2Triplet.put("S", "SER");
\r
178 aa2Triplet.put("s", "SER");
\r
179 aa2Triplet.put("T", "THR");
\r
180 aa2Triplet.put("t", "THR");
\r
181 aa2Triplet.put("W", "TRP");
\r
182 aa2Triplet.put("w", "TRP");
\r
183 aa2Triplet.put("Y", "TYR");
\r
184 aa2Triplet.put("y", "TYR");
\r
185 aa2Triplet.put("V", "VAL");
\r
186 aa2Triplet.put("v", "VAL");
\r
189 public static final String[] aa =
\r
191 "A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F",
\r
192 "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "
\r
194 public static final Color midBlue = new Color(100, 100, 255);
\r
195 public static final Vector scaleColours = new Vector();
\r
199 scaleColours.addElement(new Color(114, 0, 147));
\r
200 scaleColours.addElement(new Color(156, 0, 98));
\r
201 scaleColours.addElement(new Color(190, 0, 0));
\r
202 scaleColours.addElement(Color.red);
\r
203 scaleColours.addElement(new Color(255, 125, 0));
\r
204 scaleColours.addElement(Color.orange);
\r
205 scaleColours.addElement(new Color(255, 194, 85));
\r
206 scaleColours.addElement(Color.yellow);
\r
207 scaleColours.addElement(new Color(255, 255, 181));
\r
208 scaleColours.addElement(Color.white);
\r
211 public static final Color[] taylor =
\r
213 new Color(204, 255, 0), // A Greenish-yellowy-yellow
\r
214 new Color(0, 0, 255), // R Blueish-bluey-blue
\r
215 new Color(204, 0, 255), // N Blueish-reddy-blue
\r
216 new Color(255, 0, 0), // D Reddish-reddy-red
\r
217 new Color(255, 255, 0), // C Yellowish-yellowy-yellow
\r
218 new Color(255, 0, 204), // Q Reddish-bluey-red
\r
219 new Color(255, 0, 102), // E Blueish-reddy-red
\r
220 new Color(255, 153, 0), // G Yellowy-reddy-yellow
\r
221 new Color(0, 102, 255), // H Greenish-bluey-blue
\r
222 new Color(102, 255, 0), // I Greenish-yellowy-green
\r
223 new Color(51, 255, 0), // L Yellowish-greeny-green
\r
224 new Color(102, 0, 255), // K Reddish-bluey-blue
\r
225 new Color(0, 255, 0), // M Greenish-greeny-green
\r
226 new Color(0, 255, 102), // F Blueish-greeny-green
\r
227 new Color(255, 204, 0), // P Reddish-yellowy-yellow
\r
228 new Color(255, 51, 0), // S Yellowish-reddy-red
\r
229 new Color(255, 102, 0), // T Reddish-yellowy-red
\r
230 new Color(0, 204, 255), // W Blueish-greeny-green
\r
231 new Color(0, 255, 204), // Y Greenish-bluey-green
\r
232 new Color(153, 255, 0), // V Yellowish-greeny-yellow
\r
240 public static final Color[] nucleotide =
\r
242 new Color(100, 247, 63), // A
\r
243 new Color(255, 179, 64), // C
\r
244 new Color(235, 65, 60), // G
\r
245 new Color(60, 136, 238), // T
\r
246 new Color(60, 136, 238) // U
\r
248 public static final Color[] color =
\r
257 Color.magenta, // G
\r
264 Color.magenta, // P
\r
279 // Dunno where I got these numbers from
\r
280 public static final double[] hyd2 =
\r
306 public static final double[] helix =
\r
308 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
309 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
311 public static final double helixmin = 0.57;
\r
312 public static final double helixmax = 1.51;
\r
313 public static final double[] strand =
\r
315 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
316 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
318 public static final double strandmin = 0.37;
\r
319 public static final double strandmax = 1.7;
\r
320 public static final double[] turn =
\r
322 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
323 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
325 public static final double turnmin = 0.47;
\r
326 public static final double turnmax = 1.56;
\r
327 public static final double[] buried =
\r
329 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
330 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00
\r
332 public static final double buriedmin = 0.05;
\r
333 public static final double buriedmax = 4.6;
\r
335 // This is hydropathy index
\r
336 // Kyte, J., and Doolittle, R.F., J. Mol. Biol.
\r
337 // 1157, 105-132, 1982
\r
338 public static final double[] hyd =
\r
340 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
341 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0
\r
343 public static final double hydmax = 4.5;
\r
344 public static final double hydmin = -3.9;
\r
346 //public static final double hydmax = 1.38;
\r
347 //public static final double hydmin = -2.53;
\r
348 static final int[][] BLOSUM62 =
\r
351 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3,
\r
352 -2, 0, -2, -1, 0, -4
\r
355 -1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2,
\r
359 -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3,
\r
363 -2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4,
\r
364 -3, -3, 4, 1, -1, -4
\r
367 0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2,
\r
368 -2, -1, -3, -3, -2, -4
\r
371 -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1,
\r
375 -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2,
\r
379 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2,
\r
380 -3, -3, -1, -2, -1, -4
\r
383 -2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2,
\r
387 -1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3,
\r
388 -1, 3, -3, -3, -1, -4
\r
391 -1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2,
\r
392 -1, 1, -4, -3, -1, -4
\r
395 -1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2,
\r
399 -1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1,
\r
400 -1, 1, -3, -1, -1, -4
\r
403 -2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3,
\r
407 -1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1,
\r
408 -4, -3, -2, -2, -1, -2, -4
\r
411 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2,
\r
415 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2,
\r
416 -2, 0, -1, -1, 0, -4
\r
419 -3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2,
\r
420 11, 2, -3, -4, -3, -2, -4
\r
423 -2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2,
\r
424 7, -1, -3, -2, -1, -4
\r
427 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3,
\r
428 -1, 4, -3, -2, -1, -4
\r
431 -2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3,
\r
435 -1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2,
\r
439 0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2,
\r
440 -1, -1, -1, -1, -1, -4
\r
443 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
\r
444 -4, -4, -4, -4, -4, -4, 1
\r
447 static final int[][] PAM250 =
\r
450 2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0,
\r
454 -2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4,
\r
458 0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2,
\r
462 0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2,
\r
466 -2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2,
\r
467 -8, 0, -2, -4, -5, -3, -8
\r
470 0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4,
\r
474 0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2,
\r
478 1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5,
\r
482 -1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0,
\r
486 -1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5,
\r
487 -1, 4, -2, -2, -1, -8
\r
490 -2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2,
\r
491 -1, 2, -3, -3, -1, -8
\r
494 -1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2,
\r
498 -1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2,
\r
502 -3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7,
\r
506 1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5,
\r
510 1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1,
\r
514 1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0,
\r
518 -6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17,
\r
519 0, -6, -5, -6, -4, -8
\r
522 -3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0,
\r
523 10, -2, -3, -4, -2, -8
\r
526 0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6,
\r
527 -2, 4, -2, -2, -1, -8
\r
530 0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2,
\r
534 0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2,
\r
538 0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4,
\r
539 -2, -1, -1, -1, -1, -8
\r
542 -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,
\r
543 -8, -8, -8, -8, -8, -8, 1
\r
546 public static final Hashtable ssHash = new Hashtable(); // stores the number value of the aa
\r
550 ssHash.put("H", Color.magenta);
\r
551 ssHash.put("E", Color.yellow);
\r
552 ssHash.put("-", Color.white);
\r
553 ssHash.put(".", Color.white);
\r
554 ssHash.put("S", Color.cyan);
\r
555 ssHash.put("T", Color.blue);
\r
556 ssHash.put("G", Color.pink);
\r
557 ssHash.put("I", Color.pink);
\r
558 ssHash.put("B", Color.yellow);
\r
561 static final int[][] DNA =
\r
564 5, -4, -4, -4, 1}, // C
\r
566 -4, 5, -4, -4, 1}, // T
\r
568 -4, -4, 5, -4, 1}, // A
\r
570 -4, -4, -4, 5, 1}, // G
\r
572 1, 1, 1, 1, 1}, // -
\r
574 public static final Color[] pidColours =
\r
576 midBlue, new Color(153, 153, 255),
\r
577 // Color.lightGray,
\r
578 new Color(204, 204, 255),
\r
580 public static final float[] pidThresholds =
\r
583 public static Hashtable codonHash = new Hashtable();
\r
584 public static Vector Lys = new Vector();
\r
585 public static Vector Asn = new Vector();
\r
586 public static Vector Gln = new Vector();
\r
587 public static Vector His = new Vector();
\r
588 public static Vector Glu = new Vector();
\r
589 public static Vector Asp = new Vector();
\r
590 public static Vector Tyr = new Vector();
\r
591 public static Vector Thr = new Vector();
\r
592 public static Vector Pro = new Vector();
\r
593 public static Vector Ala = new Vector();
\r
594 public static Vector Ser = new Vector();
\r
595 public static Vector Arg = new Vector();
\r
596 public static Vector Gly = new Vector();
\r
597 public static Vector Trp = new Vector();
\r
598 public static Vector Cys = new Vector();
\r
599 public static Vector Ile = new Vector();
\r
600 public static Vector Met = new Vector();
\r
601 public static Vector Leu = new Vector();
\r
602 public static Vector Val = new Vector();
\r
603 public static Vector Phe = new Vector();
\r
604 public static Vector STOP = new Vector();
\r
608 codonHash.put("K", Lys);
\r
609 codonHash.put("N", Asn);
\r
610 codonHash.put("Q", Gln);
\r
611 codonHash.put("H", His);
\r
612 codonHash.put("E", Glu);
\r
613 codonHash.put("D", Asp);
\r
614 codonHash.put("Y", Tyr);
\r
615 codonHash.put("T", Thr);
\r
616 codonHash.put("P", Pro);
\r
617 codonHash.put("A", Ala);
\r
618 codonHash.put("S", Ser);
\r
619 codonHash.put("R", Arg);
\r
620 codonHash.put("G", Gly);
\r
621 codonHash.put("W", Trp);
\r
622 codonHash.put("C", Cys);
\r
623 codonHash.put("I", Ile);
\r
624 codonHash.put("M", Met);
\r
625 codonHash.put("L", Leu);
\r
626 codonHash.put("V", Val);
\r
627 codonHash.put("F", Phe);
\r
628 codonHash.put("STOP", STOP);
\r
631 public static Hashtable codonHash2 = new Hashtable();
\r
635 codonHash2.put("AAA", "K");
\r
636 codonHash2.put("AAG", "K");
\r
637 codonHash2.put("AAC", "N");
\r
638 codonHash2.put("AAT", "N");
\r
640 codonHash2.put("CAA", "E");
\r
641 codonHash2.put("CAG", "E");
\r
642 codonHash2.put("CAC", "H");
\r
643 codonHash2.put("CAT", "H");
\r
645 codonHash2.put("GAA", "Q");
\r
646 codonHash2.put("GAG", "Q");
\r
647 codonHash2.put("GAC", "D");
\r
648 codonHash2.put("GAT", "D");
\r
650 codonHash2.put("TAC", "Y");
\r
651 codonHash2.put("TAT", "Y");
\r
653 codonHash2.put("ACA", "T");
\r
654 codonHash2.put("AAG", "T");
\r
655 codonHash2.put("ACC", "T");
\r
656 codonHash2.put("ACT", "T");
\r
658 codonHash2.put("CCA", "P");
\r
659 codonHash2.put("CCG", "P");
\r
660 codonHash2.put("CCC", "P");
\r
661 codonHash2.put("CCT", "P");
\r
663 codonHash2.put("GCA", "A");
\r
664 codonHash2.put("GCG", "A");
\r
665 codonHash2.put("GCC", "A");
\r
666 codonHash2.put("GCT", "A");
\r
668 codonHash2.put("TCA", "S");
\r
669 codonHash2.put("TCG", "S");
\r
670 codonHash2.put("TCC", "S");
\r
671 codonHash2.put("TCT", "S");
\r
672 codonHash2.put("AGC", "S");
\r
673 codonHash2.put("AGT", "S");
\r
675 codonHash2.put("AGA", "R");
\r
676 codonHash2.put("AGG", "R");
\r
677 codonHash2.put("CGA", "R");
\r
678 codonHash2.put("CGG", "R");
\r
679 codonHash2.put("CGC", "R");
\r
680 codonHash2.put("CGT", "R");
\r
682 codonHash2.put("GGA", "G");
\r
683 codonHash2.put("GGG", "G");
\r
684 codonHash2.put("GGC", "G");
\r
685 codonHash2.put("GGT", "G");
\r
687 codonHash2.put("TGA", "*");
\r
688 codonHash2.put("TAA", "*");
\r
689 codonHash2.put("TAG", "*");
\r
691 codonHash2.put("TGG", "W");
\r
693 codonHash2.put("TGC", "C");
\r
694 codonHash2.put("TGT", "C");
\r
696 codonHash2.put("ATA", "I");
\r
697 codonHash2.put("ATC", "I");
\r
698 codonHash2.put("ATT", "I");
\r
700 codonHash2.put("ATG", "M");
\r
702 codonHash2.put("CTA", "L");
\r
703 codonHash2.put("CTG", "L");
\r
704 codonHash2.put("CTC", "L");
\r
705 codonHash2.put("CTT", "L");
\r
706 codonHash2.put("TTA", "L");
\r
707 codonHash2.put("TTG", "L");
\r
709 codonHash2.put("GTA", "V");
\r
710 codonHash2.put("GTG", "V");
\r
711 codonHash2.put("GTC", "V");
\r
712 codonHash2.put("GTT", "V");
\r
714 codonHash2.put("TTC", "F");
\r
715 codonHash2.put("TTT", "F");
\r
720 Lys.addElement("AAA");
\r
721 Lys.addElement("AAG");
\r
722 Asn.addElement("AAC");
\r
723 Asn.addElement("AAT");
\r
725 Gln.addElement("CAA");
\r
726 Gln.addElement("CAG");
\r
727 His.addElement("CAC");
\r
728 His.addElement("CAT");
\r
730 Glu.addElement("GAA");
\r
731 Glu.addElement("GAG");
\r
732 Asp.addElement("GAC");
\r
733 Asp.addElement("GAT");
\r
735 Tyr.addElement("TAC");
\r
736 Tyr.addElement("TAT");
\r
738 Thr.addElement("ACA");
\r
739 Thr.addElement("ACG");
\r
740 Thr.addElement("ACC");
\r
741 Thr.addElement("ACT");
\r
743 Pro.addElement("CCA");
\r
744 Pro.addElement("CCG");
\r
745 Pro.addElement("CCC");
\r
746 Pro.addElement("CCT");
\r
748 Ala.addElement("GCA");
\r
749 Ala.addElement("GCG");
\r
750 Ala.addElement("GCC");
\r
751 Ala.addElement("GCT");
\r
753 Ser.addElement("TCA");
\r
754 Ser.addElement("TCG");
\r
755 Ser.addElement("TCC");
\r
756 Ser.addElement("TCT");
\r
757 Ser.addElement("AGC");
\r
758 Ser.addElement("AGT");
\r
760 Arg.addElement("AGA");
\r
761 Arg.addElement("AGG");
\r
762 Arg.addElement("CGA");
\r
763 Arg.addElement("CGG");
\r
764 Arg.addElement("CGC");
\r
765 Arg.addElement("CGT");
\r
767 Gly.addElement("GGA");
\r
768 Gly.addElement("GGG");
\r
769 Gly.addElement("GGC");
\r
770 Gly.addElement("GGT");
\r
772 STOP.addElement("TGA");
\r
773 STOP.addElement("TAA");
\r
774 STOP.addElement("TAG");
\r
776 Trp.addElement("TGG");
\r
778 Cys.addElement("TGC");
\r
779 Cys.addElement("TGT");
\r
781 Ile.addElement("ATA");
\r
782 Ile.addElement("ATC");
\r
783 Ile.addElement("ATT");
\r
785 Met.addElement("ATG");
\r
787 Leu.addElement("CTA");
\r
788 Leu.addElement("CTG");
\r
789 Leu.addElement("CTC");
\r
790 Leu.addElement("CTT");
\r
791 Leu.addElement("TTA");
\r
792 Leu.addElement("TTG");
\r
794 Val.addElement("GTA");
\r
795 Val.addElement("GTG");
\r
796 Val.addElement("GTC");
\r
797 Val.addElement("GTT");
\r
799 Phe.addElement("TTC");
\r
800 Phe.addElement("TTT");
\r
803 public static Color[][] groupColors =
\r
806 Color.red, Color.red.brighter(), Color.red.brighter().brighter()},
\r
808 Color.orange, Color.orange.brighter(),
\r
809 Color.orange.brighter().brighter()
\r
812 Color.green, Color.green.brighter(), Color.green.brighter().brighter()},
\r
814 Color.blue, Color.blue.brighter(), Color.blue.brighter().brighter()},
\r
816 Color.magenta, Color.magenta.brighter(),
\r
817 Color.magenta.brighter().brighter()
\r
820 Color.cyan, Color.cyan.brighter(), Color.cyan.brighter().brighter()},
\r
822 Color.pink, Color.pink.brighter(), Color.pink.brighter().brighter()},
\r
825 //Stores residue codes/names and colours and other things
\r
826 public static Hashtable propHash = new Hashtable();
\r
827 public static Hashtable hydrophobic = new Hashtable();
\r
828 public static Hashtable polar = new Hashtable();
\r
829 public static Hashtable small = new Hashtable();
\r
830 public static Hashtable positive = new Hashtable();
\r
831 public static Hashtable negative = new Hashtable();
\r
832 public static Hashtable charged = new Hashtable();
\r
833 public static Hashtable aromatic = new Hashtable();
\r
834 public static Hashtable aliphatic = new Hashtable();
\r
835 public static Hashtable tiny = new Hashtable();
\r
836 public static Hashtable proline = new Hashtable();
\r
840 hydrophobic.put("I", new Integer(1));
\r
841 hydrophobic.put("L", new Integer(1));
\r
842 hydrophobic.put("V", new Integer(1));
\r
843 hydrophobic.put("C", new Integer(1));
\r
844 hydrophobic.put("A", new Integer(1));
\r
845 hydrophobic.put("G", new Integer(1));
\r
846 hydrophobic.put("M", new Integer(1));
\r
847 hydrophobic.put("F", new Integer(1));
\r
848 hydrophobic.put("Y", new Integer(1));
\r
849 hydrophobic.put("W", new Integer(1));
\r
850 hydrophobic.put("H", new Integer(1));
\r
851 hydrophobic.put("K", new Integer(1));
\r
852 hydrophobic.put("X", new Integer(1));
\r
853 hydrophobic.put("-", new Integer(1));
\r
854 hydrophobic.put("*", new Integer(1));
\r
855 hydrophobic.put("R", new Integer(0));
\r
856 hydrophobic.put("E", new Integer(0));
\r
857 hydrophobic.put("Q", new Integer(0));
\r
858 hydrophobic.put("D", new Integer(0));
\r
859 hydrophobic.put("N", new Integer(0));
\r
860 hydrophobic.put("S", new Integer(0));
\r
861 hydrophobic.put("T", new Integer(0));
\r
862 hydrophobic.put("P", new Integer(0));
\r
867 polar.put("Y", new Integer(1));
\r
868 polar.put("W", new Integer(1));
\r
869 polar.put("H", new Integer(1));
\r
870 polar.put("K", new Integer(1));
\r
871 polar.put("R", new Integer(1));
\r
872 polar.put("E", new Integer(1));
\r
873 polar.put("Q", new Integer(1));
\r
874 polar.put("D", new Integer(1));
\r
875 polar.put("N", new Integer(1));
\r
876 polar.put("S", new Integer(1));
\r
877 polar.put("T", new Integer(1));
\r
878 polar.put("X", new Integer(1));
\r
879 polar.put("-", new Integer(1));
\r
880 polar.put("*", new Integer(1));
\r
881 polar.put("I", new Integer(0));
\r
882 polar.put("L", new Integer(0));
\r
883 polar.put("V", new Integer(0));
\r
884 polar.put("C", new Integer(0));
\r
885 polar.put("A", new Integer(0));
\r
886 polar.put("G", new Integer(0));
\r
887 polar.put("M", new Integer(0));
\r
888 polar.put("F", new Integer(0));
\r
889 polar.put("P", new Integer(0));
\r
894 small.put("I", new Integer(0));
\r
895 small.put("L", new Integer(0));
\r
896 small.put("V", new Integer(1));
\r
897 small.put("C", new Integer(1));
\r
898 small.put("A", new Integer(1));
\r
899 small.put("G", new Integer(1));
\r
900 small.put("M", new Integer(0));
\r
901 small.put("F", new Integer(0));
\r
902 small.put("Y", new Integer(0));
\r
903 small.put("W", new Integer(0));
\r
904 small.put("H", new Integer(0));
\r
905 small.put("K", new Integer(0));
\r
906 small.put("R", new Integer(0));
\r
907 small.put("E", new Integer(0));
\r
908 small.put("Q", new Integer(0));
\r
909 small.put("D", new Integer(1));
\r
910 small.put("N", new Integer(1));
\r
911 small.put("S", new Integer(1));
\r
912 small.put("T", new Integer(1));
\r
913 small.put("P", new Integer(1));
\r
914 small.put("-", new Integer(1));
\r
915 small.put("*", new Integer(1));
\r
920 positive.put("I", new Integer(0));
\r
921 positive.put("L", new Integer(0));
\r
922 positive.put("V", new Integer(0));
\r
923 positive.put("C", new Integer(0));
\r
924 positive.put("A", new Integer(0));
\r
925 positive.put("G", new Integer(0));
\r
926 positive.put("M", new Integer(0));
\r
927 positive.put("F", new Integer(0));
\r
928 positive.put("Y", new Integer(0));
\r
929 positive.put("W", new Integer(0));
\r
930 positive.put("H", new Integer(1));
\r
931 positive.put("K", new Integer(1));
\r
932 positive.put("R", new Integer(1));
\r
933 positive.put("E", new Integer(0));
\r
934 positive.put("Q", new Integer(0));
\r
935 positive.put("D", new Integer(0));
\r
936 positive.put("N", new Integer(0));
\r
937 positive.put("S", new Integer(0));
\r
938 positive.put("T", new Integer(0));
\r
939 positive.put("P", new Integer(0));
\r
940 positive.put("-", new Integer(1));
\r
941 positive.put("*", new Integer(1));
\r
946 negative.put("I", new Integer(0));
\r
947 negative.put("L", new Integer(0));
\r
948 negative.put("V", new Integer(0));
\r
949 negative.put("C", new Integer(0));
\r
950 negative.put("A", new Integer(0));
\r
951 negative.put("G", new Integer(0));
\r
952 negative.put("M", new Integer(0));
\r
953 negative.put("F", new Integer(0));
\r
954 negative.put("Y", new Integer(0));
\r
955 negative.put("W", new Integer(0));
\r
956 negative.put("H", new Integer(0));
\r
957 negative.put("K", new Integer(0));
\r
958 negative.put("R", new Integer(0));
\r
959 negative.put("E", new Integer(1));
\r
960 negative.put("Q", new Integer(0));
\r
961 negative.put("D", new Integer(1));
\r
962 negative.put("N", new Integer(0));
\r
963 negative.put("S", new Integer(0));
\r
964 negative.put("T", new Integer(0));
\r
965 negative.put("P", new Integer(0));
\r
966 negative.put("-", new Integer(1));
\r
967 negative.put("*", new Integer(1));
\r
972 charged.put("I", new Integer(0));
\r
973 charged.put("L", new Integer(0));
\r
974 charged.put("V", new Integer(0));
\r
975 charged.put("C", new Integer(0));
\r
976 charged.put("A", new Integer(0));
\r
977 charged.put("G", new Integer(0));
\r
978 charged.put("M", new Integer(0));
\r
979 charged.put("F", new Integer(0));
\r
980 charged.put("Y", new Integer(0));
\r
981 charged.put("W", new Integer(0));
\r
982 charged.put("H", new Integer(1));
\r
983 charged.put("K", new Integer(1));
\r
984 charged.put("R", new Integer(1));
\r
985 charged.put("E", new Integer(1));
\r
986 charged.put("Q", new Integer(0));
\r
987 charged.put("D", new Integer(1));
\r
988 charged.put("N", new Integer(1));
\r
989 charged.put("S", new Integer(0));
\r
990 charged.put("T", new Integer(0));
\r
991 charged.put("P", new Integer(0));
\r
992 charged.put("-", new Integer(1));
\r
993 charged.put("*", new Integer(1));
\r
998 aromatic.put("I", new Integer(0));
\r
999 aromatic.put("L", new Integer(0));
\r
1000 aromatic.put("V", new Integer(0));
\r
1001 aromatic.put("C", new Integer(0));
\r
1002 aromatic.put("A", new Integer(0));
\r
1003 aromatic.put("G", new Integer(0));
\r
1004 aromatic.put("M", new Integer(0));
\r
1005 aromatic.put("F", new Integer(1));
\r
1006 aromatic.put("Y", new Integer(1));
\r
1007 aromatic.put("W", new Integer(1));
\r
1008 aromatic.put("H", new Integer(1));
\r
1009 aromatic.put("K", new Integer(0));
\r
1010 aromatic.put("R", new Integer(0));
\r
1011 aromatic.put("E", new Integer(0));
\r
1012 aromatic.put("Q", new Integer(0));
\r
1013 aromatic.put("D", new Integer(0));
\r
1014 aromatic.put("N", new Integer(0));
\r
1015 aromatic.put("S", new Integer(0));
\r
1016 aromatic.put("T", new Integer(0));
\r
1017 aromatic.put("P", new Integer(0));
\r
1018 aromatic.put("-", new Integer(1));
\r
1019 aromatic.put("*", new Integer(1));
\r
1024 aliphatic.put("I", new Integer(1));
\r
1025 aliphatic.put("L", new Integer(1));
\r
1026 aliphatic.put("V", new Integer(1));
\r
1027 aliphatic.put("C", new Integer(0));
\r
1028 aliphatic.put("A", new Integer(0));
\r
1029 aliphatic.put("G", new Integer(0));
\r
1030 aliphatic.put("M", new Integer(0));
\r
1031 aliphatic.put("F", new Integer(0));
\r
1032 aliphatic.put("Y", new Integer(0));
\r
1033 aliphatic.put("W", new Integer(0));
\r
1034 aliphatic.put("H", new Integer(0));
\r
1035 aliphatic.put("K", new Integer(0));
\r
1036 aliphatic.put("R", new Integer(0));
\r
1037 aliphatic.put("E", new Integer(0));
\r
1038 aliphatic.put("Q", new Integer(0));
\r
1039 aliphatic.put("D", new Integer(0));
\r
1040 aliphatic.put("N", new Integer(0));
\r
1041 aliphatic.put("S", new Integer(0));
\r
1042 aliphatic.put("T", new Integer(0));
\r
1043 aliphatic.put("P", new Integer(0));
\r
1044 aliphatic.put("-", new Integer(1));
\r
1045 aliphatic.put("*", new Integer(1));
\r
1050 tiny.put("I", new Integer(0));
\r
1051 tiny.put("L", new Integer(0));
\r
1052 tiny.put("V", new Integer(0));
\r
1053 tiny.put("C", new Integer(0));
\r
1054 tiny.put("A", new Integer(1));
\r
1055 tiny.put("G", new Integer(1));
\r
1056 tiny.put("M", new Integer(0));
\r
1057 tiny.put("F", new Integer(0));
\r
1058 tiny.put("Y", new Integer(0));
\r
1059 tiny.put("W", new Integer(0));
\r
1060 tiny.put("H", new Integer(0));
\r
1061 tiny.put("K", new Integer(0));
\r
1062 tiny.put("R", new Integer(0));
\r
1063 tiny.put("E", new Integer(0));
\r
1064 tiny.put("Q", new Integer(0));
\r
1065 tiny.put("D", new Integer(0));
\r
1066 tiny.put("N", new Integer(0));
\r
1067 tiny.put("S", new Integer(1));
\r
1068 tiny.put("T", new Integer(0));
\r
1069 tiny.put("P", new Integer(0));
\r
1070 tiny.put("-", new Integer(1));
\r
1071 tiny.put("*", new Integer(1));
\r
1076 proline.put("I", new Integer(0));
\r
1077 proline.put("L", new Integer(0));
\r
1078 proline.put("V", new Integer(0));
\r
1079 proline.put("C", new Integer(0));
\r
1080 proline.put("A", new Integer(0));
\r
1081 proline.put("G", new Integer(0));
\r
1082 proline.put("M", new Integer(0));
\r
1083 proline.put("F", new Integer(0));
\r
1084 proline.put("Y", new Integer(0));
\r
1085 proline.put("W", new Integer(0));
\r
1086 proline.put("H", new Integer(0));
\r
1087 proline.put("K", new Integer(0));
\r
1088 proline.put("R", new Integer(0));
\r
1089 proline.put("E", new Integer(0));
\r
1090 proline.put("Q", new Integer(0));
\r
1091 proline.put("D", new Integer(0));
\r
1092 proline.put("N", new Integer(0));
\r
1093 proline.put("S", new Integer(0));
\r
1094 proline.put("T", new Integer(0));
\r
1095 proline.put("P", new Integer(1));
\r
1096 proline.put("-", new Integer(1));
\r
1097 proline.put("*", new Integer(1));
\r
1102 propHash.put("hydrophobic", hydrophobic);
\r
1103 propHash.put("small", small);
\r
1104 propHash.put("positive", positive);
\r
1105 propHash.put("negative", negative);
\r
1106 propHash.put("charged", charged);
\r
1107 propHash.put("aromatic", aromatic);
\r
1108 propHash.put("aliphatic", aliphatic);
\r
1109 propHash.put("tiny", tiny);
\r
1110 propHash.put("proline", proline);
\r
1111 propHash.put("polar", polar);
\r
1114 public static Hashtable chainColours = new Hashtable();
\r
1118 chainColours.put("A", Color.red);
\r
1119 chainColours.put("B", Color.orange);
\r
1120 chainColours.put("C", Color.yellow);
\r
1121 chainColours.put("D", Color.green);
\r
1122 chainColours.put("E", Color.cyan);
\r
1123 chainColours.put("F", Color.blue);
\r
1124 chainColours.put("G", Color.magenta);
\r
1125 chainColours.put("H", Color.pink);
\r
1128 private ResidueProperties()
\r
1132 public static double getHydmax()
\r
1137 public static double getHydmin()
\r
1142 public static double[] getHyd()
\r
1147 public static Hashtable getAAHash()
\r
1152 public static Hashtable getAA3Hash()
\r
1157 public static int[][] getDNA()
\r
1159 return ResidueProperties.DNA;
\r
1162 public static int[][] getBLOSUM62()
\r
1164 return ResidueProperties.BLOSUM62;
\r
1167 public static int getPAM250(String A1, String A2)
\r
1169 Integer pog1 = (Integer) aaHash.get(A1);
\r
1170 Integer pog2 = (Integer) aaHash.get(A2);
\r
1171 int pog = ResidueProperties.PAM250[pog1.intValue()][pog2.intValue()];
\r
1176 public static int getBLOSUM62(String A1, String A2)
\r
1182 Integer pog1 = (Integer) aaHash.get(A1);
\r
1183 Integer pog2 = (Integer) aaHash.get(A2);
\r
1184 pog = ResidueProperties.BLOSUM62[pog1.intValue()][pog2.intValue()];
\r
1186 catch (Exception e)
\r
1188 //System.out.println("Unknown residue in " + A1 + " " + A2);
\r
1194 public static Vector getCodons(String res)
\r
1196 if (codonHash.containsKey(res))
\r
1198 return (Vector) codonHash.get(res);
\r
1204 public static String codonTranslate(String codon)
\r
1206 Enumeration e = codonHash.keys();
\r
1208 while (e.hasMoreElements())
\r
1210 String key = (String) e.nextElement();
\r
1211 Vector tmp = (Vector) codonHash.get(key);
\r
1213 if (tmp.contains(codon))
\r
1222 public static Hashtable getChainColours()
\r
1224 return chainColours;
\r