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
32 public static final Hashtable nucleotideName = new Hashtable();
\r
36 aaHash.put("A", new Integer(0));
\r
37 aaHash.put("R", new Integer(1));
\r
38 aaHash.put("N", new Integer(2));
\r
39 aaHash.put("D", new Integer(3));
\r
40 aaHash.put("C", new Integer(4));
\r
41 aaHash.put("Q", new Integer(5));
\r
42 aaHash.put("E", new Integer(6));
\r
43 aaHash.put("G", new Integer(7));
\r
44 aaHash.put("H", new Integer(8));
\r
45 aaHash.put("I", new Integer(9));
\r
46 aaHash.put("L", new Integer(10));
\r
47 aaHash.put("K", new Integer(11));
\r
48 aaHash.put("M", new Integer(12));
\r
49 aaHash.put("F", new Integer(13));
\r
50 aaHash.put("P", new Integer(14));
\r
51 aaHash.put("S", new Integer(15));
\r
52 aaHash.put("T", new Integer(16));
\r
53 aaHash.put("W", new Integer(17));
\r
54 aaHash.put("Y", new Integer(18));
\r
55 aaHash.put("V", new Integer(19));
\r
56 aaHash.put("B", new Integer(20));
\r
57 aaHash.put("Z", new Integer(21));
\r
58 aaHash.put("X", new Integer(22));
\r
59 aaHash.put("U", new Integer(22));
\r
60 aaHash.put("a", new Integer(0));
\r
61 aaHash.put("r", new Integer(1));
\r
62 aaHash.put("n", new Integer(2));
\r
63 aaHash.put("d", new Integer(3));
\r
64 aaHash.put("c", new Integer(4));
\r
65 aaHash.put("q", new Integer(5));
\r
66 aaHash.put("e", new Integer(6));
\r
67 aaHash.put("g", new Integer(7));
\r
68 aaHash.put("h", new Integer(8));
\r
69 aaHash.put("i", new Integer(9));
\r
70 aaHash.put("l", new Integer(10));
\r
71 aaHash.put("k", new Integer(11));
\r
72 aaHash.put("m", new Integer(12));
\r
73 aaHash.put("f", new Integer(13));
\r
74 aaHash.put("p", new Integer(14));
\r
75 aaHash.put("s", new Integer(15));
\r
76 aaHash.put("t", new Integer(16));
\r
77 aaHash.put("w", new Integer(17));
\r
78 aaHash.put("y", new Integer(18));
\r
79 aaHash.put("v", new Integer(19));
\r
80 aaHash.put("b", new Integer(20));
\r
81 aaHash.put("z", new Integer(21));
\r
82 aaHash.put("x", new Integer(22));
\r
83 aaHash.put("u", new Integer(22));
\r
84 aaHash.put("-", new Integer(23));
\r
85 aaHash.put("*", new Integer(23));
\r
86 aaHash.put(".", new Integer(23));
\r
87 aaHash.put(" ", new Integer(23));
\r
92 nucleotideHash.put("A", new Integer(0));
\r
93 nucleotideHash.put("a", new Integer(0));
\r
94 nucleotideHash.put("C", new Integer(1));
\r
95 nucleotideHash.put("c", new Integer(1));
\r
96 nucleotideHash.put("G", new Integer(2));
\r
97 nucleotideHash.put("g", new Integer(2));
\r
98 nucleotideHash.put("T", new Integer(3));
\r
99 nucleotideHash.put("t", new Integer(3));
\r
100 nucleotideHash.put("U", new Integer(4));
\r
101 nucleotideHash.put("u", new Integer(4));
\r
102 nucleotideHash.put("I", new Integer(5));
\r
103 nucleotideHash.put("i", new Integer(5));
\r
104 nucleotideHash.put("X", new Integer(6));
\r
105 nucleotideHash.put("x", new Integer(6));
\r
106 nucleotideHash.put("R", new Integer(7));
\r
107 nucleotideHash.put("r", new Integer(7));
\r
108 nucleotideHash.put("Y", new Integer(8));
\r
109 nucleotideHash.put("y", new Integer(8));
\r
110 nucleotideHash.put("N", new Integer(9));
\r
111 nucleotideHash.put("n", new Integer(9));
\r
114 nucleotideName.put("A", "Adenine");
\r
115 nucleotideName.put("a", "Adenine");
\r
116 nucleotideName.put("G", "Guanine");
\r
117 nucleotideName.put("g", "Guanine");
\r
118 nucleotideName.put("C", "Cytosine");
\r
119 nucleotideName.put("c", "Cytosine");
\r
120 nucleotideName.put("T", "Thymine");
\r
121 nucleotideName.put("t", "Thymine");
\r
122 nucleotideName.put("U", "Uracil");
\r
123 nucleotideName.put("u", "Uracil");
\r
124 nucleotideName.put("I", "Inosine");
\r
125 nucleotideName.put("i", "Inosine");
\r
126 nucleotideName.put("X", "Xanthine");
\r
127 nucleotideName.put("x", "Xanthine");
\r
128 nucleotideName.put("R", "Unknown Purine");
\r
129 nucleotideName.put("r", "Unknown Purine");
\r
130 nucleotideName.put("Y", "Unknown Pyrimidine");
\r
131 nucleotideName.put("y", "Unknown Pyrimidine");
\r
132 nucleotideName.put("N", "Unknown");
\r
133 nucleotideName.put("n", "Unknown");
\r
139 aa3Hash.put("ALA", new Integer(0));
\r
140 aa3Hash.put("ARG", new Integer(1));
\r
141 aa3Hash.put("ASN", new Integer(2));
\r
142 aa3Hash.put("ASP", new Integer(3)); //D
\r
143 aa3Hash.put("CYS", new Integer(4));
\r
144 aa3Hash.put("GLN", new Integer(5)); //Q
\r
145 aa3Hash.put("GLU", new Integer(6)); // E
\r
146 aa3Hash.put("GLY", new Integer(7));
\r
147 aa3Hash.put("HIS", new Integer(8));
\r
148 aa3Hash.put("ILE", new Integer(9));
\r
149 aa3Hash.put("LEU", new Integer(10));
\r
150 aa3Hash.put("LYS", new Integer(11));
\r
151 aa3Hash.put("MET", new Integer(12));
\r
152 aa3Hash.put("PHE", new Integer(13));
\r
153 aa3Hash.put("PRO", new Integer(14));
\r
154 aa3Hash.put("SER", new Integer(15));
\r
155 aa3Hash.put("THR", new Integer(16));
\r
156 aa3Hash.put("TRP", new Integer(17));
\r
157 aa3Hash.put("TYR", new Integer(18));
\r
158 aa3Hash.put("VAL", new Integer(19));
\r
159 aa3Hash.put("B", new Integer(20));
\r
160 aa3Hash.put("Z", new Integer(21));
\r
161 aa3Hash.put("X", new Integer(22));
\r
162 aa3Hash.put("-", new Integer(23));
\r
163 aa3Hash.put("*", new Integer(23));
\r
164 aa3Hash.put(".", new Integer(23));
\r
165 aa3Hash.put(" ", new Integer(23));
\r
170 aa2Triplet.put("A", "ALA");
\r
171 aa2Triplet.put("a", "ALA");
\r
172 aa2Triplet.put("R", "ARG");
\r
173 aa2Triplet.put("r", "ARG");
\r
174 aa2Triplet.put("N", "ASN");
\r
175 aa2Triplet.put("n", "ASN");
\r
176 aa2Triplet.put("D", "ASP");
\r
177 aa2Triplet.put("d", "ASP");
\r
178 aa2Triplet.put("C", "CYS");
\r
179 aa2Triplet.put("c", "CYS");
\r
180 aa2Triplet.put("Q", "GLN");
\r
181 aa2Triplet.put("q", "GLN");
\r
182 aa2Triplet.put("E", "GLU");
\r
183 aa2Triplet.put("e", "GLU");
\r
184 aa2Triplet.put("G", "GLY");
\r
185 aa2Triplet.put("g", "GLY");
\r
186 aa2Triplet.put("H", "HIS");
\r
187 aa2Triplet.put("h", "HIS");
\r
188 aa2Triplet.put("I", "ILE");
\r
189 aa2Triplet.put("i", "ILE");
\r
190 aa2Triplet.put("L", "LEU");
\r
191 aa2Triplet.put("l", "LEU");
\r
192 aa2Triplet.put("K", "LYS");
\r
193 aa2Triplet.put("k", "LYS");
\r
194 aa2Triplet.put("M", "MET");
\r
195 aa2Triplet.put("m", "MET");
\r
196 aa2Triplet.put("F", "PHE");
\r
197 aa2Triplet.put("f", "PHE");
\r
198 aa2Triplet.put("P", "PRO");
\r
199 aa2Triplet.put("p", "PRO");
\r
200 aa2Triplet.put("S", "SER");
\r
201 aa2Triplet.put("s", "SER");
\r
202 aa2Triplet.put("T", "THR");
\r
203 aa2Triplet.put("t", "THR");
\r
204 aa2Triplet.put("W", "TRP");
\r
205 aa2Triplet.put("w", "TRP");
\r
206 aa2Triplet.put("Y", "TYR");
\r
207 aa2Triplet.put("y", "TYR");
\r
208 aa2Triplet.put("V", "VAL");
\r
209 aa2Triplet.put("v", "VAL");
\r
212 public static final String[] aa =
\r
214 "A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F",
\r
215 "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "
\r
217 public static final Color midBlue = new Color(100, 100, 255);
\r
218 public static final Vector scaleColours = new Vector();
\r
222 scaleColours.addElement(new Color(114, 0, 147));
\r
223 scaleColours.addElement(new Color(156, 0, 98));
\r
224 scaleColours.addElement(new Color(190, 0, 0));
\r
225 scaleColours.addElement(Color.red);
\r
226 scaleColours.addElement(new Color(255, 125, 0));
\r
227 scaleColours.addElement(Color.orange);
\r
228 scaleColours.addElement(new Color(255, 194, 85));
\r
229 scaleColours.addElement(Color.yellow);
\r
230 scaleColours.addElement(new Color(255, 255, 181));
\r
231 scaleColours.addElement(Color.white);
\r
234 public static final Color[] taylor =
\r
236 new Color(204, 255, 0), // A Greenish-yellowy-yellow
\r
237 new Color(0, 0, 255), // R Blueish-bluey-blue
\r
238 new Color(204, 0, 255), // N Blueish-reddy-blue
\r
239 new Color(255, 0, 0), // D Reddish-reddy-red
\r
240 new Color(255, 255, 0), // C Yellowish-yellowy-yellow
\r
241 new Color(255, 0, 204), // Q Reddish-bluey-red
\r
242 new Color(255, 0, 102), // E Blueish-reddy-red
\r
243 new Color(255, 153, 0), // G Yellowy-reddy-yellow
\r
244 new Color(0, 102, 255), // H Greenish-bluey-blue
\r
245 new Color(102, 255, 0), // I Greenish-yellowy-green
\r
246 new Color(51, 255, 0), // L Yellowish-greeny-green
\r
247 new Color(102, 0, 255), // K Reddish-bluey-blue
\r
248 new Color(0, 255, 0), // M Greenish-greeny-green
\r
249 new Color(0, 255, 102), // F Blueish-greeny-green
\r
250 new Color(255, 204, 0), // P Reddish-yellowy-yellow
\r
251 new Color(255, 51, 0), // S Yellowish-reddy-red
\r
252 new Color(255, 102, 0), // T Reddish-yellowy-red
\r
253 new Color(0, 204, 255), // W Blueish-greeny-green
\r
254 new Color(0, 255, 204), // Y Greenish-bluey-green
\r
255 new Color(153, 255, 0), // V Yellowish-greeny-yellow
\r
263 public static final Color[] nucleotide =
\r
265 new Color(100, 247, 63), // A
\r
266 new Color(255, 179, 64), // C
\r
267 new Color(235, 65, 60), // G
\r
268 new Color(60, 136, 238), // T
\r
269 new Color(60, 136, 238) // U
\r
271 public static final Color[] color =
\r
280 Color.magenta, // G
\r
287 Color.magenta, // P
\r
302 // Dunno where I got these numbers from
\r
303 public static final double[] hyd2 =
\r
329 public static final double[] helix =
\r
331 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
332 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
334 public static final double helixmin = 0.57;
\r
335 public static final double helixmax = 1.51;
\r
336 public static final double[] strand =
\r
338 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
339 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
341 public static final double strandmin = 0.37;
\r
342 public static final double strandmax = 1.7;
\r
343 public static final double[] turn =
\r
345 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
346 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
348 public static final double turnmin = 0.47;
\r
349 public static final double turnmax = 1.56;
\r
350 public static final double[] buried =
\r
352 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
353 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00
\r
355 public static final double buriedmin = 0.05;
\r
356 public static final double buriedmax = 4.6;
\r
358 // This is hydropathy index
\r
359 // Kyte, J., and Doolittle, R.F., J. Mol. Biol.
\r
360 // 1157, 105-132, 1982
\r
361 public static final double[] hyd =
\r
363 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
364 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0
\r
366 public static final double hydmax = 4.5;
\r
367 public static final double hydmin = -3.9;
\r
369 //public static final double hydmax = 1.38;
\r
370 //public static final double hydmin = -2.53;
\r
371 static final int[][] BLOSUM62 =
\r
374 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3,
\r
375 -2, 0, -2, -1, 0, -4
\r
378 -1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2,
\r
382 -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3,
\r
386 -2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4,
\r
387 -3, -3, 4, 1, -1, -4
\r
390 0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2,
\r
391 -2, -1, -3, -3, -2, -4
\r
394 -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1,
\r
398 -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2,
\r
402 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2,
\r
403 -3, -3, -1, -2, -1, -4
\r
406 -2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2,
\r
410 -1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3,
\r
411 -1, 3, -3, -3, -1, -4
\r
414 -1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2,
\r
415 -1, 1, -4, -3, -1, -4
\r
418 -1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2,
\r
422 -1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1,
\r
423 -1, 1, -3, -1, -1, -4
\r
426 -2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3,
\r
430 -1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1,
\r
431 -4, -3, -2, -2, -1, -2, -4
\r
434 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2,
\r
438 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2,
\r
439 -2, 0, -1, -1, 0, -4
\r
442 -3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2,
\r
443 11, 2, -3, -4, -3, -2, -4
\r
446 -2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2,
\r
447 7, -1, -3, -2, -1, -4
\r
450 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3,
\r
451 -1, 4, -3, -2, -1, -4
\r
454 -2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3,
\r
458 -1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2,
\r
462 0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2,
\r
463 -1, -1, -1, -1, -1, -4
\r
466 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
\r
467 -4, -4, -4, -4, -4, -4, 1
\r
470 static final int[][] PAM250 =
\r
473 2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0,
\r
477 -2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4,
\r
481 0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2,
\r
485 0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2,
\r
489 -2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2,
\r
490 -8, 0, -2, -4, -5, -3, -8
\r
493 0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4,
\r
497 0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2,
\r
501 1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5,
\r
505 -1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0,
\r
509 -1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5,
\r
510 -1, 4, -2, -2, -1, -8
\r
513 -2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2,
\r
514 -1, 2, -3, -3, -1, -8
\r
517 -1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2,
\r
521 -1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2,
\r
525 -3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7,
\r
529 1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5,
\r
533 1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1,
\r
537 1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0,
\r
541 -6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17,
\r
542 0, -6, -5, -6, -4, -8
\r
545 -3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0,
\r
546 10, -2, -3, -4, -2, -8
\r
549 0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6,
\r
550 -2, 4, -2, -2, -1, -8
\r
553 0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2,
\r
557 0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2,
\r
561 0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4,
\r
562 -2, -1, -1, -1, -1, -8
\r
565 -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,
\r
566 -8, -8, -8, -8, -8, -8, 1
\r
569 public static final Hashtable ssHash = new Hashtable(); // stores the number value of the aa
\r
573 ssHash.put("H", Color.magenta);
\r
574 ssHash.put("E", Color.yellow);
\r
575 ssHash.put("-", Color.white);
\r
576 ssHash.put(".", Color.white);
\r
577 ssHash.put("S", Color.cyan);
\r
578 ssHash.put("T", Color.blue);
\r
579 ssHash.put("G", Color.pink);
\r
580 ssHash.put("I", Color.pink);
\r
581 ssHash.put("B", Color.yellow);
\r
584 static final int[][] DNA =
\r
587 5, -4, -4, -4, 1}, // C
\r
589 -4, 5, -4, -4, 1}, // T
\r
591 -4, -4, 5, -4, 1}, // A
\r
593 -4, -4, -4, 5, 1}, // G
\r
595 1, 1, 1, 1, 1}, // -
\r
597 public static final Color[] pidColours =
\r
599 midBlue, new Color(153, 153, 255),
\r
600 // Color.lightGray,
\r
601 new Color(204, 204, 255),
\r
603 public static final float[] pidThresholds =
\r
606 public static Hashtable codonHash = new Hashtable();
\r
607 public static Vector Lys = new Vector();
\r
608 public static Vector Asn = new Vector();
\r
609 public static Vector Gln = new Vector();
\r
610 public static Vector His = new Vector();
\r
611 public static Vector Glu = new Vector();
\r
612 public static Vector Asp = new Vector();
\r
613 public static Vector Tyr = new Vector();
\r
614 public static Vector Thr = new Vector();
\r
615 public static Vector Pro = new Vector();
\r
616 public static Vector Ala = new Vector();
\r
617 public static Vector Ser = new Vector();
\r
618 public static Vector Arg = new Vector();
\r
619 public static Vector Gly = new Vector();
\r
620 public static Vector Trp = new Vector();
\r
621 public static Vector Cys = new Vector();
\r
622 public static Vector Ile = new Vector();
\r
623 public static Vector Met = new Vector();
\r
624 public static Vector Leu = new Vector();
\r
625 public static Vector Val = new Vector();
\r
626 public static Vector Phe = new Vector();
\r
627 public static Vector STOP = new Vector();
\r
631 codonHash.put("K", Lys);
\r
632 codonHash.put("N", Asn);
\r
633 codonHash.put("Q", Gln);
\r
634 codonHash.put("H", His);
\r
635 codonHash.put("E", Glu);
\r
636 codonHash.put("D", Asp);
\r
637 codonHash.put("Y", Tyr);
\r
638 codonHash.put("T", Thr);
\r
639 codonHash.put("P", Pro);
\r
640 codonHash.put("A", Ala);
\r
641 codonHash.put("S", Ser);
\r
642 codonHash.put("R", Arg);
\r
643 codonHash.put("G", Gly);
\r
644 codonHash.put("W", Trp);
\r
645 codonHash.put("C", Cys);
\r
646 codonHash.put("I", Ile);
\r
647 codonHash.put("M", Met);
\r
648 codonHash.put("L", Leu);
\r
649 codonHash.put("V", Val);
\r
650 codonHash.put("F", Phe);
\r
651 codonHash.put("STOP", STOP);
\r
654 public static Hashtable codonHash2 = new Hashtable();
\r
658 codonHash2.put("AAA", "K");
\r
659 codonHash2.put("AAG", "K");
\r
660 codonHash2.put("AAC", "N");
\r
661 codonHash2.put("AAT", "N");
\r
663 codonHash2.put("CAA", "E");
\r
664 codonHash2.put("CAG", "E");
\r
665 codonHash2.put("CAC", "H");
\r
666 codonHash2.put("CAT", "H");
\r
668 codonHash2.put("GAA", "Q");
\r
669 codonHash2.put("GAG", "Q");
\r
670 codonHash2.put("GAC", "D");
\r
671 codonHash2.put("GAT", "D");
\r
673 codonHash2.put("TAC", "Y");
\r
674 codonHash2.put("TAT", "Y");
\r
676 codonHash2.put("ACA", "T");
\r
677 codonHash2.put("AAG", "T");
\r
678 codonHash2.put("ACC", "T");
\r
679 codonHash2.put("ACT", "T");
\r
681 codonHash2.put("CCA", "P");
\r
682 codonHash2.put("CCG", "P");
\r
683 codonHash2.put("CCC", "P");
\r
684 codonHash2.put("CCT", "P");
\r
686 codonHash2.put("GCA", "A");
\r
687 codonHash2.put("GCG", "A");
\r
688 codonHash2.put("GCC", "A");
\r
689 codonHash2.put("GCT", "A");
\r
691 codonHash2.put("TCA", "S");
\r
692 codonHash2.put("TCG", "S");
\r
693 codonHash2.put("TCC", "S");
\r
694 codonHash2.put("TCT", "S");
\r
695 codonHash2.put("AGC", "S");
\r
696 codonHash2.put("AGT", "S");
\r
698 codonHash2.put("AGA", "R");
\r
699 codonHash2.put("AGG", "R");
\r
700 codonHash2.put("CGA", "R");
\r
701 codonHash2.put("CGG", "R");
\r
702 codonHash2.put("CGC", "R");
\r
703 codonHash2.put("CGT", "R");
\r
705 codonHash2.put("GGA", "G");
\r
706 codonHash2.put("GGG", "G");
\r
707 codonHash2.put("GGC", "G");
\r
708 codonHash2.put("GGT", "G");
\r
710 codonHash2.put("TGA", "*");
\r
711 codonHash2.put("TAA", "*");
\r
712 codonHash2.put("TAG", "*");
\r
714 codonHash2.put("TGG", "W");
\r
716 codonHash2.put("TGC", "C");
\r
717 codonHash2.put("TGT", "C");
\r
719 codonHash2.put("ATA", "I");
\r
720 codonHash2.put("ATC", "I");
\r
721 codonHash2.put("ATT", "I");
\r
723 codonHash2.put("ATG", "M");
\r
725 codonHash2.put("CTA", "L");
\r
726 codonHash2.put("CTG", "L");
\r
727 codonHash2.put("CTC", "L");
\r
728 codonHash2.put("CTT", "L");
\r
729 codonHash2.put("TTA", "L");
\r
730 codonHash2.put("TTG", "L");
\r
732 codonHash2.put("GTA", "V");
\r
733 codonHash2.put("GTG", "V");
\r
734 codonHash2.put("GTC", "V");
\r
735 codonHash2.put("GTT", "V");
\r
737 codonHash2.put("TTC", "F");
\r
738 codonHash2.put("TTT", "F");
\r
743 Lys.addElement("AAA");
\r
744 Lys.addElement("AAG");
\r
745 Asn.addElement("AAC");
\r
746 Asn.addElement("AAT");
\r
748 Gln.addElement("CAA");
\r
749 Gln.addElement("CAG");
\r
750 His.addElement("CAC");
\r
751 His.addElement("CAT");
\r
753 Glu.addElement("GAA");
\r
754 Glu.addElement("GAG");
\r
755 Asp.addElement("GAC");
\r
756 Asp.addElement("GAT");
\r
758 Tyr.addElement("TAC");
\r
759 Tyr.addElement("TAT");
\r
761 Thr.addElement("ACA");
\r
762 Thr.addElement("ACG");
\r
763 Thr.addElement("ACC");
\r
764 Thr.addElement("ACT");
\r
766 Pro.addElement("CCA");
\r
767 Pro.addElement("CCG");
\r
768 Pro.addElement("CCC");
\r
769 Pro.addElement("CCT");
\r
771 Ala.addElement("GCA");
\r
772 Ala.addElement("GCG");
\r
773 Ala.addElement("GCC");
\r
774 Ala.addElement("GCT");
\r
776 Ser.addElement("TCA");
\r
777 Ser.addElement("TCG");
\r
778 Ser.addElement("TCC");
\r
779 Ser.addElement("TCT");
\r
780 Ser.addElement("AGC");
\r
781 Ser.addElement("AGT");
\r
783 Arg.addElement("AGA");
\r
784 Arg.addElement("AGG");
\r
785 Arg.addElement("CGA");
\r
786 Arg.addElement("CGG");
\r
787 Arg.addElement("CGC");
\r
788 Arg.addElement("CGT");
\r
790 Gly.addElement("GGA");
\r
791 Gly.addElement("GGG");
\r
792 Gly.addElement("GGC");
\r
793 Gly.addElement("GGT");
\r
795 STOP.addElement("TGA");
\r
796 STOP.addElement("TAA");
\r
797 STOP.addElement("TAG");
\r
799 Trp.addElement("TGG");
\r
801 Cys.addElement("TGC");
\r
802 Cys.addElement("TGT");
\r
804 Ile.addElement("ATA");
\r
805 Ile.addElement("ATC");
\r
806 Ile.addElement("ATT");
\r
808 Met.addElement("ATG");
\r
810 Leu.addElement("CTA");
\r
811 Leu.addElement("CTG");
\r
812 Leu.addElement("CTC");
\r
813 Leu.addElement("CTT");
\r
814 Leu.addElement("TTA");
\r
815 Leu.addElement("TTG");
\r
817 Val.addElement("GTA");
\r
818 Val.addElement("GTG");
\r
819 Val.addElement("GTC");
\r
820 Val.addElement("GTT");
\r
822 Phe.addElement("TTC");
\r
823 Phe.addElement("TTT");
\r
826 public static Color[][] groupColors =
\r
829 Color.red, Color.red.brighter(), Color.red.brighter().brighter()},
\r
831 Color.orange, Color.orange.brighter(),
\r
832 Color.orange.brighter().brighter()
\r
835 Color.green, Color.green.brighter(), Color.green.brighter().brighter()},
\r
837 Color.blue, Color.blue.brighter(), Color.blue.brighter().brighter()},
\r
839 Color.magenta, Color.magenta.brighter(),
\r
840 Color.magenta.brighter().brighter()
\r
843 Color.cyan, Color.cyan.brighter(), Color.cyan.brighter().brighter()},
\r
845 Color.pink, Color.pink.brighter(), Color.pink.brighter().brighter()},
\r
848 //Stores residue codes/names and colours and other things
\r
849 public static Hashtable propHash = new Hashtable();
\r
850 public static Hashtable hydrophobic = new Hashtable();
\r
851 public static Hashtable polar = new Hashtable();
\r
852 public static Hashtable small = new Hashtable();
\r
853 public static Hashtable positive = new Hashtable();
\r
854 public static Hashtable negative = new Hashtable();
\r
855 public static Hashtable charged = new Hashtable();
\r
856 public static Hashtable aromatic = new Hashtable();
\r
857 public static Hashtable aliphatic = new Hashtable();
\r
858 public static Hashtable tiny = new Hashtable();
\r
859 public static Hashtable proline = new Hashtable();
\r
863 hydrophobic.put("I", new Integer(1));
\r
864 hydrophobic.put("L", new Integer(1));
\r
865 hydrophobic.put("V", new Integer(1));
\r
866 hydrophobic.put("C", new Integer(1));
\r
867 hydrophobic.put("A", new Integer(1));
\r
868 hydrophobic.put("G", new Integer(1));
\r
869 hydrophobic.put("M", new Integer(1));
\r
870 hydrophobic.put("F", new Integer(1));
\r
871 hydrophobic.put("Y", new Integer(1));
\r
872 hydrophobic.put("W", new Integer(1));
\r
873 hydrophobic.put("H", new Integer(1));
\r
874 hydrophobic.put("K", new Integer(1));
\r
875 hydrophobic.put("X", new Integer(1));
\r
876 hydrophobic.put("-", new Integer(1));
\r
877 hydrophobic.put("*", new Integer(1));
\r
878 hydrophobic.put("R", new Integer(0));
\r
879 hydrophobic.put("E", new Integer(0));
\r
880 hydrophobic.put("Q", new Integer(0));
\r
881 hydrophobic.put("D", new Integer(0));
\r
882 hydrophobic.put("N", new Integer(0));
\r
883 hydrophobic.put("S", new Integer(0));
\r
884 hydrophobic.put("T", new Integer(0));
\r
885 hydrophobic.put("P", new Integer(0));
\r
890 polar.put("Y", new Integer(1));
\r
891 polar.put("W", new Integer(1));
\r
892 polar.put("H", new Integer(1));
\r
893 polar.put("K", new Integer(1));
\r
894 polar.put("R", new Integer(1));
\r
895 polar.put("E", new Integer(1));
\r
896 polar.put("Q", new Integer(1));
\r
897 polar.put("D", new Integer(1));
\r
898 polar.put("N", new Integer(1));
\r
899 polar.put("S", new Integer(1));
\r
900 polar.put("T", new Integer(1));
\r
901 polar.put("X", new Integer(1));
\r
902 polar.put("-", new Integer(1));
\r
903 polar.put("*", new Integer(1));
\r
904 polar.put("I", new Integer(0));
\r
905 polar.put("L", new Integer(0));
\r
906 polar.put("V", new Integer(0));
\r
907 polar.put("C", new Integer(0));
\r
908 polar.put("A", new Integer(0));
\r
909 polar.put("G", new Integer(0));
\r
910 polar.put("M", new Integer(0));
\r
911 polar.put("F", new Integer(0));
\r
912 polar.put("P", new Integer(0));
\r
917 small.put("I", new Integer(0));
\r
918 small.put("L", new Integer(0));
\r
919 small.put("V", new Integer(1));
\r
920 small.put("C", new Integer(1));
\r
921 small.put("A", new Integer(1));
\r
922 small.put("G", new Integer(1));
\r
923 small.put("M", new Integer(0));
\r
924 small.put("F", new Integer(0));
\r
925 small.put("Y", new Integer(0));
\r
926 small.put("W", new Integer(0));
\r
927 small.put("H", new Integer(0));
\r
928 small.put("K", new Integer(0));
\r
929 small.put("R", new Integer(0));
\r
930 small.put("E", new Integer(0));
\r
931 small.put("Q", new Integer(0));
\r
932 small.put("D", new Integer(1));
\r
933 small.put("N", new Integer(1));
\r
934 small.put("S", new Integer(1));
\r
935 small.put("T", new Integer(1));
\r
936 small.put("P", new Integer(1));
\r
937 small.put("-", new Integer(1));
\r
938 small.put("*", new Integer(1));
\r
943 positive.put("I", new Integer(0));
\r
944 positive.put("L", new Integer(0));
\r
945 positive.put("V", new Integer(0));
\r
946 positive.put("C", new Integer(0));
\r
947 positive.put("A", new Integer(0));
\r
948 positive.put("G", new Integer(0));
\r
949 positive.put("M", new Integer(0));
\r
950 positive.put("F", new Integer(0));
\r
951 positive.put("Y", new Integer(0));
\r
952 positive.put("W", new Integer(0));
\r
953 positive.put("H", new Integer(1));
\r
954 positive.put("K", new Integer(1));
\r
955 positive.put("R", new Integer(1));
\r
956 positive.put("E", new Integer(0));
\r
957 positive.put("Q", new Integer(0));
\r
958 positive.put("D", new Integer(0));
\r
959 positive.put("N", new Integer(0));
\r
960 positive.put("S", new Integer(0));
\r
961 positive.put("T", new Integer(0));
\r
962 positive.put("P", new Integer(0));
\r
963 positive.put("-", new Integer(1));
\r
964 positive.put("*", new Integer(1));
\r
969 negative.put("I", new Integer(0));
\r
970 negative.put("L", new Integer(0));
\r
971 negative.put("V", new Integer(0));
\r
972 negative.put("C", new Integer(0));
\r
973 negative.put("A", new Integer(0));
\r
974 negative.put("G", new Integer(0));
\r
975 negative.put("M", new Integer(0));
\r
976 negative.put("F", new Integer(0));
\r
977 negative.put("Y", new Integer(0));
\r
978 negative.put("W", new Integer(0));
\r
979 negative.put("H", new Integer(0));
\r
980 negative.put("K", new Integer(0));
\r
981 negative.put("R", new Integer(0));
\r
982 negative.put("E", new Integer(1));
\r
983 negative.put("Q", new Integer(0));
\r
984 negative.put("D", new Integer(1));
\r
985 negative.put("N", new Integer(0));
\r
986 negative.put("S", new Integer(0));
\r
987 negative.put("T", new Integer(0));
\r
988 negative.put("P", new Integer(0));
\r
989 negative.put("-", new Integer(1));
\r
990 negative.put("*", new Integer(1));
\r
995 charged.put("I", new Integer(0));
\r
996 charged.put("L", new Integer(0));
\r
997 charged.put("V", new Integer(0));
\r
998 charged.put("C", new Integer(0));
\r
999 charged.put("A", new Integer(0));
\r
1000 charged.put("G", new Integer(0));
\r
1001 charged.put("M", new Integer(0));
\r
1002 charged.put("F", new Integer(0));
\r
1003 charged.put("Y", new Integer(0));
\r
1004 charged.put("W", new Integer(0));
\r
1005 charged.put("H", new Integer(1));
\r
1006 charged.put("K", new Integer(1));
\r
1007 charged.put("R", new Integer(1));
\r
1008 charged.put("E", new Integer(1));
\r
1009 charged.put("Q", new Integer(0));
\r
1010 charged.put("D", new Integer(1));
\r
1011 charged.put("N", new Integer(1));
\r
1012 charged.put("S", new Integer(0));
\r
1013 charged.put("T", new Integer(0));
\r
1014 charged.put("P", new Integer(0));
\r
1015 charged.put("-", new Integer(1));
\r
1016 charged.put("*", new Integer(1));
\r
1021 aromatic.put("I", new Integer(0));
\r
1022 aromatic.put("L", new Integer(0));
\r
1023 aromatic.put("V", new Integer(0));
\r
1024 aromatic.put("C", new Integer(0));
\r
1025 aromatic.put("A", new Integer(0));
\r
1026 aromatic.put("G", new Integer(0));
\r
1027 aromatic.put("M", new Integer(0));
\r
1028 aromatic.put("F", new Integer(1));
\r
1029 aromatic.put("Y", new Integer(1));
\r
1030 aromatic.put("W", new Integer(1));
\r
1031 aromatic.put("H", new Integer(1));
\r
1032 aromatic.put("K", new Integer(0));
\r
1033 aromatic.put("R", new Integer(0));
\r
1034 aromatic.put("E", new Integer(0));
\r
1035 aromatic.put("Q", new Integer(0));
\r
1036 aromatic.put("D", new Integer(0));
\r
1037 aromatic.put("N", new Integer(0));
\r
1038 aromatic.put("S", new Integer(0));
\r
1039 aromatic.put("T", new Integer(0));
\r
1040 aromatic.put("P", new Integer(0));
\r
1041 aromatic.put("-", new Integer(1));
\r
1042 aromatic.put("*", new Integer(1));
\r
1047 aliphatic.put("I", new Integer(1));
\r
1048 aliphatic.put("L", new Integer(1));
\r
1049 aliphatic.put("V", new Integer(1));
\r
1050 aliphatic.put("C", new Integer(0));
\r
1051 aliphatic.put("A", new Integer(0));
\r
1052 aliphatic.put("G", new Integer(0));
\r
1053 aliphatic.put("M", new Integer(0));
\r
1054 aliphatic.put("F", new Integer(0));
\r
1055 aliphatic.put("Y", new Integer(0));
\r
1056 aliphatic.put("W", new Integer(0));
\r
1057 aliphatic.put("H", new Integer(0));
\r
1058 aliphatic.put("K", new Integer(0));
\r
1059 aliphatic.put("R", new Integer(0));
\r
1060 aliphatic.put("E", new Integer(0));
\r
1061 aliphatic.put("Q", new Integer(0));
\r
1062 aliphatic.put("D", new Integer(0));
\r
1063 aliphatic.put("N", new Integer(0));
\r
1064 aliphatic.put("S", new Integer(0));
\r
1065 aliphatic.put("T", new Integer(0));
\r
1066 aliphatic.put("P", new Integer(0));
\r
1067 aliphatic.put("-", new Integer(1));
\r
1068 aliphatic.put("*", new Integer(1));
\r
1073 tiny.put("I", new Integer(0));
\r
1074 tiny.put("L", new Integer(0));
\r
1075 tiny.put("V", new Integer(0));
\r
1076 tiny.put("C", new Integer(0));
\r
1077 tiny.put("A", new Integer(1));
\r
1078 tiny.put("G", new Integer(1));
\r
1079 tiny.put("M", new Integer(0));
\r
1080 tiny.put("F", new Integer(0));
\r
1081 tiny.put("Y", new Integer(0));
\r
1082 tiny.put("W", new Integer(0));
\r
1083 tiny.put("H", new Integer(0));
\r
1084 tiny.put("K", new Integer(0));
\r
1085 tiny.put("R", new Integer(0));
\r
1086 tiny.put("E", new Integer(0));
\r
1087 tiny.put("Q", new Integer(0));
\r
1088 tiny.put("D", new Integer(0));
\r
1089 tiny.put("N", new Integer(0));
\r
1090 tiny.put("S", new Integer(1));
\r
1091 tiny.put("T", new Integer(0));
\r
1092 tiny.put("P", new Integer(0));
\r
1093 tiny.put("-", new Integer(1));
\r
1094 tiny.put("*", new Integer(1));
\r
1099 proline.put("I", new Integer(0));
\r
1100 proline.put("L", new Integer(0));
\r
1101 proline.put("V", new Integer(0));
\r
1102 proline.put("C", new Integer(0));
\r
1103 proline.put("A", new Integer(0));
\r
1104 proline.put("G", new Integer(0));
\r
1105 proline.put("M", new Integer(0));
\r
1106 proline.put("F", new Integer(0));
\r
1107 proline.put("Y", new Integer(0));
\r
1108 proline.put("W", new Integer(0));
\r
1109 proline.put("H", new Integer(0));
\r
1110 proline.put("K", new Integer(0));
\r
1111 proline.put("R", new Integer(0));
\r
1112 proline.put("E", new Integer(0));
\r
1113 proline.put("Q", new Integer(0));
\r
1114 proline.put("D", new Integer(0));
\r
1115 proline.put("N", new Integer(0));
\r
1116 proline.put("S", new Integer(0));
\r
1117 proline.put("T", new Integer(0));
\r
1118 proline.put("P", new Integer(1));
\r
1119 proline.put("-", new Integer(1));
\r
1120 proline.put("*", new Integer(1));
\r
1125 propHash.put("hydrophobic", hydrophobic);
\r
1126 propHash.put("small", small);
\r
1127 propHash.put("positive", positive);
\r
1128 propHash.put("negative", negative);
\r
1129 propHash.put("charged", charged);
\r
1130 propHash.put("aromatic", aromatic);
\r
1131 propHash.put("aliphatic", aliphatic);
\r
1132 propHash.put("tiny", tiny);
\r
1133 propHash.put("proline", proline);
\r
1134 propHash.put("polar", polar);
\r
1137 public static Hashtable chainColours = new Hashtable();
\r
1141 chainColours.put("A", Color.red);
\r
1142 chainColours.put("B", Color.orange);
\r
1143 chainColours.put("C", Color.yellow);
\r
1144 chainColours.put("D", Color.green);
\r
1145 chainColours.put("E", Color.cyan);
\r
1146 chainColours.put("F", Color.blue);
\r
1147 chainColours.put("G", Color.magenta);
\r
1148 chainColours.put("H", Color.pink);
\r
1151 private ResidueProperties()
\r
1155 public static double getHydmax()
\r
1160 public static double getHydmin()
\r
1165 public static double[] getHyd()
\r
1170 public static Hashtable getAAHash()
\r
1175 public static Hashtable getAA3Hash()
\r
1180 public static int[][] getDNA()
\r
1182 return ResidueProperties.DNA;
\r
1185 public static int[][] getBLOSUM62()
\r
1187 return ResidueProperties.BLOSUM62;
\r
1190 public static int getPAM250(String A1, String A2)
\r
1192 Integer pog1 = (Integer) aaHash.get(A1);
\r
1193 Integer pog2 = (Integer) aaHash.get(A2);
\r
1194 int pog = ResidueProperties.PAM250[pog1.intValue()][pog2.intValue()];
\r
1199 public static int getBLOSUM62(String A1, String A2)
\r
1205 Integer pog1 = (Integer) aaHash.get(A1);
\r
1206 Integer pog2 = (Integer) aaHash.get(A2);
\r
1207 pog = ResidueProperties.BLOSUM62[pog1.intValue()][pog2.intValue()];
\r
1209 catch (Exception e)
\r
1211 //System.out.println("Unknown residue in " + A1 + " " + A2);
\r
1217 public static Vector getCodons(String res)
\r
1219 if (codonHash.containsKey(res))
\r
1221 return (Vector) codonHash.get(res);
\r
1227 public static String codonTranslate(String codon)
\r
1229 Enumeration e = codonHash.keys();
\r
1231 while (e.hasMoreElements())
\r
1233 String key = (String) e.nextElement();
\r
1234 Vector tmp = (Vector) codonHash.get(key);
\r
1236 if (tmp.contains(codon.toUpperCase()))
\r
1245 public static Hashtable getChainColours()
\r
1247 return chainColours;
\r