2 * Jalview - A Sequence Alignment Editor and Viewer
\r
3 * Copyright (C) 2006 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 // IUB Nomenclature for ambiguous peptides
\r
160 aa3Hash.put("ASX", new Integer(20)); // "B";
\r
161 aa3Hash.put("GLX", new Integer(21)); // X
\r
162 aa3Hash.put("XAA", new Integer(22));// X unknown
\r
163 aa3Hash.put("-", new Integer(23));
\r
164 aa3Hash.put("*", new Integer(23));
\r
165 aa3Hash.put(".", new Integer(23));
\r
166 aa3Hash.put(" ", new Integer(23));
\r
167 aa3Hash.put("Gap", new Integer(23));
\r
172 aa2Triplet.put("A", "ALA");
\r
173 aa2Triplet.put("a", "ALA");
\r
174 aa2Triplet.put("R", "ARG");
\r
175 aa2Triplet.put("r", "ARG");
\r
176 aa2Triplet.put("N", "ASN");
\r
177 aa2Triplet.put("n", "ASN");
\r
178 aa2Triplet.put("D", "ASP");
\r
179 aa2Triplet.put("d", "ASP");
\r
180 aa2Triplet.put("C", "CYS");
\r
181 aa2Triplet.put("c", "CYS");
\r
182 aa2Triplet.put("Q", "GLN");
\r
183 aa2Triplet.put("q", "GLN");
\r
184 aa2Triplet.put("E", "GLU");
\r
185 aa2Triplet.put("e", "GLU");
\r
186 aa2Triplet.put("G", "GLY");
\r
187 aa2Triplet.put("g", "GLY");
\r
188 aa2Triplet.put("H", "HIS");
\r
189 aa2Triplet.put("h", "HIS");
\r
190 aa2Triplet.put("I", "ILE");
\r
191 aa2Triplet.put("i", "ILE");
\r
192 aa2Triplet.put("L", "LEU");
\r
193 aa2Triplet.put("l", "LEU");
\r
194 aa2Triplet.put("K", "LYS");
\r
195 aa2Triplet.put("k", "LYS");
\r
196 aa2Triplet.put("M", "MET");
\r
197 aa2Triplet.put("m", "MET");
\r
198 aa2Triplet.put("F", "PHE");
\r
199 aa2Triplet.put("f", "PHE");
\r
200 aa2Triplet.put("P", "PRO");
\r
201 aa2Triplet.put("p", "PRO");
\r
202 aa2Triplet.put("S", "SER");
\r
203 aa2Triplet.put("s", "SER");
\r
204 aa2Triplet.put("T", "THR");
\r
205 aa2Triplet.put("t", "THR");
\r
206 aa2Triplet.put("W", "TRP");
\r
207 aa2Triplet.put("w", "TRP");
\r
208 aa2Triplet.put("Y", "TYR");
\r
209 aa2Triplet.put("y", "TYR");
\r
210 aa2Triplet.put("V", "VAL");
\r
211 aa2Triplet.put("v", "VAL");
\r
214 public static final String[] aa =
\r
216 "A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F",
\r
217 "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "
\r
219 public static final Color midBlue = new Color(100, 100, 255);
\r
220 public static final Vector scaleColours = new Vector();
\r
224 scaleColours.addElement(new Color(114, 0, 147));
\r
225 scaleColours.addElement(new Color(156, 0, 98));
\r
226 scaleColours.addElement(new Color(190, 0, 0));
\r
227 scaleColours.addElement(Color.red);
\r
228 scaleColours.addElement(new Color(255, 125, 0));
\r
229 scaleColours.addElement(Color.orange);
\r
230 scaleColours.addElement(new Color(255, 194, 85));
\r
231 scaleColours.addElement(Color.yellow);
\r
232 scaleColours.addElement(new Color(255, 255, 181));
\r
233 scaleColours.addElement(Color.white);
\r
236 public static final Color[] taylor =
\r
238 new Color(204, 255, 0), // A Greenish-yellowy-yellow
\r
239 new Color(0, 0, 255), // R Blueish-bluey-blue
\r
240 new Color(204, 0, 255), // N Blueish-reddy-blue
\r
241 new Color(255, 0, 0), // D Reddish-reddy-red
\r
242 new Color(255, 255, 0), // C Yellowish-yellowy-yellow
\r
243 new Color(255, 0, 204), // Q Reddish-bluey-red
\r
244 new Color(255, 0, 102), // E Blueish-reddy-red
\r
245 new Color(255, 153, 0), // G Yellowy-reddy-yellow
\r
246 new Color(0, 102, 255), // H Greenish-bluey-blue
\r
247 new Color(102, 255, 0), // I Greenish-yellowy-green
\r
248 new Color(51, 255, 0), // L Yellowish-greeny-green
\r
249 new Color(102, 0, 255), // K Reddish-bluey-blue
\r
250 new Color(0, 255, 0), // M Greenish-greeny-green
\r
251 new Color(0, 255, 102), // F Blueish-greeny-green
\r
252 new Color(255, 204, 0), // P Reddish-yellowy-yellow
\r
253 new Color(255, 51, 0), // S Yellowish-reddy-red
\r
254 new Color(255, 102, 0), // T Reddish-yellowy-red
\r
255 new Color(0, 204, 255), // W Blueish-greeny-green
\r
256 new Color(0, 255, 204), // Y Greenish-bluey-green
\r
257 new Color(153, 255, 0), // V Yellowish-greeny-yellow
\r
265 public static final Color[] nucleotide =
\r
267 new Color(100, 247, 63), // A
\r
268 new Color(255, 179, 64), // C
\r
269 new Color(235, 65, 60), // G
\r
270 new Color(60, 136, 238), // T
\r
271 new Color(60, 136, 238) // U
\r
273 public static final Color[] color =
\r
282 Color.magenta, // G
\r
289 Color.magenta, // P
\r
304 // Dunno where I got these numbers from
\r
305 public static final double[] hyd2 =
\r
331 public static final double[] helix =
\r
333 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
334 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
336 public static final double helixmin = 0.57;
\r
337 public static final double helixmax = 1.51;
\r
338 public static final double[] strand =
\r
340 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
341 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
343 public static final double strandmin = 0.37;
\r
344 public static final double strandmax = 1.7;
\r
345 public static final double[] turn =
\r
347 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
348 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
350 public static final double turnmin = 0.47;
\r
351 public static final double turnmax = 1.56;
\r
352 public static final double[] buried =
\r
354 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
355 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00
\r
357 public static final double buriedmin = 0.05;
\r
358 public static final double buriedmax = 4.6;
\r
360 // This is hydropathy index
\r
361 // Kyte, J., and Doolittle, R.F., J. Mol. Biol.
\r
362 // 1157, 105-132, 1982
\r
363 public static final double[] hyd =
\r
365 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
366 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0
\r
368 public static final double hydmax = 4.5;
\r
369 public static final double hydmin = -3.9;
\r
371 //public static final double hydmax = 1.38;
\r
372 //public static final double hydmin = -2.53;
\r
373 static final int[][] BLOSUM62 =
\r
376 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3,
\r
377 -2, 0, -2, -1, 0, -4
\r
380 -1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2,
\r
384 -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3,
\r
388 -2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4,
\r
389 -3, -3, 4, 1, -1, -4
\r
392 0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2,
\r
393 -2, -1, -3, -3, -2, -4
\r
396 -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1,
\r
400 -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2,
\r
404 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2,
\r
405 -3, -3, -1, -2, -1, -4
\r
408 -2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2,
\r
412 -1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3,
\r
413 -1, 3, -3, -3, -1, -4
\r
416 -1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2,
\r
417 -1, 1, -4, -3, -1, -4
\r
420 -1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2,
\r
424 -1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1,
\r
425 -1, 1, -3, -1, -1, -4
\r
428 -2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3,
\r
432 -1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1,
\r
433 -4, -3, -2, -2, -1, -2, -4
\r
436 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2,
\r
440 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2,
\r
441 -2, 0, -1, -1, 0, -4
\r
444 -3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2,
\r
445 11, 2, -3, -4, -3, -2, -4
\r
448 -2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2,
\r
449 7, -1, -3, -2, -1, -4
\r
452 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3,
\r
453 -1, 4, -3, -2, -1, -4
\r
456 -2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3,
\r
460 -1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2,
\r
464 0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2,
\r
465 -1, -1, -1, -1, -1, -4
\r
468 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
\r
469 -4, -4, -4, -4, -4, -4, 1
\r
472 static final int[][] PAM250 =
\r
475 2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0,
\r
479 -2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4,
\r
483 0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2,
\r
487 0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2,
\r
491 -2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2,
\r
492 -8, 0, -2, -4, -5, -3, -8
\r
495 0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4,
\r
499 0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2,
\r
503 1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5,
\r
507 -1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0,
\r
511 -1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5,
\r
512 -1, 4, -2, -2, -1, -8
\r
515 -2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2,
\r
516 -1, 2, -3, -3, -1, -8
\r
519 -1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2,
\r
523 -1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2,
\r
527 -3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7,
\r
531 1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5,
\r
535 1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1,
\r
539 1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0,
\r
543 -6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17,
\r
544 0, -6, -5, -6, -4, -8
\r
547 -3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0,
\r
548 10, -2, -3, -4, -2, -8
\r
551 0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6,
\r
552 -2, 4, -2, -2, -1, -8
\r
555 0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2,
\r
559 0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2,
\r
563 0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4,
\r
564 -2, -1, -1, -1, -1, -8
\r
567 -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,
\r
568 -8, -8, -8, -8, -8, -8, 1
\r
571 public static final Hashtable ssHash = new Hashtable(); // stores the number value of the aa
\r
575 ssHash.put("H", Color.magenta);
\r
576 ssHash.put("E", Color.yellow);
\r
577 ssHash.put("-", Color.white);
\r
578 ssHash.put(".", Color.white);
\r
579 ssHash.put("S", Color.cyan);
\r
580 ssHash.put("T", Color.blue);
\r
581 ssHash.put("G", Color.pink);
\r
582 ssHash.put("I", Color.pink);
\r
583 ssHash.put("B", Color.yellow);
\r
586 static final int[][] DNA =
\r
589 5, -4, -4, -4, 1}, // C
\r
591 -4, 5, -4, -4, 1}, // T
\r
593 -4, -4, 5, -4, 1}, // A
\r
595 -4, -4, -4, 5, 1}, // G
\r
597 1, 1, 1, 1, 1}, // -
\r
599 public static final Color[] pidColours =
\r
601 midBlue, new Color(153, 153, 255),
\r
602 // Color.lightGray,
\r
603 new Color(204, 204, 255),
\r
605 public static final float[] pidThresholds =
\r
608 public static Hashtable codonHash = new Hashtable();
\r
609 public static Vector Lys = new Vector();
\r
610 public static Vector Asn = new Vector();
\r
611 public static Vector Gln = new Vector();
\r
612 public static Vector His = new Vector();
\r
613 public static Vector Glu = new Vector();
\r
614 public static Vector Asp = new Vector();
\r
615 public static Vector Tyr = new Vector();
\r
616 public static Vector Thr = new Vector();
\r
617 public static Vector Pro = new Vector();
\r
618 public static Vector Ala = new Vector();
\r
619 public static Vector Ser = new Vector();
\r
620 public static Vector Arg = new Vector();
\r
621 public static Vector Gly = new Vector();
\r
622 public static Vector Trp = new Vector();
\r
623 public static Vector Cys = new Vector();
\r
624 public static Vector Ile = new Vector();
\r
625 public static Vector Met = new Vector();
\r
626 public static Vector Leu = new Vector();
\r
627 public static Vector Val = new Vector();
\r
628 public static Vector Phe = new Vector();
\r
629 public static Vector STOP = new Vector();
\r
633 codonHash.put("K", Lys);
\r
634 codonHash.put("N", Asn);
\r
635 codonHash.put("Q", Gln);
\r
636 codonHash.put("H", His);
\r
637 codonHash.put("E", Glu);
\r
638 codonHash.put("D", Asp);
\r
639 codonHash.put("Y", Tyr);
\r
640 codonHash.put("T", Thr);
\r
641 codonHash.put("P", Pro);
\r
642 codonHash.put("A", Ala);
\r
643 codonHash.put("S", Ser);
\r
644 codonHash.put("R", Arg);
\r
645 codonHash.put("G", Gly);
\r
646 codonHash.put("W", Trp);
\r
647 codonHash.put("C", Cys);
\r
648 codonHash.put("I", Ile);
\r
649 codonHash.put("M", Met);
\r
650 codonHash.put("L", Leu);
\r
651 codonHash.put("V", Val);
\r
652 codonHash.put("F", Phe);
\r
653 codonHash.put("STOP", STOP);
\r
656 public static Hashtable codonHash2 = new Hashtable();
\r
660 codonHash2.put("AAA", "K");
\r
661 codonHash2.put("AAG", "K");
\r
662 codonHash2.put("AAC", "N");
\r
663 codonHash2.put("AAT", "N");
\r
665 codonHash2.put("CAA", "E");
\r
666 codonHash2.put("CAG", "E");
\r
667 codonHash2.put("CAC", "H");
\r
668 codonHash2.put("CAT", "H");
\r
670 codonHash2.put("GAA", "Q");
\r
671 codonHash2.put("GAG", "Q");
\r
672 codonHash2.put("GAC", "D");
\r
673 codonHash2.put("GAT", "D");
\r
675 codonHash2.put("TAC", "Y");
\r
676 codonHash2.put("TAT", "Y");
\r
678 codonHash2.put("ACA", "T");
\r
679 codonHash2.put("AAG", "T");
\r
680 codonHash2.put("ACC", "T");
\r
681 codonHash2.put("ACT", "T");
\r
683 codonHash2.put("CCA", "P");
\r
684 codonHash2.put("CCG", "P");
\r
685 codonHash2.put("CCC", "P");
\r
686 codonHash2.put("CCT", "P");
\r
688 codonHash2.put("GCA", "A");
\r
689 codonHash2.put("GCG", "A");
\r
690 codonHash2.put("GCC", "A");
\r
691 codonHash2.put("GCT", "A");
\r
693 codonHash2.put("TCA", "S");
\r
694 codonHash2.put("TCG", "S");
\r
695 codonHash2.put("TCC", "S");
\r
696 codonHash2.put("TCT", "S");
\r
697 codonHash2.put("AGC", "S");
\r
698 codonHash2.put("AGT", "S");
\r
700 codonHash2.put("AGA", "R");
\r
701 codonHash2.put("AGG", "R");
\r
702 codonHash2.put("CGA", "R");
\r
703 codonHash2.put("CGG", "R");
\r
704 codonHash2.put("CGC", "R");
\r
705 codonHash2.put("CGT", "R");
\r
707 codonHash2.put("GGA", "G");
\r
708 codonHash2.put("GGG", "G");
\r
709 codonHash2.put("GGC", "G");
\r
710 codonHash2.put("GGT", "G");
\r
712 codonHash2.put("TGA", "*");
\r
713 codonHash2.put("TAA", "*");
\r
714 codonHash2.put("TAG", "*");
\r
716 codonHash2.put("TGG", "W");
\r
718 codonHash2.put("TGC", "C");
\r
719 codonHash2.put("TGT", "C");
\r
721 codonHash2.put("ATA", "I");
\r
722 codonHash2.put("ATC", "I");
\r
723 codonHash2.put("ATT", "I");
\r
725 codonHash2.put("ATG", "M");
\r
727 codonHash2.put("CTA", "L");
\r
728 codonHash2.put("CTG", "L");
\r
729 codonHash2.put("CTC", "L");
\r
730 codonHash2.put("CTT", "L");
\r
731 codonHash2.put("TTA", "L");
\r
732 codonHash2.put("TTG", "L");
\r
734 codonHash2.put("GTA", "V");
\r
735 codonHash2.put("GTG", "V");
\r
736 codonHash2.put("GTC", "V");
\r
737 codonHash2.put("GTT", "V");
\r
739 codonHash2.put("TTC", "F");
\r
740 codonHash2.put("TTT", "F");
\r
745 Lys.addElement("AAA");
\r
746 Lys.addElement("AAG");
\r
747 Asn.addElement("AAC");
\r
748 Asn.addElement("AAT");
\r
750 Gln.addElement("CAA");
\r
751 Gln.addElement("CAG");
\r
752 His.addElement("CAC");
\r
753 His.addElement("CAT");
\r
755 Glu.addElement("GAA");
\r
756 Glu.addElement("GAG");
\r
757 Asp.addElement("GAC");
\r
758 Asp.addElement("GAT");
\r
760 Tyr.addElement("TAC");
\r
761 Tyr.addElement("TAT");
\r
763 Thr.addElement("ACA");
\r
764 Thr.addElement("ACG");
\r
765 Thr.addElement("ACC");
\r
766 Thr.addElement("ACT");
\r
768 Pro.addElement("CCA");
\r
769 Pro.addElement("CCG");
\r
770 Pro.addElement("CCC");
\r
771 Pro.addElement("CCT");
\r
773 Ala.addElement("GCA");
\r
774 Ala.addElement("GCG");
\r
775 Ala.addElement("GCC");
\r
776 Ala.addElement("GCT");
\r
778 Ser.addElement("TCA");
\r
779 Ser.addElement("TCG");
\r
780 Ser.addElement("TCC");
\r
781 Ser.addElement("TCT");
\r
782 Ser.addElement("AGC");
\r
783 Ser.addElement("AGT");
\r
785 Arg.addElement("AGA");
\r
786 Arg.addElement("AGG");
\r
787 Arg.addElement("CGA");
\r
788 Arg.addElement("CGG");
\r
789 Arg.addElement("CGC");
\r
790 Arg.addElement("CGT");
\r
792 Gly.addElement("GGA");
\r
793 Gly.addElement("GGG");
\r
794 Gly.addElement("GGC");
\r
795 Gly.addElement("GGT");
\r
797 STOP.addElement("TGA");
\r
798 STOP.addElement("TAA");
\r
799 STOP.addElement("TAG");
\r
801 Trp.addElement("TGG");
\r
803 Cys.addElement("TGC");
\r
804 Cys.addElement("TGT");
\r
806 Ile.addElement("ATA");
\r
807 Ile.addElement("ATC");
\r
808 Ile.addElement("ATT");
\r
810 Met.addElement("ATG");
\r
812 Leu.addElement("CTA");
\r
813 Leu.addElement("CTG");
\r
814 Leu.addElement("CTC");
\r
815 Leu.addElement("CTT");
\r
816 Leu.addElement("TTA");
\r
817 Leu.addElement("TTG");
\r
819 Val.addElement("GTA");
\r
820 Val.addElement("GTG");
\r
821 Val.addElement("GTC");
\r
822 Val.addElement("GTT");
\r
824 Phe.addElement("TTC");
\r
825 Phe.addElement("TTT");
\r
829 //Stores residue codes/names and colours and other things
\r
830 public static Hashtable propHash = new Hashtable();
\r
831 public static Hashtable hydrophobic = new Hashtable();
\r
832 public static Hashtable polar = new Hashtable();
\r
833 public static Hashtable small = new Hashtable();
\r
834 public static Hashtable positive = new Hashtable();
\r
835 public static Hashtable negative = new Hashtable();
\r
836 public static Hashtable charged = new Hashtable();
\r
837 public static Hashtable aromatic = new Hashtable();
\r
838 public static Hashtable aliphatic = new Hashtable();
\r
839 public static Hashtable tiny = new Hashtable();
\r
840 public static Hashtable proline = new Hashtable();
\r
844 hydrophobic.put("I", new Integer(1));
\r
845 hydrophobic.put("L", new Integer(1));
\r
846 hydrophobic.put("V", new Integer(1));
\r
847 hydrophobic.put("C", new Integer(1));
\r
848 hydrophobic.put("A", new Integer(1));
\r
849 hydrophobic.put("G", new Integer(1));
\r
850 hydrophobic.put("M", new Integer(1));
\r
851 hydrophobic.put("F", new Integer(1));
\r
852 hydrophobic.put("Y", new Integer(1));
\r
853 hydrophobic.put("W", new Integer(1));
\r
854 hydrophobic.put("H", new Integer(1));
\r
855 hydrophobic.put("K", new Integer(1));
\r
856 hydrophobic.put("X", new Integer(1));
\r
857 hydrophobic.put("-", new Integer(1));
\r
858 hydrophobic.put("*", new Integer(1));
\r
859 hydrophobic.put("R", new Integer(0));
\r
860 hydrophobic.put("E", new Integer(0));
\r
861 hydrophobic.put("Q", new Integer(0));
\r
862 hydrophobic.put("D", new Integer(0));
\r
863 hydrophobic.put("N", new Integer(0));
\r
864 hydrophobic.put("S", new Integer(0));
\r
865 hydrophobic.put("T", new Integer(0));
\r
866 hydrophobic.put("P", new Integer(0));
\r
871 polar.put("Y", new Integer(1));
\r
872 polar.put("W", new Integer(1));
\r
873 polar.put("H", new Integer(1));
\r
874 polar.put("K", new Integer(1));
\r
875 polar.put("R", new Integer(1));
\r
876 polar.put("E", new Integer(1));
\r
877 polar.put("Q", new Integer(1));
\r
878 polar.put("D", new Integer(1));
\r
879 polar.put("N", new Integer(1));
\r
880 polar.put("S", new Integer(1));
\r
881 polar.put("T", new Integer(1));
\r
882 polar.put("X", new Integer(1));
\r
883 polar.put("-", new Integer(1));
\r
884 polar.put("*", new Integer(1));
\r
885 polar.put("I", new Integer(0));
\r
886 polar.put("L", new Integer(0));
\r
887 polar.put("V", new Integer(0));
\r
888 polar.put("C", new Integer(0));
\r
889 polar.put("A", new Integer(0));
\r
890 polar.put("G", new Integer(0));
\r
891 polar.put("M", new Integer(0));
\r
892 polar.put("F", new Integer(0));
\r
893 polar.put("P", new Integer(0));
\r
898 small.put("I", new Integer(0));
\r
899 small.put("L", new Integer(0));
\r
900 small.put("V", new Integer(1));
\r
901 small.put("C", new Integer(1));
\r
902 small.put("A", new Integer(1));
\r
903 small.put("G", new Integer(1));
\r
904 small.put("M", new Integer(0));
\r
905 small.put("F", new Integer(0));
\r
906 small.put("Y", new Integer(0));
\r
907 small.put("W", new Integer(0));
\r
908 small.put("H", new Integer(0));
\r
909 small.put("K", new Integer(0));
\r
910 small.put("R", new Integer(0));
\r
911 small.put("E", new Integer(0));
\r
912 small.put("Q", new Integer(0));
\r
913 small.put("D", new Integer(1));
\r
914 small.put("N", new Integer(1));
\r
915 small.put("S", new Integer(1));
\r
916 small.put("T", new Integer(1));
\r
917 small.put("P", new Integer(1));
\r
918 small.put("-", new Integer(1));
\r
919 small.put("*", new Integer(1));
\r
924 positive.put("I", new Integer(0));
\r
925 positive.put("L", new Integer(0));
\r
926 positive.put("V", new Integer(0));
\r
927 positive.put("C", new Integer(0));
\r
928 positive.put("A", new Integer(0));
\r
929 positive.put("G", new Integer(0));
\r
930 positive.put("M", new Integer(0));
\r
931 positive.put("F", new Integer(0));
\r
932 positive.put("Y", new Integer(0));
\r
933 positive.put("W", new Integer(0));
\r
934 positive.put("H", new Integer(1));
\r
935 positive.put("K", new Integer(1));
\r
936 positive.put("R", new Integer(1));
\r
937 positive.put("E", new Integer(0));
\r
938 positive.put("Q", new Integer(0));
\r
939 positive.put("D", new Integer(0));
\r
940 positive.put("N", new Integer(0));
\r
941 positive.put("S", new Integer(0));
\r
942 positive.put("T", new Integer(0));
\r
943 positive.put("P", new Integer(0));
\r
944 positive.put("-", new Integer(1));
\r
945 positive.put("*", new Integer(1));
\r
950 negative.put("I", new Integer(0));
\r
951 negative.put("L", new Integer(0));
\r
952 negative.put("V", new Integer(0));
\r
953 negative.put("C", new Integer(0));
\r
954 negative.put("A", new Integer(0));
\r
955 negative.put("G", new Integer(0));
\r
956 negative.put("M", new Integer(0));
\r
957 negative.put("F", new Integer(0));
\r
958 negative.put("Y", new Integer(0));
\r
959 negative.put("W", new Integer(0));
\r
960 negative.put("H", new Integer(0));
\r
961 negative.put("K", new Integer(0));
\r
962 negative.put("R", new Integer(0));
\r
963 negative.put("E", new Integer(1));
\r
964 negative.put("Q", new Integer(0));
\r
965 negative.put("D", new Integer(1));
\r
966 negative.put("N", new Integer(0));
\r
967 negative.put("S", new Integer(0));
\r
968 negative.put("T", new Integer(0));
\r
969 negative.put("P", new Integer(0));
\r
970 negative.put("-", new Integer(1));
\r
971 negative.put("*", new Integer(1));
\r
976 charged.put("I", new Integer(0));
\r
977 charged.put("L", new Integer(0));
\r
978 charged.put("V", new Integer(0));
\r
979 charged.put("C", new Integer(0));
\r
980 charged.put("A", new Integer(0));
\r
981 charged.put("G", new Integer(0));
\r
982 charged.put("M", new Integer(0));
\r
983 charged.put("F", new Integer(0));
\r
984 charged.put("Y", new Integer(0));
\r
985 charged.put("W", new Integer(0));
\r
986 charged.put("H", new Integer(1));
\r
987 charged.put("K", new Integer(1));
\r
988 charged.put("R", new Integer(1));
\r
989 charged.put("E", new Integer(1));
\r
990 charged.put("Q", new Integer(0));
\r
991 charged.put("D", new Integer(1));
\r
992 charged.put("N", new Integer(1));
\r
993 charged.put("S", new Integer(0));
\r
994 charged.put("T", new Integer(0));
\r
995 charged.put("P", new Integer(0));
\r
996 charged.put("-", new Integer(1));
\r
997 charged.put("*", new Integer(1));
\r
1002 aromatic.put("I", new Integer(0));
\r
1003 aromatic.put("L", new Integer(0));
\r
1004 aromatic.put("V", new Integer(0));
\r
1005 aromatic.put("C", new Integer(0));
\r
1006 aromatic.put("A", new Integer(0));
\r
1007 aromatic.put("G", new Integer(0));
\r
1008 aromatic.put("M", new Integer(0));
\r
1009 aromatic.put("F", new Integer(1));
\r
1010 aromatic.put("Y", new Integer(1));
\r
1011 aromatic.put("W", new Integer(1));
\r
1012 aromatic.put("H", new Integer(1));
\r
1013 aromatic.put("K", new Integer(0));
\r
1014 aromatic.put("R", new Integer(0));
\r
1015 aromatic.put("E", new Integer(0));
\r
1016 aromatic.put("Q", new Integer(0));
\r
1017 aromatic.put("D", new Integer(0));
\r
1018 aromatic.put("N", new Integer(0));
\r
1019 aromatic.put("S", new Integer(0));
\r
1020 aromatic.put("T", new Integer(0));
\r
1021 aromatic.put("P", new Integer(0));
\r
1022 aromatic.put("-", new Integer(1));
\r
1023 aromatic.put("*", new Integer(1));
\r
1028 aliphatic.put("I", new Integer(1));
\r
1029 aliphatic.put("L", new Integer(1));
\r
1030 aliphatic.put("V", new Integer(1));
\r
1031 aliphatic.put("C", new Integer(0));
\r
1032 aliphatic.put("A", new Integer(0));
\r
1033 aliphatic.put("G", new Integer(0));
\r
1034 aliphatic.put("M", new Integer(0));
\r
1035 aliphatic.put("F", new Integer(0));
\r
1036 aliphatic.put("Y", new Integer(0));
\r
1037 aliphatic.put("W", new Integer(0));
\r
1038 aliphatic.put("H", new Integer(0));
\r
1039 aliphatic.put("K", new Integer(0));
\r
1040 aliphatic.put("R", new Integer(0));
\r
1041 aliphatic.put("E", new Integer(0));
\r
1042 aliphatic.put("Q", new Integer(0));
\r
1043 aliphatic.put("D", new Integer(0));
\r
1044 aliphatic.put("N", new Integer(0));
\r
1045 aliphatic.put("S", new Integer(0));
\r
1046 aliphatic.put("T", new Integer(0));
\r
1047 aliphatic.put("P", new Integer(0));
\r
1048 aliphatic.put("-", new Integer(1));
\r
1049 aliphatic.put("*", new Integer(1));
\r
1054 tiny.put("I", new Integer(0));
\r
1055 tiny.put("L", new Integer(0));
\r
1056 tiny.put("V", new Integer(0));
\r
1057 tiny.put("C", new Integer(0));
\r
1058 tiny.put("A", new Integer(1));
\r
1059 tiny.put("G", new Integer(1));
\r
1060 tiny.put("M", new Integer(0));
\r
1061 tiny.put("F", new Integer(0));
\r
1062 tiny.put("Y", new Integer(0));
\r
1063 tiny.put("W", new Integer(0));
\r
1064 tiny.put("H", new Integer(0));
\r
1065 tiny.put("K", new Integer(0));
\r
1066 tiny.put("R", new Integer(0));
\r
1067 tiny.put("E", new Integer(0));
\r
1068 tiny.put("Q", new Integer(0));
\r
1069 tiny.put("D", new Integer(0));
\r
1070 tiny.put("N", new Integer(0));
\r
1071 tiny.put("S", new Integer(1));
\r
1072 tiny.put("T", new Integer(0));
\r
1073 tiny.put("P", new Integer(0));
\r
1074 tiny.put("-", new Integer(1));
\r
1075 tiny.put("*", new Integer(1));
\r
1080 proline.put("I", new Integer(0));
\r
1081 proline.put("L", new Integer(0));
\r
1082 proline.put("V", new Integer(0));
\r
1083 proline.put("C", new Integer(0));
\r
1084 proline.put("A", new Integer(0));
\r
1085 proline.put("G", new Integer(0));
\r
1086 proline.put("M", new Integer(0));
\r
1087 proline.put("F", new Integer(0));
\r
1088 proline.put("Y", new Integer(0));
\r
1089 proline.put("W", new Integer(0));
\r
1090 proline.put("H", new Integer(0));
\r
1091 proline.put("K", new Integer(0));
\r
1092 proline.put("R", new Integer(0));
\r
1093 proline.put("E", new Integer(0));
\r
1094 proline.put("Q", new Integer(0));
\r
1095 proline.put("D", new Integer(0));
\r
1096 proline.put("N", new Integer(0));
\r
1097 proline.put("S", new Integer(0));
\r
1098 proline.put("T", new Integer(0));
\r
1099 proline.put("P", new Integer(1));
\r
1100 proline.put("-", new Integer(1));
\r
1101 proline.put("*", new Integer(1));
\r
1106 propHash.put("hydrophobic", hydrophobic);
\r
1107 propHash.put("small", small);
\r
1108 propHash.put("positive", positive);
\r
1109 propHash.put("negative", negative);
\r
1110 propHash.put("charged", charged);
\r
1111 propHash.put("aromatic", aromatic);
\r
1112 propHash.put("aliphatic", aliphatic);
\r
1113 propHash.put("tiny", tiny);
\r
1114 propHash.put("proline", proline);
\r
1115 propHash.put("polar", polar);
\r
1118 private ResidueProperties()
\r
1122 public static double getHydmax()
\r
1127 public static double getHydmin()
\r
1132 public static double[] getHyd()
\r
1137 public static Hashtable getAAHash()
\r
1142 public static Hashtable getAA3Hash()
\r
1147 public static int[][] getDNA()
\r
1149 return ResidueProperties.DNA;
\r
1152 public static int[][] getBLOSUM62()
\r
1154 return ResidueProperties.BLOSUM62;
\r
1157 public static int getPAM250(String A1, String A2)
\r
1159 Integer pog1 = (Integer) aaHash.get(A1);
\r
1160 Integer pog2 = (Integer) aaHash.get(A2);
\r
1161 int pog = ResidueProperties.PAM250[pog1.intValue()][pog2.intValue()];
\r
1166 public static int getBLOSUM62(String A1, String A2)
\r
1172 Integer pog1 = (Integer) aaHash.get(A1);
\r
1173 Integer pog2 = (Integer) aaHash.get(A2);
\r
1174 pog = ResidueProperties.BLOSUM62[pog1.intValue()][pog2.intValue()];
\r
1176 catch (Exception e)
\r
1178 //System.out.println("Unknown residue in " + A1 + " " + A2);
\r
1184 public static Vector getCodons(String res)
\r
1186 if (codonHash.containsKey(res))
\r
1188 return (Vector) codonHash.get(res);
\r
1194 public static String codonTranslate(String codon)
\r
1196 Enumeration e = codonHash.keys();
\r
1198 while (e.hasMoreElements())
\r
1200 String key = (String) e.nextElement();
\r
1201 Vector tmp = (Vector) codonHash.get(key);
\r
1203 if (tmp.contains(codon.toUpperCase()))
\r