2 /* Copyright (C) 1998 Michele Clamp
\r
4 * This program is free software; you can redistribute it and/or
\r
5 * modify it under the terms of the GNU General Public License
\r
6 * as published by the Free Software Foundation; either version 2
\r
7 * of the License, or (at your option) any later version.
\r
9 * This program is distributed in the hope that it will be useful,
\r
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
12 * GNU General Public License for more details.
\r
14 * You should have received a copy of the GNU General Public License
\r
15 * along with this program; if not, write to the Free Software
\r
16 * Foundation, Inc, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
\r
18 package jalview.schemes;
\r
20 import java.awt.Color;
\r
22 import jalview.jbgui.*;
\r
23 import jalview.datamodel.*;
\r
25 public class ResidueProperties {
\r
27 //Stores residue codes/names and colours and other things
\r
28 public static Hashtable aaHash = new Hashtable(); // stores the number value of the aa
\r
29 public static Hashtable aa3Hash = new Hashtable();
\r
30 public static Hashtable aa2Triplet = new Hashtable();
\r
33 aaHash.put("A", new Integer(0));
\r
34 aaHash.put("R", new Integer(1));
\r
35 aaHash.put("N", new Integer(2));
\r
36 aaHash.put("D", new Integer(3));
\r
37 aaHash.put("C", new Integer(4));
\r
38 aaHash.put("Q", new Integer(5));
\r
39 aaHash.put("E", new Integer(6));
\r
40 aaHash.put("G", new Integer(7));
\r
41 aaHash.put("H", new Integer(8));
\r
42 aaHash.put("I", new Integer(9));
\r
43 aaHash.put("L", new Integer(10));
\r
44 aaHash.put("K", new Integer(11));
\r
45 aaHash.put("M", new Integer(12));
\r
46 aaHash.put("F", new Integer(13));
\r
47 aaHash.put("P", new Integer(14));
\r
48 aaHash.put("S", new Integer(15));
\r
49 aaHash.put("T", new Integer(16));
\r
50 aaHash.put("W", new Integer(17));
\r
51 aaHash.put("Y", new Integer(18));
\r
52 aaHash.put("V", new Integer(19));
\r
53 aaHash.put("B", new Integer(20));
\r
54 aaHash.put("Z", new Integer(21));
\r
55 aaHash.put("X", new Integer(22));
\r
56 aaHash.put("-", new Integer(23));
\r
57 aaHash.put("*", new Integer(23));
\r
58 aaHash.put(".", new Integer(23));
\r
59 aaHash.put(" ", new Integer(23));
\r
62 // These numbers should correspond to the indices in the Color hashes
\r
63 public static Hashtable aaSpecialsHash = new Hashtable();
\r
65 aaSpecialsHash.put("-", new Integer(23));
\r
66 aaSpecialsHash.put("*", new Integer(24));
\r
67 aaSpecialsHash.put(".", new Integer(25));
\r
68 aaSpecialsHash.put(" ", new Integer(26));
\r
72 aa3Hash.put("ALA", new Integer(0));
\r
73 aa3Hash.put("ARG", new Integer(1));
\r
74 aa3Hash.put("ASN", new Integer(2));
\r
75 aa3Hash.put("ASP", new Integer(3)); //D
\r
76 aa3Hash.put("CYS", new Integer(4));
\r
77 aa3Hash.put("GLN", new Integer(5)); //Q
\r
78 aa3Hash.put("GLU", new Integer(6)); // E
\r
79 aa3Hash.put("GLY", new Integer(7));
\r
80 aa3Hash.put("HIS", new Integer(8));
\r
81 aa3Hash.put("ILE", new Integer(9));
\r
82 aa3Hash.put("LEU", new Integer(10));
\r
83 aa3Hash.put("LYS", new Integer(11));
\r
84 aa3Hash.put("MET", new Integer(12));
\r
85 aa3Hash.put("PHE", new Integer(13));
\r
86 aa3Hash.put("PRO", new Integer(14));
\r
87 aa3Hash.put("SER", new Integer(15));
\r
88 aa3Hash.put("THR", new Integer(16));
\r
89 aa3Hash.put("TRP", new Integer(17));
\r
90 aa3Hash.put("TYR", new Integer(18));
\r
91 aa3Hash.put("VAL", new Integer(19));
\r
92 aa3Hash.put("B", new Integer(20));
\r
93 aa3Hash.put("Z", new Integer(21));
\r
94 aa3Hash.put("X", new Integer(22));
\r
95 aa3Hash.put("-", new Integer(23));
\r
96 aa3Hash.put("*", new Integer(23));
\r
97 aa3Hash.put(".", new Integer(23));
\r
98 aa3Hash.put(" ", new Integer(23));
\r
102 aa2Triplet.put("A", "ALA");
\r
103 aa2Triplet.put("R", "ARG");
\r
104 aa2Triplet.put("N", "ASN");
\r
105 aa2Triplet.put("D", "ASP");
\r
106 aa2Triplet.put("C", "CYS");
\r
107 aa2Triplet.put("Q", "GLN");
\r
108 aa2Triplet.put("E", "GLU");
\r
109 aa2Triplet.put("G", "GLY");
\r
110 aa2Triplet.put("H", "HIS");
\r
111 aa2Triplet.put("I", "ILE");
\r
112 aa2Triplet.put("L", "LEU");
\r
113 aa2Triplet.put("K", "LYS");
\r
114 aa2Triplet.put("M", "MET");
\r
115 aa2Triplet.put("F", "PHE");
\r
116 aa2Triplet.put("P", "PRO");
\r
117 aa2Triplet.put("S", "SER");
\r
118 aa2Triplet.put("T", "THR");
\r
119 aa2Triplet.put("W", "TRP");
\r
120 aa2Triplet.put("Y", "TYR");
\r
121 aa2Triplet.put("V", "VAL");
\r
124 public static String aa[] = {
\r
125 "A","R","N","D","C","Q","E","G","H","I","L","K","M","F","P","S","T","W","Y","V","B","Z","X","_","*","."," "
\r
127 public static Color midBlue = new Color(100,100,255);
\r
128 public static Vector scaleColours = new Vector();
\r
130 scaleColours.addElement(new Color(114,0,147));
\r
131 scaleColours.addElement(new Color(156,0,98));
\r
132 scaleColours.addElement(new Color(190,0,0));
\r
133 scaleColours.addElement(Color.red);
\r
134 scaleColours.addElement(new Color(255,125,0));
\r
135 scaleColours.addElement(Color.orange);
\r
136 scaleColours.addElement(new Color(255,194,85));
\r
137 scaleColours.addElement(Color.yellow);
\r
138 scaleColours.addElement(new Color(255,255,181));
\r
139 scaleColours.addElement(Color.white);
\r
142 public static Color[] taylor = {
\r
143 new Color(204,255,0), // A Greenish-yellowy-yellow
\r
144 new Color(0,0,255), // R Blueish-bluey-blue
\r
145 new Color(204,0,255), // N Blueish-reddy-blue
\r
146 new Color(255,0,0), // D Reddish-reddy-red
\r
147 new Color(255,255,0), // C Yellowish-yellowy-yellow
\r
148 new Color(255,0,204), // Q Reddish-bluey-red
\r
149 new Color(255,0,102), // E Blueish-reddy-red
\r
150 new Color(255,153,0), // G Yellowy-reddy-yellow
\r
151 new Color(0,102,255), // H Greenish-bluey-blue
\r
152 new Color(102,255,0), // I Greenish-yellowy-green
\r
153 new Color(51,255,0), // L Yellowish-greeny-green
\r
154 new Color(102,0,255), // K Reddish-bluey-blue
\r
155 new Color(0,255,0), // M Greenish-greeny-green
\r
156 new Color(0,255,102), // F Blueish-greeny-green
\r
157 new Color(255,204,0), // P Reddish-yellowy-yellow
\r
158 new Color(255,51,0), // S Yellowish-reddy-red
\r
159 new Color(255,102,0), // T Reddish-yellowy-red
\r
160 new Color(0,204,255), // W Blueish-greeny-green
\r
161 new Color(0,255,204), // Y Greenish-bluey-green
\r
162 new Color(153,255,0), // V Yellowish-greeny-yellow
\r
171 public static Color[] color = {
\r
179 Color.magenta, // G
\r
186 Color.magenta, // P
\r
201 // Dunno where I got these numbers from
\r
202 public static double[] hyd2 = {
\r
227 public static double[] helix = {
\r
253 public static double helixmin = 0.57;
\r
254 public static double helixmax = 1.51;
\r
256 public static double[] strand = {
\r
257 0.83,0.93,0.89,0.54,1.19,1.10,0.37,
\r
258 0.75,0.87,1.60,1.30,0.74,1.05,1.38,0.55,
\r
259 0.75,1.19,1.37,1.47,1.70,0.72,0.74,1.0,0.0};
\r
261 public static double strandmin = 0.37;
\r
262 public static double strandmax = 1.7;
\r
264 public static double[] turn = {
\r
265 0.66,0.95,1.56,1.46,1.19,0.98,0.74,
\r
266 1.56,0.95,0.47,0.59,1.01,0.60,0.60,1.52,
\r
267 1.43,0.96,0.96,1.14,0.50,1.51,0.86,1.00,0,0};
\r
269 public static double turnmin = 0.47;
\r
270 public static double turnmax = 1.56;
\r
272 public static double[] buried = {
\r
288 0.8,0.7,1.6,0.5,2.9,0.4,0.3,
\r
293 public static double buriedmin = 0.05;
\r
294 public static double buriedmax = 4.6;
\r
296 // This is hydropathy index
\r
297 // Kyte, J., and Doolittle, R.F., J. Mol. Biol.
\r
298 // 1157, 105-132, 1982
\r
300 public static double hyd[] = {
\r
327 public static final double hydmax = 4.5;
\r
328 public static final double hydmin = -3.9;
\r
330 public static double getHydmax() {
\r
333 public static double getHydmin() {
\r
336 public static double[] getHyd() {
\r
339 //public static final double hydmax = 1.38;
\r
340 //public static final double hydmin = -2.53;
\r
342 static final int[][] BLOSUM62 = {
\r
343 //A R N D C Q E G H I L K M F P S T W Y V B Z X -
\r
344 { 4 ,-1, -2 ,-2 , 0 ,-1 ,-1 , 0 ,-2 ,-1 ,-1 ,-1 ,-1 ,-2 ,-1 , 1 , 0 ,-3 ,-2 , 0 ,-2, -1 , 0 ,-4},
\r
345 {-1 , 5 , 0 ,-2 ,-3 , 1 , 0 ,-2 , 0 ,-3 ,-2 , 2 ,-1 ,-3 ,-2 ,-1 ,-1 ,-3 ,-2 ,-3 ,-1 , 0 ,-1 ,-4 },
\r
346 {-2 , 0 , 6 , 1 ,-3 , 0 , 0 , 0 , 1 ,-3 ,-3 , 0 ,-2 ,-3 ,-2 , 1 , 0 ,-4 ,-2 ,-3 , 3 , 0 ,-1 ,-4 },
\r
347 {-2 ,-2 , 1 , 6 ,-3 , 0 , 2 ,-1 ,-1 ,-3 ,-4 ,-1 ,-3 ,-3 ,-1 , 0 ,-1 ,-4 ,-3 ,-3 , 4 , 1 ,-1 ,-4 },
\r
348 { 0 , 3 ,-3 ,-3 , 9 ,-3 ,-4 ,-3 ,-3 ,-1 ,-1 ,-3 ,-1 ,-2 ,-3 ,-1 ,-1 ,-2 ,-2 ,-1 ,-3 ,-3 ,-2 ,-4 },
\r
349 {-1 , 1 , 0 , 0 ,-3 , 5 , 2 ,-2 , 0 ,-3 ,-2 , 1 , 0 ,-3 ,-1 , 0 ,-1 ,-2 ,-1 ,-2 , 0 , 3 ,-1 ,-4 },
\r
350 {-1 , 0 , 0 , 2 ,-4 , 2 , 5 ,-2 , 0 ,-3 ,-3 , 1 ,-2 ,-3 ,-1 , 0 ,-1 ,-3 ,-2 ,-2 , 1 , 4 ,-1 ,-4 },
\r
351 { 0 ,-2 , 0 ,-1 ,-3 ,-2 ,-2 , 6 ,-2 ,-4 ,-4 ,-2 ,-3 ,-3 ,-2 , 0 ,-2 ,-2 ,-3 ,-3 ,-1 ,-2 ,-1 ,-4 },
\r
352 {-2 , 0 , 1 ,-1 ,-3 , 0 , 0 ,-2 , 8 ,-3 ,-3 ,-1 ,-2 ,-1 ,-2 ,-1 ,-2 ,-2 , 2 ,-3 , 0 , 0 ,-1 ,-4 },
\r
353 {-1 ,-3 ,-3 ,-3 ,-1 ,-3 ,-3 ,-4 ,-3 , 4 , 2 ,-3 , 1 , 0 ,-3 ,-2 ,-1 ,-3 ,-1 , 3 ,-3 ,-3 ,-1 ,-4 },
\r
354 {-1 ,-2 ,-3 ,-4 ,-1 ,-2 ,-3 ,-4 ,-3 , 2 , 4 ,-2 , 2 , 0 ,-3 ,-2 ,-1 ,-2 ,-1 , 1 ,-4 ,-3 ,-1 ,-4 },
\r
355 {-1 , 2 , 0 ,-1 ,-3 , 1 , 1 ,-2 ,-1 ,-3 ,-2 , 5 ,-1 ,-3 ,-1 , 0 ,-1 ,-3 ,-2 ,-2 , 0 , 1 ,-1 ,-4 },
\r
356 {-1 ,-1 ,-2 ,-3 ,-1 , 0 ,-2 ,-3 ,-2 , 1 , 2 ,-1 , 5 , 0 ,-2 ,-1 ,-1 ,-1 ,-1 , 1 ,-3 ,-1 ,-1 ,-4 },
\r
357 {-2 ,-3 ,-3 ,-3 ,-2 ,-3 ,-3 ,-3 ,-1 , 0 , 0 ,-3 , 0 , 6 ,-4 ,-2 ,-2 , 1 , 3 ,-1 ,-3 ,-3 ,-1 ,-4 },
\r
358 {-1 ,-2 ,-2 ,-1 ,-3 ,-1 ,-1 ,-2 ,-2 ,-3 ,-3 ,-1 ,-2 ,-4 , 7 ,-1 ,-1 ,-4 ,-3 ,-2 ,-2 ,-1 ,-2 ,-4 },
\r
359 { 1 ,-1 , 1 , 0 ,-1 , 0 , 0 , 0 ,-1 ,-2 ,-2 , 0 ,-1 ,-2 ,-1 , 4 , 1 ,-3 ,-2 ,-2 , 0 , 0 , 0 ,-4 },
\r
360 { 0 ,-1 , 0 ,-1 ,-1 ,-1 ,-1 ,-2 ,-2 ,-1 ,-1 ,-1 ,-1 ,-2 ,-1 , 1 , 5 ,-2 ,-2 , 0 ,-1 ,-1 , 0 ,-4 },
\r
361 {-3 ,-3 ,-4 ,-4 ,-2 ,-2 ,-3 ,-2 ,-2 ,-3 ,-2 ,-3 ,-1 , 1 ,-4 ,-3 ,-2 ,11 , 2 ,-3 ,-4 ,-3 ,-2 ,-4 },
\r
362 {-2 ,-2 ,-2 ,-3 ,-2 ,-1 ,-2 ,-3 , 2 ,-1 ,-1 ,-2 ,-1 , 3 ,-3 ,-2 ,-2 , 2 , 7 ,-1 ,-3 ,-2 ,-1 ,-4 },
\r
363 { 0 ,-3 ,-3 ,-3 ,-1 ,-2 ,-2 ,-3 ,-3 , 3 , 1 ,-2 , 1 ,-1 ,-2 ,-2 , 0 ,-3 ,-1 , 4 ,-3 ,-2 ,-1 ,-4 },
\r
364 {-2 ,-1 , 3 , 4 ,-3 , 0 , 1 ,-1 , 0 ,-3 ,-4 , 0 ,-3 ,-3 ,-2 , 0 ,-1 ,-4 ,-3 ,-3 , 4 , 1 ,-1 ,-4 },
\r
365 {-1 , 0 , 0 , 1 ,-3 , 3 , 4 ,-2 , 0 ,-3 ,-3 , 1 ,-1 ,-3 ,-1 , 0 ,-1 ,-3 ,-2 ,-2 , 1 , 4 ,-1 ,-4 },
\r
366 { 0 ,-1 ,-1 ,-1 ,-2 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-2 , 0 , 0 ,-2 ,-1 ,-1 ,-1 ,-1 ,-1 ,-4 },
\r
367 {-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 ,-4 , 1 },
\r
369 static final int[][] PAM250 = {
\r
370 { 2,-2 ,0 ,0,-2 ,0 ,0 ,1,-1,-1,-2,-1,-1,-3 ,1 ,1 ,1,-6,-3 ,0 ,0 ,0 ,0,-8},
\r
371 { -2 ,6 ,0,-1,-4 ,1,-1,-3 ,2,-2,-3 ,3 ,0,-4 ,0 ,0,-1 ,2,-4,-2,-1 ,0,-1,-8},
\r
372 { 0 ,0 ,2 ,2,-4 ,1 ,1 ,0 ,2,-2,-3 ,1,-2,-3 ,0 ,1 ,0,-4,-2,-2 ,2 ,1 ,0,-8},
\r
373 { 0,-1 ,2 ,4,-5 ,2 ,3 ,1 ,1,-2,-4 ,0,-3,-6,-1 ,0 ,0,-7,-4,-2 ,3 ,3,-1,-8},
\r
374 { -2,-4,-4,-5,12,-5,-5,-3,-3,-2,-6,-5,-5,-4,-3 ,0,-2,-8 ,0,-2,-4,-5,-3,-8},
\r
375 { 0 ,1 ,1 ,2,-5 ,4 ,2,-1 ,3,-2,-2 ,1,-1,-5 ,0,-1,-1,-5,-4,-2 ,1 ,3,-1,-8},
\r
376 { 0,-1 ,1 ,3,-5 ,2 ,4 ,0 ,1,-2,-3 ,0,-2,-5,-1 ,0 ,0,-7,-4,-2 ,3 ,3,-1,-8},
\r
377 { 1,-3 ,0 ,1,-3,-1 ,0 ,5,-2,-3,-4,-2,-3,-5 ,0 ,1 ,0,-7,-5,-1 ,0 ,0,-1,-8},
\r
378 { -1 ,2 ,2 ,1,-3 ,3 ,1,-2 ,6,-2,-2 ,0,-2,-2 ,0,-1,-1,-3 ,0,-2 ,1 ,2,-1,-8},
\r
379 { -1,-2,-2,-2,-2,-2,-2,-3,-2 ,5 ,2,-2 ,2 ,1,-2,-1 ,0,-5,-1 ,4,-2,-2,-1,-8},
\r
380 { -2,-3,-3,-4,-6,-2,-3,-4,-2 ,2 ,6,-3 ,4 ,2,-3,-3,-2,-2,-1 ,2,-3,-3,-1,-8},
\r
381 { -1 ,3 ,1 ,0,-5 ,1 ,0,-2 ,0,-2,-3 ,5 ,0,-5,-1 ,0 ,0,-3,-4,-2 ,1 ,0,-1,-8},
\r
382 { -1 ,0,-2,-3,-5,-1,-2,-3,-2 ,2 ,4 ,0 ,6 ,0,-2,-2,-1,-4,-2 ,2,-2,-2,-1,-8},
\r
383 { -3,-4,-3,-6,-4,-5,-5,-5,-2 ,1 ,2,-5 ,0 ,9,-5,-3,-3 ,0 ,7,-1,-4,-5,-2,-8},
\r
384 { 1 ,0 ,0,-1,-3 ,0,-1 ,0 ,0,-2,-3,-1,-2,-5 ,6 ,1 ,0,-6,-5,-1,-1 ,0,-1,-8},
\r
385 { 1 ,0 ,1 ,0 ,0,-1 ,0 ,1,-1,-1,-3 ,0,-2,-3 ,1 ,2 ,1,-2,-3,-1 ,0 ,0 ,0,-8},
\r
386 { 1,-1 ,0 ,0,-2,-1 ,0 ,0,-1 ,0,-2 ,0,-1,-3 ,0 ,1 ,3,-5,-3 ,0 ,0,-1 ,0,-8},
\r
387 { -6 ,2,-4,-7,-8,-5,-7,-7,-3,-5,-2,-3,-4 ,0,-6,-2,-5,17 ,0,-6,-5,-6,-4,-8},
\r
388 { -3,-4,-2,-4 ,0,-4,-4,-5 ,0,-1,-1,-4,-2 ,7,-5,-3,-3 ,0,10,-2,-3,-4,-2,-8},
\r
389 { 0,-2,-2,-2,-2,-2,-2,-1,-2 ,4 ,2,-2 ,2,-1,-1,-1 ,0,-6,-2 ,4,-2,-2,-1,-8},
\r
390 { 0,-1 ,2 ,3,-4 ,1 ,3 ,0 ,1,-2,-3 ,1,-2,-4,-1 ,0 ,0,-5,-3,-2 ,3 ,2,-1,-8},
\r
391 { 0 ,0 ,1 ,3,-5 ,3 ,3 ,0 ,2,-2,-3 ,0,-2,-5 ,0 ,0,-1,-6,-4,-2 ,2 ,3,-1,-8},
\r
392 { 0,-1 ,0,-1,-3,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1 ,0 ,0,-4,-2,-1,-1,-1,-1,-8},
\r
393 { -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8 ,1},
\r
396 public static Hashtable ssHash = new Hashtable(); // stores the number value of the aa
\r
399 ssHash.put("H", Color.magenta);
\r
400 ssHash.put("E", Color.yellow);
\r
401 ssHash.put("-", Color.white);
\r
402 ssHash.put(".", Color.white);
\r
403 ssHash.put("S", Color.cyan);
\r
404 ssHash.put("T", Color.blue);
\r
405 ssHash.put("G", Color.pink);
\r
406 ssHash.put("I", Color.pink);
\r
407 ssHash.put("B", Color.yellow);
\r
409 static final int[][] DNA = {
\r
411 { 5,-4,-4,-4, 1},// C
\r
412 {-4, 5,-4,-4, 1},// T
\r
413 {-4,-4, 5,-4, 1},// A
\r
414 {-4,-4,-4, 5, 1},// G
\r
415 { 1, 1, 1, 1, 1},// -
\r
417 public static Hashtable getAAHash() {
\r
420 public static Hashtable getAA3Hash() {
\r
423 public static int[][] getDNA() {
\r
424 return ResidueProperties.DNA;
\r
426 public static int[][] getBLOSUM62() {
\r
427 return ResidueProperties.BLOSUM62;
\r
429 public static int getPAM250(String A1, String A2) {
\r
430 Integer pog1 = (Integer)aaHash.get(A1);
\r
431 Integer pog2 = (Integer)aaHash.get(A2);
\r
432 int pog = ResidueProperties.PAM250[pog1.intValue()][pog2.intValue()];
\r
435 public static int getBLOSUM62(String A1, String A2) {
\r
438 Integer pog1 = (Integer)aaHash.get(A1);
\r
439 Integer pog2 = (Integer)aaHash.get(A2);
\r
440 pog = ResidueProperties.BLOSUM62[pog1.intValue()][pog2.intValue()];
\r
441 } catch (Exception e) {
\r
442 //System.out.println("Unknown residue in " + A1 + " " + A2);
\r
447 public static Color[] pidColours = {
\r
449 new Color(153,153,255),
\r
450 // Color.lightGray,
\r
451 new Color(204,204,255),
\r
453 public static float[] pidThresholds = {
\r
458 private ResidueProperties() {}
\r
460 public static Hashtable codonHash = new Hashtable();
\r
462 public static Vector Lys = new Vector();
\r
463 public static Vector Asn = new Vector();
\r
464 public static Vector Gln = new Vector();
\r
465 public static Vector His = new Vector();
\r
466 public static Vector Glu = new Vector();
\r
467 public static Vector Asp = new Vector();
\r
468 public static Vector Tyr = new Vector();
\r
469 public static Vector Thr = new Vector();
\r
470 public static Vector Pro = new Vector();
\r
471 public static Vector Ala = new Vector();
\r
472 public static Vector Ser = new Vector();
\r
473 public static Vector Arg = new Vector();
\r
474 public static Vector Gly = new Vector();
\r
475 public static Vector Trp = new Vector();
\r
476 public static Vector Cys = new Vector();
\r
477 public static Vector Ile = new Vector();
\r
478 public static Vector Met = new Vector();
\r
479 public static Vector Leu = new Vector();
\r
480 public static Vector Val = new Vector();
\r
481 public static Vector Phe = new Vector();
\r
482 public static Vector STOP = new Vector();
\r
485 codonHash.put("K",Lys);
\r
486 codonHash.put("N",Asn);
\r
487 codonHash.put("Q",Gln);
\r
488 codonHash.put("H",His);
\r
489 codonHash.put("E",Glu);
\r
490 codonHash.put("D",Asp);
\r
491 codonHash.put("Y",Tyr);
\r
492 codonHash.put("T",Thr);
\r
493 codonHash.put("P",Pro);
\r
494 codonHash.put("A",Ala);
\r
495 codonHash.put("S",Ser);
\r
496 codonHash.put("R",Arg);
\r
497 codonHash.put("G",Gly);
\r
498 codonHash.put("W",Trp);
\r
499 codonHash.put("C",Cys);
\r
500 codonHash.put("I",Ile);
\r
501 codonHash.put("M",Met);
\r
502 codonHash.put("L",Leu);
\r
503 codonHash.put("V",Val);
\r
504 codonHash.put("F",Phe);
\r
505 codonHash.put("STOP",STOP);
\r
508 public static Vector getCodons(String res) {
\r
509 if (codonHash.containsKey(res))
\r
510 return (Vector)codonHash.get(res);
\r
514 public static String codonTranslate(String codon) {
\r
515 Enumeration e = codonHash.keys();
\r
516 while (e.hasMoreElements()) {
\r
517 String key = (String)e.nextElement();
\r
518 Vector tmp = (Vector)codonHash.get(key);
\r
519 if (tmp.contains(codon)) {
\r
525 public static Hashtable codonHash2 = new Hashtable();
\r
527 codonHash2.put("AAA","K");
\r
528 codonHash2.put("AAG","K");
\r
529 codonHash2.put("AAC","N");
\r
530 codonHash2.put("AAT","N");
\r
532 codonHash2.put("CAA","E");
\r
533 codonHash2.put("CAG","E");
\r
534 codonHash2.put("CAC","H");
\r
535 codonHash2.put("CAT","H");
\r
537 codonHash2.put("GAA","Q");
\r
538 codonHash2.put("GAG","Q");
\r
539 codonHash2.put("GAC","D");
\r
540 codonHash2.put("GAT","D");
\r
542 codonHash2.put("TAC","Y");
\r
543 codonHash2.put("TAT","Y");
\r
545 codonHash2.put("ACA","T");
\r
546 codonHash2.put("AAG","T");
\r
547 codonHash2.put("ACC","T");
\r
548 codonHash2.put("ACT","T");
\r
550 codonHash2.put("CCA","P");
\r
551 codonHash2.put("CCG","P");
\r
552 codonHash2.put("CCC","P");
\r
553 codonHash2.put("CCT","P");
\r
555 codonHash2.put("GCA","A");
\r
556 codonHash2.put("GCG","A");
\r
557 codonHash2.put("GCC","A");
\r
558 codonHash2.put("GCT","A");
\r
560 codonHash2.put("TCA","S");
\r
561 codonHash2.put("TCG","S");
\r
562 codonHash2.put("TCC","S");
\r
563 codonHash2.put("TCT","S");
\r
564 codonHash2.put("AGC","S");
\r
565 codonHash2.put("AGT","S");
\r
567 codonHash2.put("AGA","R");
\r
568 codonHash2.put("AGG","R");
\r
569 codonHash2.put("CGA","R");
\r
570 codonHash2.put("CGG","R");
\r
571 codonHash2.put("CGC","R");
\r
572 codonHash2.put("CGT","R");
\r
574 codonHash2.put("GGA","G");
\r
575 codonHash2.put("GGG","G");
\r
576 codonHash2.put("GGC","G");
\r
577 codonHash2.put("GGT","G");
\r
579 codonHash2.put("TGA","*");
\r
580 codonHash2.put("TAA","*");
\r
581 codonHash2.put("TAG","*");
\r
583 codonHash2.put("TGG","W");
\r
585 codonHash2.put("TGC","C");
\r
586 codonHash2.put("TGT","C");
\r
588 codonHash2.put("ATA","I");
\r
589 codonHash2.put("ATC","I");
\r
590 codonHash2.put("ATT","I");
\r
592 codonHash2.put("ATG","M");
\r
594 codonHash2.put("CTA","L");
\r
595 codonHash2.put("CTG","L");
\r
596 codonHash2.put("CTC","L");
\r
597 codonHash2.put("CTT","L");
\r
598 codonHash2.put("TTA","L");
\r
599 codonHash2.put("TTG","L");
\r
601 codonHash2.put("GTA","V");
\r
602 codonHash2.put("GTG","V");
\r
603 codonHash2.put("GTC","V");
\r
604 codonHash2.put("GTT","V");
\r
606 codonHash2.put("TTC","F");
\r
607 codonHash2.put("TTT","F");
\r
612 Lys.addElement("AAA");
\r
613 Lys.addElement("AAG");
\r
614 Asn.addElement("AAC");
\r
615 Asn.addElement("AAT");
\r
617 Gln.addElement("CAA");
\r
618 Gln.addElement("CAG");
\r
619 His.addElement("CAC");
\r
620 His.addElement("CAT");
\r
622 Glu.addElement("GAA");
\r
623 Glu.addElement("GAG");
\r
624 Asp.addElement("GAC");
\r
625 Asp.addElement("GAT");
\r
627 Tyr.addElement("TAC");
\r
628 Tyr.addElement("TAT");
\r
630 Thr.addElement("ACA");
\r
631 Thr.addElement("ACG");
\r
632 Thr.addElement("ACC");
\r
633 Thr.addElement("ACT");
\r
635 Pro.addElement("CCA");
\r
636 Pro.addElement("CCG");
\r
637 Pro.addElement("CCC");
\r
638 Pro.addElement("CCT");
\r
640 Ala.addElement("GCA");
\r
641 Ala.addElement("GCG");
\r
642 Ala.addElement("GCC");
\r
643 Ala.addElement("GCT");
\r
645 Ser.addElement("TCA");
\r
646 Ser.addElement("TCG");
\r
647 Ser.addElement("TCC");
\r
648 Ser.addElement("TCT");
\r
649 Ser.addElement("AGC");
\r
650 Ser.addElement("AGT");
\r
652 Arg.addElement("AGA");
\r
653 Arg.addElement("AGG");
\r
654 Arg.addElement("CGA");
\r
655 Arg.addElement("CGG");
\r
656 Arg.addElement("CGC");
\r
657 Arg.addElement("CGT");
\r
659 Gly.addElement("GGA");
\r
660 Gly.addElement("GGG");
\r
661 Gly.addElement("GGC");
\r
662 Gly.addElement("GGT");
\r
664 STOP.addElement("TGA");
\r
665 STOP.addElement("TAA");
\r
666 STOP.addElement("TAG");
\r
668 Trp.addElement("TGG");
\r
670 Cys.addElement("TGC");
\r
671 Cys.addElement("TGT");
\r
673 Ile.addElement("ATA");
\r
674 Ile.addElement("ATC");
\r
675 Ile.addElement("ATT");
\r
677 Met.addElement("ATG");
\r
679 Leu.addElement("CTA");
\r
680 Leu.addElement("CTG");
\r
681 Leu.addElement("CTC");
\r
682 Leu.addElement("CTT");
\r
683 Leu.addElement("TTA");
\r
684 Leu.addElement("TTG");
\r
686 Val.addElement("GTA");
\r
687 Val.addElement("GTG");
\r
688 Val.addElement("GTC");
\r
689 Val.addElement("GTT");
\r
691 Phe.addElement("TTC");
\r
692 Phe.addElement("TTT");
\r
695 public static Color[][] groupColors = {
\r
696 {Color.red,Color.red.brighter(),Color.red.brighter().brighter()},
\r
697 {Color.orange,Color.orange.brighter(),Color.orange.brighter().brighter()},
\r
698 {Color.green,Color.green.brighter(),Color.green.brighter().brighter()},
\r
699 {Color.blue,Color.blue.brighter(),Color.blue.brighter().brighter()},
\r
700 {Color.magenta,Color.magenta.brighter(),Color.magenta.brighter().brighter()},
\r
701 {Color.cyan,Color.cyan.brighter(),Color.cyan.brighter().brighter()},
\r
702 {Color.pink,Color.pink.brighter(),Color.pink.brighter().brighter()},
\r
708 //Stores residue codes/names and colours and other things
\r
709 public static Hashtable propHash = new Hashtable();
\r
710 public static Hashtable hydrophobic = new Hashtable();
\r
711 public static Hashtable polar = new Hashtable();
\r
712 public static Hashtable small = new Hashtable();
\r
713 public static Hashtable positive = new Hashtable();
\r
714 public static Hashtable negative = new Hashtable();
\r
715 public static Hashtable charged = new Hashtable();
\r
716 public static Hashtable aromatic = new Hashtable();
\r
717 public static Hashtable aliphatic = new Hashtable();
\r
718 public static Hashtable tiny = new Hashtable();
\r
719 public static Hashtable proline = new Hashtable();
\r
722 hydrophobic.put("I",new Integer(1));
\r
723 hydrophobic.put("L",new Integer(1));
\r
724 hydrophobic.put("V",new Integer(1));
\r
725 hydrophobic.put("C",new Integer(1));
\r
726 hydrophobic.put("A",new Integer(1));
\r
727 hydrophobic.put("G",new Integer(1));
\r
728 hydrophobic.put("M",new Integer(1));
\r
729 hydrophobic.put("F",new Integer(1));
\r
730 hydrophobic.put("Y",new Integer(1));
\r
731 hydrophobic.put("W",new Integer(1));
\r
732 hydrophobic.put("H",new Integer(1));
\r
733 hydrophobic.put("K",new Integer(1));
\r
734 hydrophobic.put("X",new Integer(1));
\r
735 hydrophobic.put("-",new Integer(1));
\r
736 hydrophobic.put("*",new Integer(1));
\r
737 hydrophobic.put("R",new Integer(0));
\r
738 hydrophobic.put("E",new Integer(0));
\r
739 hydrophobic.put("Q",new Integer(0));
\r
740 hydrophobic.put("D",new Integer(0));
\r
741 hydrophobic.put("N",new Integer(0));
\r
742 hydrophobic.put("S",new Integer(0));
\r
743 hydrophobic.put("T",new Integer(0));
\r
744 hydrophobic.put("P",new Integer(0));
\r
747 polar.put("Y",new Integer(1));
\r
748 polar.put("W",new Integer(1));
\r
749 polar.put("H",new Integer(1));
\r
750 polar.put("K",new Integer(1));
\r
751 polar.put("R",new Integer(1));
\r
752 polar.put("E",new Integer(1));
\r
753 polar.put("Q",new Integer(1));
\r
754 polar.put("D",new Integer(1));
\r
755 polar.put("N",new Integer(1));
\r
756 polar.put("S",new Integer(1));
\r
757 polar.put("T",new Integer(1));
\r
758 polar.put("X",new Integer(1));
\r
759 polar.put("-",new Integer(1));
\r
760 polar.put("*",new Integer(1));
\r
761 polar.put("I",new Integer(0));
\r
762 polar.put("L",new Integer(0));
\r
763 polar.put("V",new Integer(0));
\r
764 polar.put("C",new Integer(0));
\r
765 polar.put("A",new Integer(0));
\r
766 polar.put("G",new Integer(0));
\r
767 polar.put("M",new Integer(0));
\r
768 polar.put("F",new Integer(0));
\r
769 polar.put("P",new Integer(0));
\r
773 small.put("I",new Integer(0));
\r
774 small.put("L",new Integer(0));
\r
775 small.put("V",new Integer(1));
\r
776 small.put("C",new Integer(1));
\r
777 small.put("A",new Integer(1));
\r
778 small.put("G",new Integer(1));
\r
779 small.put("M",new Integer(0));
\r
780 small.put("F",new Integer(0));
\r
781 small.put("Y",new Integer(0));
\r
782 small.put("W",new Integer(0));
\r
783 small.put("H",new Integer(0));
\r
784 small.put("K",new Integer(0));
\r
785 small.put("R",new Integer(0));
\r
786 small.put("E",new Integer(0));
\r
787 small.put("Q",new Integer(0));
\r
788 small.put("D",new Integer(1));
\r
789 small.put("N",new Integer(1));
\r
790 small.put("S",new Integer(1));
\r
791 small.put("T",new Integer(1));
\r
792 small.put("P",new Integer(1));
\r
793 small.put("-",new Integer(1));
\r
794 small.put("*",new Integer(1));
\r
797 positive.put("I",new Integer(0));
\r
798 positive.put("L",new Integer(0));
\r
799 positive.put("V",new Integer(0));
\r
800 positive.put("C",new Integer(0));
\r
801 positive.put("A",new Integer(0));
\r
802 positive.put("G",new Integer(0));
\r
803 positive.put("M",new Integer(0));
\r
804 positive.put("F",new Integer(0));
\r
805 positive.put("Y",new Integer(0));
\r
806 positive.put("W",new Integer(0));
\r
807 positive.put("H",new Integer(1));
\r
808 positive.put("K",new Integer(1));
\r
809 positive.put("R",new Integer(1));
\r
810 positive.put("E",new Integer(0));
\r
811 positive.put("Q",new Integer(0));
\r
812 positive.put("D",new Integer(0));
\r
813 positive.put("N",new Integer(0));
\r
814 positive.put("S",new Integer(0));
\r
815 positive.put("T",new Integer(0));
\r
816 positive.put("P",new Integer(0));
\r
817 positive.put("-",new Integer(1));
\r
818 positive.put("*",new Integer(1));
\r
821 negative.put("I",new Integer(0));
\r
822 negative.put("L",new Integer(0));
\r
823 negative.put("V",new Integer(0));
\r
824 negative.put("C",new Integer(0));
\r
825 negative.put("A",new Integer(0));
\r
826 negative.put("G",new Integer(0));
\r
827 negative.put("M",new Integer(0));
\r
828 negative.put("F",new Integer(0));
\r
829 negative.put("Y",new Integer(0));
\r
830 negative.put("W",new Integer(0));
\r
831 negative.put("H",new Integer(0));
\r
832 negative.put("K",new Integer(0));
\r
833 negative.put("R",new Integer(0));
\r
834 negative.put("E",new Integer(1));
\r
835 negative.put("Q",new Integer(0));
\r
836 negative.put("D",new Integer(1));
\r
837 negative.put("N",new Integer(0));
\r
838 negative.put("S",new Integer(0));
\r
839 negative.put("T",new Integer(0));
\r
840 negative.put("P",new Integer(0));
\r
841 negative.put("-",new Integer(1));
\r
842 negative.put("*",new Integer(1));
\r
845 charged.put("I",new Integer(0));
\r
846 charged.put("L",new Integer(0));
\r
847 charged.put("V",new Integer(0));
\r
848 charged.put("C",new Integer(0));
\r
849 charged.put("A",new Integer(0));
\r
850 charged.put("G",new Integer(0));
\r
851 charged.put("M",new Integer(0));
\r
852 charged.put("F",new Integer(0));
\r
853 charged.put("Y",new Integer(0));
\r
854 charged.put("W",new Integer(0));
\r
855 charged.put("H",new Integer(1));
\r
856 charged.put("K",new Integer(1));
\r
857 charged.put("R",new Integer(1));
\r
858 charged.put("E",new Integer(1));
\r
859 charged.put("Q",new Integer(0));
\r
860 charged.put("D",new Integer(1));
\r
861 charged.put("N",new Integer(1));
\r
862 charged.put("S",new Integer(0));
\r
863 charged.put("T",new Integer(0));
\r
864 charged.put("P",new Integer(0));
\r
865 charged.put("-",new Integer(1));
\r
866 charged.put("*",new Integer(1));
\r
869 aromatic.put("I",new Integer(0));
\r
870 aromatic.put("L",new Integer(0));
\r
871 aromatic.put("V",new Integer(0));
\r
872 aromatic.put("C",new Integer(0));
\r
873 aromatic.put("A",new Integer(0));
\r
874 aromatic.put("G",new Integer(0));
\r
875 aromatic.put("M",new Integer(0));
\r
876 aromatic.put("F",new Integer(1));
\r
877 aromatic.put("Y",new Integer(1));
\r
878 aromatic.put("W",new Integer(1));
\r
879 aromatic.put("H",new Integer(1));
\r
880 aromatic.put("K",new Integer(0));
\r
881 aromatic.put("R",new Integer(0));
\r
882 aromatic.put("E",new Integer(0));
\r
883 aromatic.put("Q",new Integer(0));
\r
884 aromatic.put("D",new Integer(0));
\r
885 aromatic.put("N",new Integer(0));
\r
886 aromatic.put("S",new Integer(0));
\r
887 aromatic.put("T",new Integer(0));
\r
888 aromatic.put("P",new Integer(0));
\r
889 aromatic.put("-",new Integer(1));
\r
890 aromatic.put("*",new Integer(1));
\r
893 aliphatic.put("I",new Integer(1));
\r
894 aliphatic.put("L",new Integer(1));
\r
895 aliphatic.put("V",new Integer(1));
\r
896 aliphatic.put("C",new Integer(0));
\r
897 aliphatic.put("A",new Integer(0));
\r
898 aliphatic.put("G",new Integer(0));
\r
899 aliphatic.put("M",new Integer(0));
\r
900 aliphatic.put("F",new Integer(0));
\r
901 aliphatic.put("Y",new Integer(0));
\r
902 aliphatic.put("W",new Integer(0));
\r
903 aliphatic.put("H",new Integer(0));
\r
904 aliphatic.put("K",new Integer(0));
\r
905 aliphatic.put("R",new Integer(0));
\r
906 aliphatic.put("E",new Integer(0));
\r
907 aliphatic.put("Q",new Integer(0));
\r
908 aliphatic.put("D",new Integer(0));
\r
909 aliphatic.put("N",new Integer(0));
\r
910 aliphatic.put("S",new Integer(0));
\r
911 aliphatic.put("T",new Integer(0));
\r
912 aliphatic.put("P",new Integer(0));
\r
913 aliphatic.put("-",new Integer(1));
\r
914 aliphatic.put("*",new Integer(1));
\r
918 tiny.put("I",new Integer(0));
\r
919 tiny.put("L",new Integer(0));
\r
920 tiny.put("V",new Integer(0));
\r
921 tiny.put("C",new Integer(0));
\r
922 tiny.put("A",new Integer(1));
\r
923 tiny.put("G",new Integer(1));
\r
924 tiny.put("M",new Integer(0));
\r
925 tiny.put("F",new Integer(0));
\r
926 tiny.put("Y",new Integer(0));
\r
927 tiny.put("W",new Integer(0));
\r
928 tiny.put("H",new Integer(0));
\r
929 tiny.put("K",new Integer(0));
\r
930 tiny.put("R",new Integer(0));
\r
931 tiny.put("E",new Integer(0));
\r
932 tiny.put("Q",new Integer(0));
\r
933 tiny.put("D",new Integer(0));
\r
934 tiny.put("N",new Integer(0));
\r
935 tiny.put("S",new Integer(1));
\r
936 tiny.put("T",new Integer(0));
\r
937 tiny.put("P",new Integer(0));
\r
938 tiny.put("-",new Integer(1));
\r
939 tiny.put("*",new Integer(1));
\r
943 proline.put("I",new Integer(0));
\r
944 proline.put("L",new Integer(0));
\r
945 proline.put("V",new Integer(0));
\r
946 proline.put("C",new Integer(0));
\r
947 proline.put("A",new Integer(0));
\r
948 proline.put("G",new Integer(0));
\r
949 proline.put("M",new Integer(0));
\r
950 proline.put("F",new Integer(0));
\r
951 proline.put("Y",new Integer(0));
\r
952 proline.put("W",new Integer(0));
\r
953 proline.put("H",new Integer(0));
\r
954 proline.put("K",new Integer(0));
\r
955 proline.put("R",new Integer(0));
\r
956 proline.put("E",new Integer(0));
\r
957 proline.put("Q",new Integer(0));
\r
958 proline.put("D",new Integer(0));
\r
959 proline.put("N",new Integer(0));
\r
960 proline.put("S",new Integer(0));
\r
961 proline.put("T",new Integer(0));
\r
962 proline.put("P",new Integer(1));
\r
963 proline.put("-",new Integer(1));
\r
964 proline.put("*",new Integer(1));
\r
969 propHash.put("hydrophobic",hydrophobic);
\r
970 propHash.put("small",small);
\r
971 propHash.put("positive",positive);
\r
972 propHash.put("negative",negative);
\r
973 propHash.put("charged",charged);
\r
974 propHash.put("aromatic",aromatic);
\r
975 propHash.put("aliphatic",aliphatic);
\r
976 propHash.put("tiny",tiny);
\r
977 propHash.put("proline",proline);
\r
978 propHash.put("polar",polar);
\r
981 public static Hashtable chainColours = new Hashtable();
\r
983 chainColours.put("A",Color.red);
\r
984 chainColours.put("B",Color.orange);
\r
985 chainColours.put("C",Color.yellow);
\r
986 chainColours.put("D",Color.green);
\r
987 chainColours.put("E",Color.cyan);
\r
988 chainColours.put("F",Color.blue);
\r
989 chainColours.put("G",Color.magenta);
\r
990 chainColours.put("H",Color.pink);
\r
992 public static Hashtable getChainColours() {
\r
993 return chainColours;
\r