JAL-1421 typed ResidueProperties.propHash; JAL-2176 removed propHash
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 22 Sep 2016 14:49:27 +0000 (15:49 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 22 Sep 2016 14:49:27 +0000 (15:49 +0100)
from Conservation constructor, ResidueProperties.codonHash

14 files changed:
src/jalview/analysis/Conservation.java
src/jalview/appletgui/APopupMenu.java
src/jalview/appletgui/TreeCanvas.java
src/jalview/datamodel/SequenceGroup.java
src/jalview/gui/Jalview2XML.java
src/jalview/gui/Jalview2XML_V1.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/TreeCanvas.java
src/jalview/io/AnnotationFile.java
src/jalview/io/vamsas/DatastoreRegistry.java
src/jalview/schemes/ResidueProperties.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/workers/ConservationThread.java
test/jalview/schemes/DnaCodonTests.java

index 01a14c9..19a6514 100755 (executable)
@@ -53,7 +53,7 @@ public class Conservation
 
   boolean seqNumsChanged = false; // updated after any change via calcSeqNum;
 
-  Hashtable<String, Integer>[] total;
+  Map<String, Integer>[] total;
 
   boolean canonicaliseAa = true; // if true then conservation calculation will
 
@@ -62,20 +62,18 @@ public class Conservation
   // symbol
 
   /** Stores calculated quality values */
-  public Vector<Double> quality;
+  private Vector<Double> quality;
 
   /** Stores maximum and minimum values of quality values */
   private double[] qualityRange = new double[2];
 
-  Sequence consSequence;
+  private Sequence consSequence;
 
-  Map<String, Map<String, Integer>> propHash;
+  private int threshold;
 
-  int threshold;
+  private String name = "";
 
-  String name = "";
-
-  int[][] cons2;
+  private int[][] cons2;
 
   private String[] consSymbs;
 
@@ -84,8 +82,6 @@ public class Conservation
    * 
    * @param name
    *          Name of conservation
-   * @param propHash
-   *          hash of properties for each symbol
    * @param threshold
    *          to count the residues in residueHash(). commonly used value is 3
    * @param sequences
@@ -95,11 +91,10 @@ public class Conservation
    * @param end
    *          end residue position
    */
-  public Conservation(String name, Hashtable propHash, int threshold,
+  public Conservation(String name, int threshold,
           List<SequenceI> sequences, int start, int end)
   {
     this.name = name;
-    this.propHash = propHash;
     this.threshold = threshold;
     this.start = start;
     this.end = end;
@@ -254,9 +249,9 @@ public class Conservation
           String res = String.valueOf(v);
 
           // Now loop over the properties
-          for (String type : propHash.keySet())
+          for (String type : ResidueProperties.propHash.keySet())
           {
-            Hashtable<String, Integer> ht = (Hashtable<String, Integer>) propHash
+            Hashtable<String, Integer> ht = (Hashtable<String, Integer>) ResidueProperties.propHash
                     .get(type);
 
             // Have we ticked this before?
@@ -384,7 +379,7 @@ public class Conservation
 
       if (percentageGaps > pgaps)
       {
-        Hashtable<String, Integer> resultHash = total[i - start];
+        Map<String, Integer> resultHash = total[i - start];
         // Now find the verdict
         int count = 0;
         for (String type : resultHash.keySet())
@@ -724,9 +719,6 @@ public class Conservation
    * 
    * @param name
    *          - name of conservation
-   * @param consHash
-   *          - hash table of properties for each amino acid (normally
-   *          ResidueProperties.propHash)
    * @param threshold
    *          - minimum number of conserved residues needed to indicate
    *          conservation (typically 3)
@@ -744,35 +736,18 @@ public class Conservation
    * @return Conservation object ready for use in visualization
    */
   public static Conservation calculateConservation(String name,
-          Hashtable consHash, int threshold, List<SequenceI> seqs,
-          int start, int end, boolean posOrNeg, int consPercGaps,
-          boolean calcQuality)
-  {
-    Conservation cons = new Conservation(name, consHash, threshold, seqs,
-            start, end);
-    return calculateConservation(cons, posOrNeg, consPercGaps, calcQuality);
-  }
-
-  /**
-   * @param b
-   *          positive (true) or negative (false) conservation
-   * @param consPercGaps
-   *          percentage of gaps tolerated in column
-   * @param calcQuality
-   *          flag indicating if alignment quality should be calculated
-   * @return Conservation object ready for use in visualization
-   */
-  public static Conservation calculateConservation(Conservation cons,
-          boolean b, int consPercGaps, boolean calcQuality)
+          int threshold, List<SequenceI> seqs, int start, int end,
+          boolean posOrNeg, int consPercGaps, boolean calcQuality)
   {
+    Conservation cons = new Conservation(name, threshold, seqs, start, end);
     cons.calculate();
-    cons.verdict(b, consPercGaps);
-
+    cons.verdict(posOrNeg, consPercGaps);
+    
     if (calcQuality)
     {
       cons.findQuality();
     }
-
+    
     return cons;
   }
 }
index ec7cd25..c30fdad 100644 (file)
@@ -43,7 +43,6 @@ import jalview.schemes.HelixColourScheme;
 import jalview.schemes.HydrophobicColourScheme;
 import jalview.schemes.NucleotideColourScheme;
 import jalview.schemes.PIDColourScheme;
-import jalview.schemes.ResidueProperties;
 import jalview.schemes.StrandColourScheme;
 import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
@@ -1208,10 +1207,10 @@ public class APopupMenu extends java.awt.PopupMenu implements
     if (conservationMenuItem.getState())
     {
 
-      sg.cs.setConservation(Conservation.calculateConservation("Group",
-              ResidueProperties.propHash, 3, sg.getSequences(ap.av
-                      .getHiddenRepSequences()), 0, ap.av.getAlignment()
-                      .getWidth(), false, ap.av.getConsPercGaps(), false));
+      sg.cs.setConservation(Conservation.calculateConservation("Group", 3,
+              sg.getSequences(ap.av.getHiddenRepSequences()), 0, ap.av
+                      .getAlignment().getWidth(), false, ap.av
+                      .getConsPercGaps(), false));
       SliderPanel.setConservationSlider(ap, sg.cs, sg.getName());
       SliderPanel.showConservationSlider();
     }
index c8f526c..47c2d28 100755 (executable)
@@ -29,7 +29,6 @@ import jalview.datamodel.SequenceI;
 import jalview.datamodel.SequenceNode;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
-import jalview.schemes.ResidueProperties;
 import jalview.schemes.UserColourScheme;
 import jalview.util.Format;
 import jalview.util.MappingUtils;
@@ -627,9 +626,9 @@ public class TreeCanvas extends Panel implements MouseListener,
 
       Color col = new Color((int) (Math.random() * 255),
               (int) (Math.random() * 255), (int) (Math.random() * 255));
-      setColor((SequenceNode) tree.getGroups().elementAt(i), col.brighter());
+      setColor(tree.getGroups().elementAt(i), col.brighter());
 
-      Vector<SequenceNode> l = tree.findLeaves((SequenceNode) tree
+      Vector<SequenceNode> l = tree.findLeaves(tree
               .getGroups().elementAt(i));
 
       Vector<SequenceI> sequences = new Vector<SequenceI>();
@@ -679,9 +678,8 @@ public class TreeCanvas extends Panel implements MouseListener,
       if (av.getGlobalColourScheme() != null
               && av.getGlobalColourScheme().conservationApplied())
       {
-        Conservation c = new Conservation("Group",
-                ResidueProperties.propHash, 3, sg.getSequences(null),
-                sg.getStartRes(), sg.getEndRes());
+        Conservation c = new Conservation("Group", 3,
+                sg.getSequences(null), sg.getStartRes(), sg.getEndRes());
 
         c.calculate();
         c.verdict(false, av.getConsPercGaps());
index 046f1e6..9a408e3 100755 (executable)
@@ -23,7 +23,6 @@ package jalview.datamodel;
 import jalview.analysis.AAFrequency;
 import jalview.analysis.Conservation;
 import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ResidueProperties;
 
 import java.awt.Color;
 import java.util.ArrayList;
@@ -548,9 +547,8 @@ public class SequenceGroup implements AnnotatedCollectionI
       if ((conservation != null)
               || (cs != null && cs.conservationApplied()))
       {
-        Conservation c = new Conservation(groupName,
-                ResidueProperties.propHash, 3, sequences, startRes,
-                endRes + 1);
+        Conservation c = new Conservation(groupName, 3, sequences,
+                startRes, endRes + 1);
         c.calculate();
         c.verdict(false, consPercGaps);
         if (conservation != null)
index 7093a9a..47a8faf 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.gui;
 
+import jalview.analysis.Conservation;
 import jalview.api.FeatureColourI;
 import jalview.api.ViewStyleI;
 import jalview.api.structures.JalviewStructureDisplayI;
@@ -3389,8 +3390,7 @@ public class Jalview2XML
         }
         if (jGroup.getConsThreshold() != 0)
         {
-          jalview.analysis.Conservation c = new jalview.analysis.Conservation(
-                  "All", ResidueProperties.propHash, 3,
+          Conservation c = new Conservation("All", 3,
                   sg.getSequences(null), 0, sg.getWidth() - 1);
           c.calculate();
           c.verdict(false, 25);
index 61e20fa..f8a296f 100755 (executable)
@@ -20,6 +20,7 @@
  */
 package jalview.gui;
 
+import jalview.analysis.Conservation;
 import jalview.binding.Annotation;
 import jalview.binding.AnnotationElement;
 import jalview.binding.Features;
@@ -37,7 +38,6 @@ import jalview.binding.Viewport;
 import jalview.datamodel.PDBEntry;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
-import jalview.schemes.ResidueProperties;
 import jalview.structure.StructureSelectionManager;
 import jalview.util.MessageManager;
 import jalview.util.jarInputStreamProvider;
@@ -359,8 +359,7 @@ public class Jalview2XML_V1
 
         if (groups[i].getConsThreshold() != 0)
         {
-          jalview.analysis.Conservation c = new jalview.analysis.Conservation(
-                  "All", ResidueProperties.propHash, 3,
+          Conservation c = new Conservation("All", 3,
                   sg.getSequences(null), 0, sg.getWidth() - 1);
           c.calculate();
           c.verdict(false, 25);
index d28dc60..939c087 100644 (file)
@@ -49,7 +49,6 @@ import jalview.schemes.HydrophobicColourScheme;
 import jalview.schemes.NucleotideColourScheme;
 import jalview.schemes.PIDColourScheme;
 import jalview.schemes.PurinePyrimidineColourScheme;
-import jalview.schemes.ResidueProperties;
 import jalview.schemes.StrandColourScheme;
 import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
@@ -2039,9 +2038,8 @@ public class PopupMenu extends JPopupMenu
     if (conservationMenuItem.isSelected())
     {
       // JBPNote: Conservation name shouldn't be i18n translated
-      Conservation c = new Conservation("Group",
-              ResidueProperties.propHash, 3, sg.getSequences(ap.av
-                      .getHiddenRepSequences()), sg.getStartRes(),
+      Conservation c = new Conservation("Group", 3, sg.getSequences(ap.av
+              .getHiddenRepSequences()), sg.getStartRes(),
               sg.getEndRes() + 1);
 
       c.calculate();
index 6bfea9e..ef65b92 100755 (executable)
@@ -29,7 +29,6 @@ import jalview.datamodel.SequenceI;
 import jalview.datamodel.SequenceNode;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
-import jalview.schemes.ResidueProperties;
 import jalview.schemes.UserColourScheme;
 import jalview.structure.SelectionSource;
 import jalview.util.Format;
@@ -1020,10 +1019,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         if (aps[a].av.getGlobalColourScheme() != null
                 && aps[a].av.getGlobalColourScheme().conservationApplied())
         {
-          Conservation c = new Conservation("Group",
-                  ResidueProperties.propHash, 3, sg.getSequences(null),
-                  sg.getStartRes(), sg.getEndRes());
-
+          Conservation c = new Conservation("Group", 3,
+                  sg.getSequences(null), sg.getStartRes(), sg.getEndRes());
           c.calculate();
           c.verdict(false, aps[a].av.getConsPercGaps());
           sg.cs.setConservation(c);
index d738882..34fdabe 100755 (executable)
@@ -32,7 +32,6 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
-import jalview.schemes.ResidueProperties;
 import jalview.schemes.UserColourScheme;
 
 import java.io.BufferedReader;
@@ -1638,9 +1637,9 @@ public class AnnotationFile
         else if (key.equalsIgnoreCase("consThreshold"))
         {
           sg.cs.setConservationInc(Integer.parseInt(value));
-          Conservation c = new Conservation("Group",
-                  ResidueProperties.propHash, 3, sg.getSequences(null),
-                  sg.getStartRes(), sg.getEndRes() + 1);
+          Conservation c = new Conservation("Group", 3,
+                  sg.getSequences(null), sg.getStartRes(),
+                  sg.getEndRes() + 1);
 
           c.calculate();
           c.verdict(false, 25); // TODO: refer to conservation percent threshold
index 2879889..ff7a764 100644 (file)
@@ -152,7 +152,8 @@ public class DatastoreRegistry
     return dsregitem;
   }
 
-  protected void finalize()
+  @Override
+  protected void finalize() throws Throwable
   {
     if (dsObjReg != null)
     {
@@ -171,5 +172,6 @@ public class DatastoreRegistry
     {
       dsItemReg.clear();
     }
+    super.finalize();
   }
 }
index d0d26b0..c235c7a 100755 (executable)
@@ -26,6 +26,7 @@ import jalview.api.analysis.ScoreModelI;
 
 import java.awt.Color;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Hashtable;
@@ -223,36 +224,36 @@ public class ResidueProperties
 
   static
   {
-    aa3Hash.put("ALA", new Integer(0));
-    aa3Hash.put("ARG", new Integer(1));
-    aa3Hash.put("ASN", new Integer(2));
-    aa3Hash.put("ASP", new Integer(3)); // D
-    aa3Hash.put("CYS", new Integer(4));
-    aa3Hash.put("GLN", new Integer(5)); // Q
-    aa3Hash.put("GLU", new Integer(6)); // E
-    aa3Hash.put("GLY", new Integer(7));
-    aa3Hash.put("HIS", new Integer(8));
-    aa3Hash.put("ILE", new Integer(9));
-    aa3Hash.put("LEU", new Integer(10));
-    aa3Hash.put("LYS", new Integer(11));
-    aa3Hash.put("MET", new Integer(12));
-    aa3Hash.put("PHE", new Integer(13));
-    aa3Hash.put("PRO", new Integer(14));
-    aa3Hash.put("SER", new Integer(15));
-    aa3Hash.put("THR", new Integer(16));
-    aa3Hash.put("TRP", new Integer(17));
-    aa3Hash.put("TYR", new Integer(18));
-    aa3Hash.put("VAL", new Integer(19));
+    aa3Hash.put("ALA", Integer.valueOf(0));
+    aa3Hash.put("ARG", Integer.valueOf(1));
+    aa3Hash.put("ASN", Integer.valueOf(2));
+    aa3Hash.put("ASP", Integer.valueOf(3)); // D
+    aa3Hash.put("CYS", Integer.valueOf(4));
+    aa3Hash.put("GLN", Integer.valueOf(5)); // Q
+    aa3Hash.put("GLU", Integer.valueOf(6)); // E
+    aa3Hash.put("GLY", Integer.valueOf(7));
+    aa3Hash.put("HIS", Integer.valueOf(8));
+    aa3Hash.put("ILE", Integer.valueOf(9));
+    aa3Hash.put("LEU", Integer.valueOf(10));
+    aa3Hash.put("LYS", Integer.valueOf(11));
+    aa3Hash.put("MET", Integer.valueOf(12));
+    aa3Hash.put("PHE", Integer.valueOf(13));
+    aa3Hash.put("PRO", Integer.valueOf(14));
+    aa3Hash.put("SER", Integer.valueOf(15));
+    aa3Hash.put("THR", Integer.valueOf(16));
+    aa3Hash.put("TRP", Integer.valueOf(17));
+    aa3Hash.put("TYR", Integer.valueOf(18));
+    aa3Hash.put("VAL", Integer.valueOf(19));
     // IUB Nomenclature for ambiguous peptides
-    aa3Hash.put("ASX", new Integer(20)); // "B";
-    aa3Hash.put("GLX", new Integer(21)); // Z
-    aa3Hash.put("XAA", new Integer(22)); // X unknown
-    aa3Hash.put("-", new Integer(23));
-    aa3Hash.put("*", new Integer(23));
-    aa3Hash.put(".", new Integer(23));
-    aa3Hash.put(" ", new Integer(23));
-    aa3Hash.put("Gap", new Integer(23));
-    aa3Hash.put("UR3", new Integer(24));
+    aa3Hash.put("ASX", Integer.valueOf(20)); // "B";
+    aa3Hash.put("GLX", Integer.valueOf(21)); // Z
+    aa3Hash.put("XAA", Integer.valueOf(22)); // X unknown
+    aa3Hash.put("-", Integer.valueOf(23));
+    aa3Hash.put("*", Integer.valueOf(23));
+    aa3Hash.put(".", Integer.valueOf(23));
+    aa3Hash.put(" ", Integer.valueOf(23));
+    aa3Hash.put("Gap", Integer.valueOf(23));
+    aa3Hash.put("UR3", Integer.valueOf(24));
   }
 
   static
@@ -305,24 +306,24 @@ public class ResidueProperties
 
   public static final Color midBlue = new Color(100, 100, 255);
 
-  public static final Vector scaleColours = new Vector();
-
-  static
-  {
-    scaleColours.addElement(new Color(114, 0, 147));
-    scaleColours.addElement(new Color(156, 0, 98));
-    scaleColours.addElement(new Color(190, 0, 0));
-    scaleColours.addElement(Color.red);
-    scaleColours.addElement(new Color(255, 125, 0));
-    scaleColours.addElement(Color.orange);
-    scaleColours.addElement(new Color(255, 194, 85));
-    scaleColours.addElement(Color.yellow);
-    scaleColours.addElement(new Color(255, 255, 181));
-    scaleColours.addElement(Color.white);
-  }
-
-  public static final Color[] taylor = { new Color(204, 255, 0), // A
-                                                                 // Greenish-yellowy-yellow
+  // not currently in use
+  // public static final Vector<Color> scaleColours = new Vector<Color>();
+  // static
+  // {
+  // scaleColours.addElement(new Color(114, 0, 147));
+  // scaleColours.addElement(new Color(156, 0, 98));
+  // scaleColours.addElement(new Color(190, 0, 0));
+  // scaleColours.addElement(Color.red);
+  // scaleColours.addElement(new Color(255, 125, 0));
+  // scaleColours.addElement(Color.orange);
+  // scaleColours.addElement(new Color(255, 194, 85));
+  // scaleColours.addElement(Color.yellow);
+  // scaleColours.addElement(new Color(255, 255, 181));
+  // scaleColours.addElement(Color.white);
+  // }
+
+  public static final Color[] taylor = { new Color(204, 255, 0),
+      // A Greenish-yellowy-yellow
       new Color(0, 0, 255), // R Blueish-bluey-blue
       new Color(204, 0, 255), // N Blueish-reddy-blue
       new Color(255, 0, 0), // D Reddish-reddy-red
@@ -572,21 +573,21 @@ public class ResidueProperties
       { -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,
           -8, -8, -8, -8, -8, -8, 1 }, };
 
-  public static final Hashtable ssHash = new Hashtable(); // stores the number
-  // value of the aa
-
-  static
-  {
-    ssHash.put("H", Color.magenta);
-    ssHash.put("E", Color.yellow);
-    ssHash.put("-", Color.white);
-    ssHash.put(".", Color.white);
-    ssHash.put("S", Color.cyan);
-    ssHash.put("T", Color.blue);
-    ssHash.put("G", Color.pink);
-    ssHash.put("I", Color.pink);
-    ssHash.put("B", Color.yellow);
-  }
+  // not currently used
+  // public static final Map<String, Color> ssHash = new Hashtable<String,
+  // Color>();
+  // static
+  // {
+  // ssHash.put("H", Color.magenta);
+  // ssHash.put("E", Color.yellow);
+  // ssHash.put("-", Color.white);
+  // ssHash.put(".", Color.white);
+  // ssHash.put("S", Color.cyan);
+  // ssHash.put("T", Color.blue);
+  // ssHash.put("G", Color.pink);
+  // ssHash.put("I", Color.pink);
+  // ssHash.put("B", Color.yellow);
+  // }
 
   /*
    * new Color(60, 136, 238), // U Color.white, // I Color.white, // X
@@ -618,7 +619,6 @@ public class ResidueProperties
     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,
@@ -628,77 +628,10 @@ public class ResidueProperties
 
   public static final float[] pidThresholds = { 80, 60, 40, };
 
-  public static Map<String, List<String>> codonHash = new HashMap<String, List<String>>();
-
-  private static List<String> Lys = new ArrayList<String>();
-
-  private static List<String> Asn = new ArrayList<String>();
-
-  private static List<String> Gln = new ArrayList<String>();
-
-  private static List<String> His = new ArrayList<String>();
-
-  private static List<String> Glu = new ArrayList<String>();
-
-  private static List<String> Asp = new ArrayList<String>();
-
-  private static List<String> Tyr = new ArrayList<String>();
-
-  private static List<String> Thr = new ArrayList<String>();
-
-  private static List<String> Pro = new ArrayList<String>();
-
-  private static List<String> Ala = new ArrayList<String>();
-
-  private static List<String> Ser = new ArrayList<String>();
-
-  private static List<String> Arg = new ArrayList<String>();
-
-  private static List<String> Gly = new ArrayList<String>();
-
-  private static List<String> Trp = new ArrayList<String>();
-
-  private static List<String> Cys = new ArrayList<String>();
-
-  private static List<String> Ile = new ArrayList<String>();
-
-  private static List<String> Met = new ArrayList<String>();
-
-  private static List<String> Leu = new ArrayList<String>();
-
-  private static List<String> Val = new ArrayList<String>();
-
-  private static List<String> Phe = new ArrayList<String>();
-
-  public static List<String> STOP = new ArrayList<String>();
+  public static List<String> STOP = Arrays.asList("TGA", "TAA", "TAG");
 
   public static String START = "ATG";
 
-  static
-  {
-    codonHash.put("K", Lys);
-    codonHash.put("N", Asn);
-    codonHash.put("Q", Gln);
-    codonHash.put("H", His);
-    codonHash.put("E", Glu);
-    codonHash.put("D", Asp);
-    codonHash.put("Y", Tyr);
-    codonHash.put("T", Thr);
-    codonHash.put("P", Pro);
-    codonHash.put("A", Ala);
-    codonHash.put("S", Ser);
-    codonHash.put("R", Arg);
-    codonHash.put("G", Gly);
-    codonHash.put("W", Trp);
-    codonHash.put("C", Cys);
-    codonHash.put("I", Ile);
-    codonHash.put("M", Met);
-    codonHash.put("L", Leu);
-    codonHash.put("V", Val);
-    codonHash.put("F", Phe);
-    codonHash.put("STOP", STOP);
-  }
-
   /**
    * Nucleotide Ambiguity Codes
    */
@@ -885,7 +818,6 @@ public class ResidueProperties
         // make all codons for this combination
         char allres[][] = new char[tpos.length][];
         String _acodon = "";
-        char _anuc;
         for (ipos = 0; ipos < tpos.length; ipos++)
         {
           if (acodon[ipos].length == 0 || tpos[ipos] < 0)
@@ -951,379 +883,294 @@ public class ResidueProperties
         }
       }
     }
-
-  }
-
-  static
-  {
-    Lys.add("AAA");
-    Lys.add("AAG");
-    Asn.add("AAC");
-    Asn.add("AAT");
-
-    Gln.add("CAA");
-    Gln.add("CAG");
-    His.add("CAC");
-    His.add("CAT");
-
-    Glu.add("GAA");
-    Glu.add("GAG");
-    Asp.add("GAC");
-    Asp.add("GAT");
-
-    Tyr.add("TAC");
-    Tyr.add("TAT");
-
-    Thr.add("ACA");
-    Thr.add("ACG");
-    Thr.add("ACC");
-    Thr.add("ACT");
-
-    Pro.add("CCA");
-    Pro.add("CCG");
-    Pro.add("CCC");
-    Pro.add("CCT");
-
-    Ala.add("GCA");
-    Ala.add("GCG");
-    Ala.add("GCC");
-    Ala.add("GCT");
-
-    Ser.add("TCA");
-    Ser.add("TCG");
-    Ser.add("TCC");
-    Ser.add("TCT");
-    Ser.add("AGC");
-    Ser.add("AGT");
-
-    Arg.add("AGA");
-    Arg.add("AGG");
-    Arg.add("CGA");
-    Arg.add("CGG");
-    Arg.add("CGC");
-    Arg.add("CGT");
-
-    Gly.add("GGA");
-    Gly.add("GGG");
-    Gly.add("GGC");
-    Gly.add("GGT");
-
-    STOP.add("TGA");
-    STOP.add("TAA");
-    STOP.add("TAG");
-
-    Trp.add("TGG");
-
-    Cys.add("TGC");
-    Cys.add("TGT");
-
-    Ile.add("ATA");
-    Ile.add("ATC");
-    Ile.add("ATT");
-
-    Met.add("ATG");
-
-    Leu.add("CTA");
-    Leu.add("CTG");
-    Leu.add("CTC");
-    Leu.add("CTT");
-    Leu.add("TTA");
-    Leu.add("TTG");
-
-    Val.add("GTA");
-    Val.add("GTG");
-    Val.add("GTC");
-    Val.add("GTT");
-
-    Phe.add("TTC");
-    Phe.add("TTT");
   }
 
   // Stores residue codes/names and colours and other things
-  public static Hashtable propHash = new Hashtable();
+  public static Map<String, Map<String, Integer>> propHash = new Hashtable<String, Map<String, Integer>>();
 
-  public static Hashtable hydrophobic = new Hashtable();
+  public static Map<String, Integer> hydrophobic = new Hashtable<String, Integer>();
 
-  public static Hashtable polar = new Hashtable();
+  public static Map<String, Integer> polar = new Hashtable<String, Integer>();
 
-  public static Hashtable small = new Hashtable();
+  public static Map<String, Integer> small = new Hashtable<String, Integer>();
 
-  public static Hashtable positive = new Hashtable();
+  public static Map<String, Integer> positive = new Hashtable<String, Integer>();
 
-  public static Hashtable negative = new Hashtable();
+  public static Map<String, Integer> negative = new Hashtable<String, Integer>();
 
-  public static Hashtable charged = new Hashtable();
+  public static Map<String, Integer> charged = new Hashtable<String, Integer>();
 
-  public static Hashtable aromatic = new Hashtable();
+  public static Map<String, Integer> aromatic = new Hashtable<String, Integer>();
 
-  public static Hashtable aliphatic = new Hashtable();
+  public static Map<String, Integer> aliphatic = new Hashtable<String, Integer>();
 
-  public static Hashtable tiny = new Hashtable();
+  public static Map<String, Integer> tiny = new Hashtable<String, Integer>();
 
-  public static Hashtable proline = new Hashtable();
+  public static Map<String, Integer> proline = new Hashtable<String, Integer>();
 
   static
   {
-    hydrophobic.put("I", new Integer(1));
-    hydrophobic.put("L", new Integer(1));
-    hydrophobic.put("V", new Integer(1));
-    hydrophobic.put("C", new Integer(1));
-    hydrophobic.put("A", new Integer(1));
-    hydrophobic.put("G", new Integer(1));
-    hydrophobic.put("M", new Integer(1));
-    hydrophobic.put("F", new Integer(1));
-    hydrophobic.put("Y", new Integer(1));
-    hydrophobic.put("W", new Integer(1));
-    hydrophobic.put("H", new Integer(1));
-    hydrophobic.put("K", new Integer(1));
-    hydrophobic.put("X", new Integer(1));
-    hydrophobic.put("-", new Integer(1));
-    hydrophobic.put("*", new Integer(1));
-    hydrophobic.put("R", new Integer(0));
-    hydrophobic.put("E", new Integer(0));
-    hydrophobic.put("Q", new Integer(0));
-    hydrophobic.put("D", new Integer(0));
-    hydrophobic.put("N", new Integer(0));
-    hydrophobic.put("S", new Integer(0));
-    hydrophobic.put("T", new Integer(0));
-    hydrophobic.put("P", new Integer(0));
+    hydrophobic.put("I", Integer.valueOf(1));
+    hydrophobic.put("L", Integer.valueOf(1));
+    hydrophobic.put("V", Integer.valueOf(1));
+    hydrophobic.put("C", Integer.valueOf(1));
+    hydrophobic.put("A", Integer.valueOf(1));
+    hydrophobic.put("G", Integer.valueOf(1));
+    hydrophobic.put("M", Integer.valueOf(1));
+    hydrophobic.put("F", Integer.valueOf(1));
+    hydrophobic.put("Y", Integer.valueOf(1));
+    hydrophobic.put("W", Integer.valueOf(1));
+    hydrophobic.put("H", Integer.valueOf(1));
+    hydrophobic.put("K", Integer.valueOf(1));
+    hydrophobic.put("X", Integer.valueOf(1));
+    hydrophobic.put("-", Integer.valueOf(1));
+    hydrophobic.put("*", Integer.valueOf(1));
+    hydrophobic.put("R", Integer.valueOf(0));
+    hydrophobic.put("E", Integer.valueOf(0));
+    hydrophobic.put("Q", Integer.valueOf(0));
+    hydrophobic.put("D", Integer.valueOf(0));
+    hydrophobic.put("N", Integer.valueOf(0));
+    hydrophobic.put("S", Integer.valueOf(0));
+    hydrophobic.put("T", Integer.valueOf(0));
+    hydrophobic.put("P", Integer.valueOf(0));
   }
 
   static
   {
-    polar.put("Y", new Integer(1));
-    polar.put("W", new Integer(1));
-    polar.put("H", new Integer(1));
-    polar.put("K", new Integer(1));
-    polar.put("R", new Integer(1));
-    polar.put("E", new Integer(1));
-    polar.put("Q", new Integer(1));
-    polar.put("D", new Integer(1));
-    polar.put("N", new Integer(1));
-    polar.put("S", new Integer(1));
-    polar.put("T", new Integer(1));
-    polar.put("X", new Integer(1));
-    polar.put("-", new Integer(1));
-    polar.put("*", new Integer(1));
-    polar.put("I", new Integer(0));
-    polar.put("L", new Integer(0));
-    polar.put("V", new Integer(0));
-    polar.put("C", new Integer(0));
-    polar.put("A", new Integer(0));
-    polar.put("G", new Integer(0));
-    polar.put("M", new Integer(0));
-    polar.put("F", new Integer(0));
-    polar.put("P", new Integer(0));
+    polar.put("Y", Integer.valueOf(1));
+    polar.put("W", Integer.valueOf(1));
+    polar.put("H", Integer.valueOf(1));
+    polar.put("K", Integer.valueOf(1));
+    polar.put("R", Integer.valueOf(1));
+    polar.put("E", Integer.valueOf(1));
+    polar.put("Q", Integer.valueOf(1));
+    polar.put("D", Integer.valueOf(1));
+    polar.put("N", Integer.valueOf(1));
+    polar.put("S", Integer.valueOf(1));
+    polar.put("T", Integer.valueOf(1));
+    polar.put("X", Integer.valueOf(1));
+    polar.put("-", Integer.valueOf(1));
+    polar.put("*", Integer.valueOf(1));
+    polar.put("I", Integer.valueOf(0));
+    polar.put("L", Integer.valueOf(0));
+    polar.put("V", Integer.valueOf(0));
+    polar.put("C", Integer.valueOf(0));
+    polar.put("A", Integer.valueOf(0));
+    polar.put("G", Integer.valueOf(0));
+    polar.put("M", Integer.valueOf(0));
+    polar.put("F", Integer.valueOf(0));
+    polar.put("P", Integer.valueOf(0));
   }
 
   static
   {
-    small.put("I", new Integer(0));
-    small.put("L", new Integer(0));
-    small.put("V", new Integer(1));
-    small.put("C", new Integer(1));
-    small.put("A", new Integer(1));
-    small.put("G", new Integer(1));
-    small.put("M", new Integer(0));
-    small.put("F", new Integer(0));
-    small.put("Y", new Integer(0));
-    small.put("W", new Integer(0));
-    small.put("H", new Integer(0));
-    small.put("K", new Integer(0));
-    small.put("R", new Integer(0));
-    small.put("E", new Integer(0));
-    small.put("Q", new Integer(0));
-    small.put("D", new Integer(1));
-    small.put("N", new Integer(1));
-    small.put("S", new Integer(1));
-    small.put("T", new Integer(1));
-    small.put("P", new Integer(1));
-    small.put("-", new Integer(1));
-    small.put("*", new Integer(1));
+    small.put("I", Integer.valueOf(0));
+    small.put("L", Integer.valueOf(0));
+    small.put("V", Integer.valueOf(1));
+    small.put("C", Integer.valueOf(1));
+    small.put("A", Integer.valueOf(1));
+    small.put("G", Integer.valueOf(1));
+    small.put("M", Integer.valueOf(0));
+    small.put("F", Integer.valueOf(0));
+    small.put("Y", Integer.valueOf(0));
+    small.put("W", Integer.valueOf(0));
+    small.put("H", Integer.valueOf(0));
+    small.put("K", Integer.valueOf(0));
+    small.put("R", Integer.valueOf(0));
+    small.put("E", Integer.valueOf(0));
+    small.put("Q", Integer.valueOf(0));
+    small.put("D", Integer.valueOf(1));
+    small.put("N", Integer.valueOf(1));
+    small.put("S", Integer.valueOf(1));
+    small.put("T", Integer.valueOf(1));
+    small.put("P", Integer.valueOf(1));
+    small.put("-", Integer.valueOf(1));
+    small.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    positive.put("I", new Integer(0));
-    positive.put("L", new Integer(0));
-    positive.put("V", new Integer(0));
-    positive.put("C", new Integer(0));
-    positive.put("A", new Integer(0));
-    positive.put("G", new Integer(0));
-    positive.put("M", new Integer(0));
-    positive.put("F", new Integer(0));
-    positive.put("Y", new Integer(0));
-    positive.put("W", new Integer(0));
-    positive.put("H", new Integer(1));
-    positive.put("K", new Integer(1));
-    positive.put("R", new Integer(1));
-    positive.put("E", new Integer(0));
-    positive.put("Q", new Integer(0));
-    positive.put("D", new Integer(0));
-    positive.put("N", new Integer(0));
-    positive.put("S", new Integer(0));
-    positive.put("T", new Integer(0));
-    positive.put("P", new Integer(0));
-    positive.put("-", new Integer(1));
-    positive.put("*", new Integer(1));
+    positive.put("I", Integer.valueOf(0));
+    positive.put("L", Integer.valueOf(0));
+    positive.put("V", Integer.valueOf(0));
+    positive.put("C", Integer.valueOf(0));
+    positive.put("A", Integer.valueOf(0));
+    positive.put("G", Integer.valueOf(0));
+    positive.put("M", Integer.valueOf(0));
+    positive.put("F", Integer.valueOf(0));
+    positive.put("Y", Integer.valueOf(0));
+    positive.put("W", Integer.valueOf(0));
+    positive.put("H", Integer.valueOf(1));
+    positive.put("K", Integer.valueOf(1));
+    positive.put("R", Integer.valueOf(1));
+    positive.put("E", Integer.valueOf(0));
+    positive.put("Q", Integer.valueOf(0));
+    positive.put("D", Integer.valueOf(0));
+    positive.put("N", Integer.valueOf(0));
+    positive.put("S", Integer.valueOf(0));
+    positive.put("T", Integer.valueOf(0));
+    positive.put("P", Integer.valueOf(0));
+    positive.put("-", Integer.valueOf(1));
+    positive.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    negative.put("I", new Integer(0));
-    negative.put("L", new Integer(0));
-    negative.put("V", new Integer(0));
-    negative.put("C", new Integer(0));
-    negative.put("A", new Integer(0));
-    negative.put("G", new Integer(0));
-    negative.put("M", new Integer(0));
-    negative.put("F", new Integer(0));
-    negative.put("Y", new Integer(0));
-    negative.put("W", new Integer(0));
-    negative.put("H", new Integer(0));
-    negative.put("K", new Integer(0));
-    negative.put("R", new Integer(0));
-    negative.put("E", new Integer(1));
-    negative.put("Q", new Integer(0));
-    negative.put("D", new Integer(1));
-    negative.put("N", new Integer(0));
-    negative.put("S", new Integer(0));
-    negative.put("T", new Integer(0));
-    negative.put("P", new Integer(0));
-    negative.put("-", new Integer(1));
-    negative.put("*", new Integer(1));
+    negative.put("I", Integer.valueOf(0));
+    negative.put("L", Integer.valueOf(0));
+    negative.put("V", Integer.valueOf(0));
+    negative.put("C", Integer.valueOf(0));
+    negative.put("A", Integer.valueOf(0));
+    negative.put("G", Integer.valueOf(0));
+    negative.put("M", Integer.valueOf(0));
+    negative.put("F", Integer.valueOf(0));
+    negative.put("Y", Integer.valueOf(0));
+    negative.put("W", Integer.valueOf(0));
+    negative.put("H", Integer.valueOf(0));
+    negative.put("K", Integer.valueOf(0));
+    negative.put("R", Integer.valueOf(0));
+    negative.put("E", Integer.valueOf(1));
+    negative.put("Q", Integer.valueOf(0));
+    negative.put("D", Integer.valueOf(1));
+    negative.put("N", Integer.valueOf(0));
+    negative.put("S", Integer.valueOf(0));
+    negative.put("T", Integer.valueOf(0));
+    negative.put("P", Integer.valueOf(0));
+    negative.put("-", Integer.valueOf(1));
+    negative.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    charged.put("I", new Integer(0));
-    charged.put("L", new Integer(0));
-    charged.put("V", new Integer(0));
-    charged.put("C", new Integer(0));
-    charged.put("A", new Integer(0));
-    charged.put("G", new Integer(0));
-    charged.put("M", new Integer(0));
-    charged.put("F", new Integer(0));
-    charged.put("Y", new Integer(0));
-    charged.put("W", new Integer(0));
-    charged.put("H", new Integer(1));
-    charged.put("K", new Integer(1));
-    charged.put("R", new Integer(1));
-    charged.put("E", new Integer(1));
-    charged.put("Q", new Integer(0));
-    charged.put("D", new Integer(1));
-    charged.put("N", new Integer(0)); // Asparagine is polar but not charged.
+    charged.put("I", Integer.valueOf(0));
+    charged.put("L", Integer.valueOf(0));
+    charged.put("V", Integer.valueOf(0));
+    charged.put("C", Integer.valueOf(0));
+    charged.put("A", Integer.valueOf(0));
+    charged.put("G", Integer.valueOf(0));
+    charged.put("M", Integer.valueOf(0));
+    charged.put("F", Integer.valueOf(0));
+    charged.put("Y", Integer.valueOf(0));
+    charged.put("W", Integer.valueOf(0));
+    charged.put("H", Integer.valueOf(1));
+    charged.put("K", Integer.valueOf(1));
+    charged.put("R", Integer.valueOf(1));
+    charged.put("E", Integer.valueOf(1));
+    charged.put("Q", Integer.valueOf(0));
+    charged.put("D", Integer.valueOf(1));
+    charged.put("N", Integer.valueOf(0)); // Asparagine is polar but not
+                                          // charged.
                                       // Alternative would be charged and
                                       // negative (in basic form)?
-    charged.put("S", new Integer(0));
-    charged.put("T", new Integer(0));
-    charged.put("P", new Integer(0));
-    charged.put("-", new Integer(1));
-    charged.put("*", new Integer(1));
+    charged.put("S", Integer.valueOf(0));
+    charged.put("T", Integer.valueOf(0));
+    charged.put("P", Integer.valueOf(0));
+    charged.put("-", Integer.valueOf(1));
+    charged.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    aromatic.put("I", new Integer(0));
-    aromatic.put("L", new Integer(0));
-    aromatic.put("V", new Integer(0));
-    aromatic.put("C", new Integer(0));
-    aromatic.put("A", new Integer(0));
-    aromatic.put("G", new Integer(0));
-    aromatic.put("M", new Integer(0));
-    aromatic.put("F", new Integer(1));
-    aromatic.put("Y", new Integer(1));
-    aromatic.put("W", new Integer(1));
-    aromatic.put("H", new Integer(1));
-    aromatic.put("K", new Integer(0));
-    aromatic.put("R", new Integer(0));
-    aromatic.put("E", new Integer(0));
-    aromatic.put("Q", new Integer(0));
-    aromatic.put("D", new Integer(0));
-    aromatic.put("N", new Integer(0));
-    aromatic.put("S", new Integer(0));
-    aromatic.put("T", new Integer(0));
-    aromatic.put("P", new Integer(0));
-    aromatic.put("-", new Integer(1));
-    aromatic.put("*", new Integer(1));
+    aromatic.put("I", Integer.valueOf(0));
+    aromatic.put("L", Integer.valueOf(0));
+    aromatic.put("V", Integer.valueOf(0));
+    aromatic.put("C", Integer.valueOf(0));
+    aromatic.put("A", Integer.valueOf(0));
+    aromatic.put("G", Integer.valueOf(0));
+    aromatic.put("M", Integer.valueOf(0));
+    aromatic.put("F", Integer.valueOf(1));
+    aromatic.put("Y", Integer.valueOf(1));
+    aromatic.put("W", Integer.valueOf(1));
+    aromatic.put("H", Integer.valueOf(1));
+    aromatic.put("K", Integer.valueOf(0));
+    aromatic.put("R", Integer.valueOf(0));
+    aromatic.put("E", Integer.valueOf(0));
+    aromatic.put("Q", Integer.valueOf(0));
+    aromatic.put("D", Integer.valueOf(0));
+    aromatic.put("N", Integer.valueOf(0));
+    aromatic.put("S", Integer.valueOf(0));
+    aromatic.put("T", Integer.valueOf(0));
+    aromatic.put("P", Integer.valueOf(0));
+    aromatic.put("-", Integer.valueOf(1));
+    aromatic.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    aliphatic.put("I", new Integer(1));
-    aliphatic.put("L", new Integer(1));
-    aliphatic.put("V", new Integer(1));
-    aliphatic.put("C", new Integer(0));
-    aliphatic.put("A", new Integer(0));
-    aliphatic.put("G", new Integer(0));
-    aliphatic.put("M", new Integer(0));
-    aliphatic.put("F", new Integer(0));
-    aliphatic.put("Y", new Integer(0));
-    aliphatic.put("W", new Integer(0));
-    aliphatic.put("H", new Integer(0));
-    aliphatic.put("K", new Integer(0));
-    aliphatic.put("R", new Integer(0));
-    aliphatic.put("E", new Integer(0));
-    aliphatic.put("Q", new Integer(0));
-    aliphatic.put("D", new Integer(0));
-    aliphatic.put("N", new Integer(0));
-    aliphatic.put("S", new Integer(0));
-    aliphatic.put("T", new Integer(0));
-    aliphatic.put("P", new Integer(0));
-    aliphatic.put("-", new Integer(1));
-    aliphatic.put("*", new Integer(1));
+    aliphatic.put("I", Integer.valueOf(1));
+    aliphatic.put("L", Integer.valueOf(1));
+    aliphatic.put("V", Integer.valueOf(1));
+    aliphatic.put("C", Integer.valueOf(0));
+    aliphatic.put("A", Integer.valueOf(0));
+    aliphatic.put("G", Integer.valueOf(0));
+    aliphatic.put("M", Integer.valueOf(0));
+    aliphatic.put("F", Integer.valueOf(0));
+    aliphatic.put("Y", Integer.valueOf(0));
+    aliphatic.put("W", Integer.valueOf(0));
+    aliphatic.put("H", Integer.valueOf(0));
+    aliphatic.put("K", Integer.valueOf(0));
+    aliphatic.put("R", Integer.valueOf(0));
+    aliphatic.put("E", Integer.valueOf(0));
+    aliphatic.put("Q", Integer.valueOf(0));
+    aliphatic.put("D", Integer.valueOf(0));
+    aliphatic.put("N", Integer.valueOf(0));
+    aliphatic.put("S", Integer.valueOf(0));
+    aliphatic.put("T", Integer.valueOf(0));
+    aliphatic.put("P", Integer.valueOf(0));
+    aliphatic.put("-", Integer.valueOf(1));
+    aliphatic.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    tiny.put("I", new Integer(0));
-    tiny.put("L", new Integer(0));
-    tiny.put("V", new Integer(0));
-    tiny.put("C", new Integer(0));
-    tiny.put("A", new Integer(1));
-    tiny.put("G", new Integer(1));
-    tiny.put("M", new Integer(0));
-    tiny.put("F", new Integer(0));
-    tiny.put("Y", new Integer(0));
-    tiny.put("W", new Integer(0));
-    tiny.put("H", new Integer(0));
-    tiny.put("K", new Integer(0));
-    tiny.put("R", new Integer(0));
-    tiny.put("E", new Integer(0));
-    tiny.put("Q", new Integer(0));
-    tiny.put("D", new Integer(0));
-    tiny.put("N", new Integer(0));
-    tiny.put("S", new Integer(1));
-    tiny.put("T", new Integer(0));
-    tiny.put("P", new Integer(0));
-    tiny.put("-", new Integer(1));
-    tiny.put("*", new Integer(1));
+    tiny.put("I", Integer.valueOf(0));
+    tiny.put("L", Integer.valueOf(0));
+    tiny.put("V", Integer.valueOf(0));
+    tiny.put("C", Integer.valueOf(0));
+    tiny.put("A", Integer.valueOf(1));
+    tiny.put("G", Integer.valueOf(1));
+    tiny.put("M", Integer.valueOf(0));
+    tiny.put("F", Integer.valueOf(0));
+    tiny.put("Y", Integer.valueOf(0));
+    tiny.put("W", Integer.valueOf(0));
+    tiny.put("H", Integer.valueOf(0));
+    tiny.put("K", Integer.valueOf(0));
+    tiny.put("R", Integer.valueOf(0));
+    tiny.put("E", Integer.valueOf(0));
+    tiny.put("Q", Integer.valueOf(0));
+    tiny.put("D", Integer.valueOf(0));
+    tiny.put("N", Integer.valueOf(0));
+    tiny.put("S", Integer.valueOf(1));
+    tiny.put("T", Integer.valueOf(0));
+    tiny.put("P", Integer.valueOf(0));
+    tiny.put("-", Integer.valueOf(1));
+    tiny.put("*", Integer.valueOf(1));
   }
 
   static
   {
-    proline.put("I", new Integer(0));
-    proline.put("L", new Integer(0));
-    proline.put("V", new Integer(0));
-    proline.put("C", new Integer(0));
-    proline.put("A", new Integer(0));
-    proline.put("G", new Integer(0));
-    proline.put("M", new Integer(0));
-    proline.put("F", new Integer(0));
-    proline.put("Y", new Integer(0));
-    proline.put("W", new Integer(0));
-    proline.put("H", new Integer(0));
-    proline.put("K", new Integer(0));
-    proline.put("R", new Integer(0));
-    proline.put("E", new Integer(0));
-    proline.put("Q", new Integer(0));
-    proline.put("D", new Integer(0));
-    proline.put("N", new Integer(0));
-    proline.put("S", new Integer(0));
-    proline.put("T", new Integer(0));
-    proline.put("P", new Integer(1));
-    proline.put("-", new Integer(1));
-    proline.put("*", new Integer(1));
+    proline.put("I", Integer.valueOf(0));
+    proline.put("L", Integer.valueOf(0));
+    proline.put("V", Integer.valueOf(0));
+    proline.put("C", Integer.valueOf(0));
+    proline.put("A", Integer.valueOf(0));
+    proline.put("G", Integer.valueOf(0));
+    proline.put("M", Integer.valueOf(0));
+    proline.put("F", Integer.valueOf(0));
+    proline.put("Y", Integer.valueOf(0));
+    proline.put("W", Integer.valueOf(0));
+    proline.put("H", Integer.valueOf(0));
+    proline.put("K", Integer.valueOf(0));
+    proline.put("R", Integer.valueOf(0));
+    proline.put("E", Integer.valueOf(0));
+    proline.put("Q", Integer.valueOf(0));
+    proline.put("D", Integer.valueOf(0));
+    proline.put("N", Integer.valueOf(0));
+    proline.put("S", Integer.valueOf(0));
+    proline.put("T", Integer.valueOf(0));
+    proline.put("P", Integer.valueOf(1));
+    proline.put("-", Integer.valueOf(1));
+    proline.put("*", Integer.valueOf(1));
   }
 
   static
@@ -1368,11 +1215,9 @@ public class ResidueProperties
         propMatrixF[i][j] = 0;
         propMatrixPos[i][j] = 0;
         propMatrixEpos[i][j] = 0;
-        for (Enumeration<String> en = propHash.keys(); en.hasMoreElements();)
+        for (String ph : propHash.keySet())
         {
-          String ph = en.nextElement();
-          Map<String, Integer> pph = (Map<String, Integer>) propHash
-                  .get(ph);
+          Map<String, Integer> pph = propHash.get(ph);
           if (pph.get(ic) != null && pph.get(jc) != null)
           {
             int icp = pph.get(ic).intValue(), jcp = pph.get(jc).intValue();
@@ -1470,22 +1315,8 @@ public class ResidueProperties
     return pog;
   }
 
-  public static Vector getCodons(String res)
-  {
-    if (codonHash.containsKey(res))
-    {
-      return (Vector) codonHash.get(res);
-    }
-
-    return null;
-  }
-
   public static String codonTranslate(String lccodon)
   {
-    if (false)
-    {
-      return _codonTranslate(lccodon);
-    }
     String cdn = codonHash2.get(lccodon.toUpperCase());
     if ("*".equals(cdn))
     {
@@ -1494,25 +1325,6 @@ public class ResidueProperties
     return cdn;
   }
 
-  public static String _codonTranslate(String lccodon)
-  {
-    String codon = lccodon.toUpperCase();
-    // all base ambiguity codes yield an 'X' amino acid residue
-    if (codon.indexOf('X') > -1 || codon.indexOf('N') > -1)
-    {
-      return "X";
-    }
-    for (String key : codonHash.keySet())
-    {
-      if (codonHash.get(key).contains(codon))
-      {
-        return key;
-      }
-    }
-
-    return null;
-  }
-
   public static int[][] getDefaultPeptideMatrix()
   {
     return ResidueProperties.getBLOSUM62();
@@ -1560,10 +1372,10 @@ public class ResidueProperties
     return pog;
   }
 
-  public static Hashtable toDssp3State;
+  public static Hashtable<String, String> toDssp3State;
   static
   {
-    toDssp3State = new Hashtable();
+    toDssp3State = new Hashtable<String, String>();
     toDssp3State.put("H", "H");
     toDssp3State.put("E", "E");
     toDssp3State.put("C", " ");
@@ -1593,7 +1405,7 @@ public class ResidueProperties
       String ssc = ssstring.substring(i, i + 1);
       if (toDssp3State.containsKey(ssc))
       {
-        ss.append((String) toDssp3State.get(ssc));
+        ss.append(toDssp3State.get(ssc));
       }
       else
       {
@@ -2921,51 +2733,47 @@ public class ResidueProperties
 
   }
 
-  public static String getCanonicalAminoAcid(String aa)
+  public static String getCanonicalAminoAcid(String aA)
   {
-    String canonical = modifications.get(aa);
-    return canonical == null ? aa : canonical;
+    String canonical = modifications.get(aA);
+    return canonical == null ? aA : canonical;
   }
 
   // main method generates perl representation of residue property hash
   // / cut here
   public static void main(String[] args)
   {
-    Hashtable aa = new Hashtable();
+    Hashtable<String, Vector<String>> aaProps = new Hashtable<String, Vector<String>>();
     System.out.println("my %aa = {");
     // invert property hashes
-    Enumeration prop = propHash.keys();
-    while (prop.hasMoreElements())
+    for (String pname : propHash.keySet())
     {
-      String pname = (String) prop.nextElement();
-      Hashtable phash = (Hashtable) propHash.get(pname);
-      Enumeration res = phash.keys();
-      while (res.hasMoreElements())
+      Map<String, Integer> phash = propHash.get(pname);
+      for (String rname : phash.keySet())
       {
-        String rname = (String) res.nextElement();
-        Vector aprops = (Vector) aa.get(rname);
+        Vector<String> aprops = aaProps.get(rname);
         if (aprops == null)
         {
-          aprops = new Vector();
-          aa.put(rname, aprops);
+          aprops = new Vector<String>();
+          aaProps.put(rname, aprops);
         }
-        Integer hasprop = (Integer) phash.get(rname);
+        Integer hasprop = phash.get(rname);
         if (hasprop.intValue() == 1)
         {
           aprops.addElement(pname);
         }
       }
     }
-    Enumeration res = aa.keys();
+    Enumeration<String> res = aaProps.keys();
     while (res.hasMoreElements())
     {
-      String rname = (String) res.nextElement();
+      String rname = res.nextElement();
 
       System.out.print("'" + rname + "' => [");
-      Enumeration props = ((Vector) aa.get(rname)).elements();
+      Enumeration<String> props = aaProps.get(rname).elements();
       while (props.hasMoreElements())
       {
-        System.out.print("'" + (String) props.nextElement() + "'");
+        System.out.print("'" + props.nextElement() + "'");
         if (props.hasMoreElements())
         {
           System.out.println(", ");
@@ -2981,15 +2789,15 @@ public class ResidueProperties
   /**
    * Returns a list of residue characters for the specified inputs
    * 
-   * @param nucleotide
+   * @param forNucleotide
    * @param includeAmbiguous
    * @return
    */
-  public static List<String> getResidues(boolean nucleotide,
+  public static List<String> getResidues(boolean forNucleotide,
           boolean includeAmbiguous)
   {
     List<String> result = new ArrayList<String>();
-    if (nucleotide)
+    if (forNucleotide)
     {
       for (String nuc : nucleotideName.keySet())
       {
index cb43d90..80319be 100644 (file)
@@ -44,7 +44,6 @@ import jalview.datamodel.SequenceI;
 import jalview.schemes.Blosum62ColourScheme;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.PIDColourScheme;
-import jalview.schemes.ResidueProperties;
 import jalview.structure.CommandListener;
 import jalview.structure.StructureSelectionManager;
 import jalview.structure.VamsasSource;
@@ -1864,9 +1863,9 @@ public abstract class AlignmentViewport implements AlignViewportI,
       cs.setConsensus(hconsensus);
       if (cs.conservationApplied())
       {
-        cs.setConservation(Conservation.calculateConservation("All",
-                ResidueProperties.propHash, 3, alignment.getSequences(), 0,
-                alignment.getWidth(), false, getConsPercGaps(), false));
+        cs.setConservation(Conservation.calculateConservation("All", 3,
+                alignment.getSequences(), 0, alignment.getWidth(), false,
+                getConsPercGaps(), false));
       }
     }
 
index 5c303fd..11ec521 100644 (file)
@@ -94,8 +94,7 @@ public class ConservationThread extends AlignCalcWorker
       }
       try
       {
-        cons = Conservation.calculateConservation("All",
-                jalview.schemes.ResidueProperties.propHash, 3,
+        cons = Conservation.calculateConservation("All", 3,
                 alignment.getSequences(), 0, alWidth - 1, false,
                 ConsPercGaps, quality != null);
       } catch (IndexOutOfBoundsException x)
index ff2f2aa..45b56c2 100644 (file)
@@ -55,43 +55,4 @@ public class DnaCodonTests
               + codon.getKey() + "\", \"" + codon.getValue() + "\");");
     }
   }
-
-  @Test(groups = { "Functional" })
-  public void checkOldCodonagainstNewCodonTable()
-  {
-    // note - this test will be removed once the old codon table (including
-    // Vectors) is removed
-    String additional = "", failtrans = "", differentTr = "";
-    for (String amacid : ResidueProperties.codonHash.keySet())
-    {
-      for (String codon : ResidueProperties.codonHash.get(amacid))
-      {
-        String trans = ResidueProperties.codonTranslate(codon);
-        String oldtrans = ResidueProperties._codonTranslate(codon);
-        if (trans == null)
-        {
-          additional += "\nOld translation table includes additional codons for "
-                  + amacid + " : " + codon;
-        }
-        if (oldtrans == null)
-        {
-          failtrans += ("\nold translation routine failed for old translation entry (aa was "
-                  + amacid + " codon was " + codon + ")");
-        }
-        if (!oldtrans.equals(trans))
-        {
-          differentTr += ("\nDifferent translation for old and new routines: "
-                  + amacid
-                  + " "
-                  + codon
-                  + " => expected "
-                  + oldtrans
-                  + " and got " + trans);
-        }
-      }
-    }
-    assertTrue("" + additional + "\n" + failtrans + "\n" + differentTr,
-            additional.length() == 0 && failtrans.length() == 0
-                    && differentTr.length() == 0);
-  }
 }