/*
* Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
public class ResidueProperties
{
- public static Hashtable scoreMatrices=new Hashtable();
+ public static Hashtable scoreMatrices = new Hashtable();
//Stores residue codes/names and colours and other things
- public static final int [] aaIndex; // aaHash version 2.1.1 and below
- public static final int [] nucleotideIndex;
+ public static final int[] aaIndex; // aaHash version 2.1.1 and below
+ public static final int[] nucleotideIndex;
public static final Hashtable aa3Hash = new Hashtable();
public static final Hashtable aa2Triplet = new Hashtable();
public static final Hashtable nucleotideName = new Hashtable();
-
static
{
aaIndex = new int[255];
- for(int i=0; i<255; i++)
+ for (int i = 0; i < 255; i++)
+ {
aaIndex[i] = 23;
+ }
aaIndex['A'] = 0;
aaIndex['R'] = 1;
aaIndex['b'] = 20;
aaIndex['z'] = 21;
aaIndex['x'] = 22;
- aaIndex['u'] = 22;
+ aaIndex['u'] = 22; // TODO: selenocystine triplet and codons needed. also extend subt. matrices
}
static
{
nucleotideIndex = new int[255];
for (int i = 0; i < 255; i++)
+ {
nucleotideIndex[i] = -1;
+ }
nucleotideIndex['A'] = 0;
nucleotideIndex['a'] = 0;
nucleotideIndex['N'] = 9;
nucleotideIndex['n'] = 9;
-
nucleotideName.put("A", "Adenine");
nucleotideName.put("a", "Adenine");
nucleotideName.put("G", "Guanine");
nucleotideName.put("n", "Unknown");
}
-
static
{
aa3Hash.put("ALA", new Integer(0));
// IUB Nomenclature for ambiguous peptides
aa3Hash.put("ASX", new Integer(20)); // "B";
aa3Hash.put("GLX", new Integer(21)); // X
- aa3Hash.put("XAA", new Integer(22));// X unknown
+ aa3Hash.put("XAA", new Integer(22)); // X unknown
aa3Hash.put("-", new Integer(23));
aa3Hash.put("*", new Integer(23));
aa3Hash.put(".", new Integer(23));
new Color(60, 136, 238), // T
new Color(60, 136, 238) // U
};
- public static final Color[] color =
+ // Zappo
+ public static final Color[] zappo =
{
Color.pink, // A
midBlue, // R
Color.green, // Q
Color.red, // E
Color.magenta, // G
- Color.red, // H
+ midBlue,// Color.red, // H
Color.pink, // I
Color.pink, // L
midBlue, // K
/**
* register matrices in list
*/
- static {
- scoreMatrices.put("BLOSUM62", new ScoreMatrix("BLOSUM62",BLOSUM62, 0));
- scoreMatrices.put("PAM250", new ScoreMatrix("PAM250",PAM250, 0));
+ static
+ {
+ scoreMatrices.put("BLOSUM62", new ScoreMatrix("BLOSUM62", BLOSUM62, 0));
+ scoreMatrices.put("PAM250", new ScoreMatrix("PAM250", PAM250, 0));
scoreMatrices.put("DNA", new ScoreMatrix("DNA", DNA, 1));
}
+
public static final Color[] pidColours =
{
midBlue, new Color(153, 153, 255),
Phe.addElement("TTT");
}
-
//Stores residue codes/names and colours and other things
public static Hashtable propHash = new Hashtable();
public static Hashtable hydrophobic = new Hashtable();
public static int getPAM250(String A1, String A2)
{
- int a = aaIndex[A1.charAt(0)];
- int b = aaIndex[A2.charAt(0)];
-
- int pog = ResidueProperties.PAM250[a][b];
-
- return pog;
+ return getPAM250(A1.charAt(0), A2.charAt(0));
}
public static int getBLOSUM62(char c1, char c2)
return null;
}
- public static int[][] getDefaultPeptideMatrix() {
+ public static int[][] getDefaultPeptideMatrix()
+ {
return ResidueProperties.getBLOSUM62();
}
- public static int[][] getDefaultDnaMatrix() {
+
+ public static int[][] getDefaultDnaMatrix()
+ {
return ResidueProperties.getDNA();
}
* @param pwtype
* @return matrix in scoreMatrices with key pwtype or null
*/
- public static ScoreMatrix getScoreMatrix(String pwtype) {
- Object val=scoreMatrices.get(pwtype);
- if (val!=null)
+ public static ScoreMatrix getScoreMatrix(String pwtype)
+ {
+ Object val = scoreMatrices.get(pwtype);
+ if (val != null)
+ {
return (ScoreMatrix) val;
+ }
return null;
}
+
+ public static int getPAM250(char c, char d)
+ {
+ int a = aaIndex[c];
+ int b = aaIndex[d];
+
+ int pog = ResidueProperties.PAM250[a][b];
+
+ return pog;
+ }
+
+ public static Hashtable toDssp3State;
+ static {
+ toDssp3State = new Hashtable();
+ toDssp3State.put("H", "H");
+ toDssp3State.put("E", "E");
+ toDssp3State.put("C", " ");
+ toDssp3State.put(" ", " ");
+ toDssp3State.put("T", " ");
+ toDssp3State.put("B", "E");
+ toDssp3State.put("G", "H");
+ toDssp3State.put("I", "H");
+ toDssp3State.put("X", " ");
+ }
+ /**
+ * translate from other dssp secondary structure alphabets to 3-state
+ * @param ssstring
+ * @return ssstring as a three-state secondary structure assignment.
+ */
+ public static String getDssp3state(String ssstring)
+ {
+ if (ssstring==null)
+ {
+ return null;
+ }
+ StringBuffer ss = new StringBuffer();
+ for (int i=0; i<ssstring.length(); i++)
+ {
+ String ssc = ssstring.substring(i, i+1);
+ if (toDssp3State.containsKey(ssc))
+ {
+ ss.append((String) toDssp3State.get(ssc));
+ } else {
+ ss.append(" ");
+ }
+ }
+ return ss.toString();
+ }
+ // main method generates perl representation of residue property hash
+ /// cut here
+ public static void main(String[] args)
+ {
+ Hashtable aa = new Hashtable();
+ System.out.println("my %aa = {");
+ // invert property hashes
+ Enumeration prop = propHash.keys();
+ while (prop.hasMoreElements())
+ {
+ String pname = (String) prop.nextElement();
+ Hashtable phash = (Hashtable) propHash.get(pname);
+ Enumeration res = phash.keys();
+ while (res.hasMoreElements())
+ {
+ String rname = (String) res.nextElement();
+ Vector aprops = (Vector) aa.get(rname);
+ if (aprops==null)
+ {
+ aprops = new Vector();
+ aa.put(rname, aprops);
+ }
+ Integer hasprop = (Integer) phash.get(rname);
+ if (hasprop.intValue()==1)
+ {
+ aprops.addElement(pname);
+ }
+ }
+ }
+ Enumeration res = aa.keys();
+ while (res.hasMoreElements())
+ {
+ String rname = (String) res.nextElement();
+
+ System.out.print("'"+rname+"' => [");
+ Enumeration props = ((Vector) aa.get(rname)).elements();
+ while (props.hasMoreElements())
+ {
+ System.out.print("'"+(String)props.nextElement()+"'");
+ if (props.hasMoreElements())
+ {
+ System.out.println(", ");
+ }
+ }
+ System.out.println("]"+(res.hasMoreElements() ? "," : ""));
+ }
+ System.out.println("};");
+ }
+ // to here
}