From c3c305755d392741176209a0274a47897ac4d8a8 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Tue, 10 Oct 2006 10:28:05 +0000 Subject: [PATCH] aaIndex replaces aaHash --- src/jalview/analysis/AlignSeq.java | 13 +- src/jalview/datamodel/BinarySequence.java | 8 +- src/jalview/gui/UserDefinedColours.java | 2 +- src/jalview/io/AlignFile.java | 3 +- src/jalview/schemes/Blosum62ColourScheme.java | 9 +- src/jalview/schemes/ClustalxColourScheme.java | 5 +- src/jalview/schemes/Consensus.java | 3 +- src/jalview/schemes/NucleotideColourScheme.java | 4 +- src/jalview/schemes/PIDColourScheme.java | 3 +- src/jalview/schemes/ResidueColourScheme.java | 12 +- src/jalview/schemes/ResidueProperties.java | 176 ++++++++++++----------- src/jalview/schemes/ScoreColourScheme.java | 2 +- src/jalview/schemes/UserColourScheme.java | 8 +- 13 files changed, 128 insertions(+), 120 deletions(-) diff --git a/src/jalview/analysis/AlignSeq.java b/src/jalview/analysis/AlignSeq.java index 9b4dfef..0af85f1 100755 --- a/src/jalview/analysis/AlignSeq.java +++ b/src/jalview/analysis/AlignSeq.java @@ -751,17 +751,24 @@ public class AlignSeq for (int i = 0; i < s.length(); i++) { - String ss = s.substring(i, i + 1).toUpperCase(); + // String ss = s.substring(i, i + 1).toUpperCase(); + char c = s.charAt(i); + if ('a' <= c && c <= 'z') + { + // TO UPPERCASE !!! + c -= ('a' - 'A'); + } + try { if (type.equals("pep")) { - seq1[i] = ((Integer) ResidueProperties.aaHash.get(ss)).intValue(); + seq1[i] = ResidueProperties.aaIndex[c]; } else if (type.equals("dna")) { - seq1[i] = ((Integer) dnaHash.get(ss)).intValue(); + seq1[i] = ResidueProperties.nucleotideIndex[c]; } if (seq1[i] > 23) diff --git a/src/jalview/datamodel/BinarySequence.java b/src/jalview/datamodel/BinarySequence.java index 423e401..af10e1d 100755 --- a/src/jalview/datamodel/BinarySequence.java +++ b/src/jalview/datamodel/BinarySequence.java @@ -64,9 +64,7 @@ public class BinarySequence extends Sequence try { - aanum = ((Integer) ResidueProperties.getAAHash().get(getSequence() - .substring(i, - i + 1))).intValue(); + aanum = ResidueProperties.aaIndex[getSequence().charAt(i)]; } catch (NullPointerException e) { @@ -101,9 +99,7 @@ public class BinarySequence extends Sequence try { - aanum = ((Integer) ResidueProperties.getAAHash().get(getSequence() - .substring(i, - i + 1))).intValue(); + aanum = ResidueProperties.aaIndex[getSequence().charAt(i)]; } catch (NullPointerException e) { diff --git a/src/jalview/gui/UserDefinedColours.java b/src/jalview/gui/UserDefinedColours.java index d2741a9..86c39f9 100755 --- a/src/jalview/gui/UserDefinedColours.java +++ b/src/jalview/gui/UserDefinedColours.java @@ -583,7 +583,7 @@ public class UserDefinedColours extends GUserDefinedColours } else { - index = ((Integer)ResidueProperties.aaHash.get(name)).intValue(); + index = ResidueProperties.aaIndex[name.charAt(0)]; } if(index == -1) continue; diff --git a/src/jalview/io/AlignFile.java b/src/jalview/io/AlignFile.java index df9d535..0691d82 100755 --- a/src/jalview/io/AlignFile.java +++ b/src/jalview/io/AlignFile.java @@ -114,8 +114,7 @@ public abstract class AlignFile extends FileParse protected boolean isValidProteinSequence(String sequence) { for (int i = 0; i < sequence.length(); i++) - if (!jalview.schemes.ResidueProperties.aaHash.containsKey( - String.valueOf(sequence.charAt(i)))) + if (jalview.schemes.ResidueProperties.aaIndex[sequence.charAt(i)]==-1) { invalidCharacter = sequence.charAt(i); return false; diff --git a/src/jalview/schemes/Blosum62ColourScheme.java b/src/jalview/schemes/Blosum62ColourScheme.java index ef6fbb7..ec5d4f1 100755 --- a/src/jalview/schemes/Blosum62ColourScheme.java +++ b/src/jalview/schemes/Blosum62ColourScheme.java @@ -20,6 +20,7 @@ package jalview.schemes; import java.awt.*; +import jalview.analysis.AAFrequency; public class Blosum62ColourScheme extends ResidueColourScheme @@ -38,15 +39,17 @@ public class Blosum62ColourScheme s = String.valueOf( res -= ('a' - 'A') ); } - - if ( j>=consensus.length || (threshold != 0 && !aboveThreshold(s, j) )) + if (consensus == null || + j >= consensus.length || + consensus[j] == null || + (threshold != 0 && !aboveThreshold(s, j))) { return Color.white; } if (!jalview.util.Comparison.isGap( res )) { - String max = (String) consensus[j].get("maxResidue"); + String max = (String) consensus[j].get(AAFrequency.MAXRESIDUE); if (max.indexOf(s) > -1) { diff --git a/src/jalview/schemes/ClustalxColourScheme.java b/src/jalview/schemes/ClustalxColourScheme.java index 9bc76c2..04610ef 100755 --- a/src/jalview/schemes/ClustalxColourScheme.java +++ b/src/jalview/schemes/ClustalxColourScheme.java @@ -86,8 +86,7 @@ public class ClustalxColourScheme } else { - res = ( (Integer) ResidueProperties.aaHash.get(seq.charAt(i) + - "")).intValue(); + res = ResidueProperties.aaIndex[seq.charAt(i)]; } cons2[i][res]++; @@ -258,7 +257,7 @@ public class ClustalxColourScheme return Color.white; } - int i = ( (Integer) ResidueProperties.aaHash.get(s)).intValue(); + int i = ResidueProperties.aaIndex[s.charAt(0)]; currentColour = Color.white; diff --git a/src/jalview/schemes/Consensus.java b/src/jalview/schemes/Consensus.java index 92dde08..520196f 100755 --- a/src/jalview/schemes/Consensus.java +++ b/src/jalview/schemes/Consensus.java @@ -70,8 +70,7 @@ public class Consensus while (i < s.length()) { - out[i] = ( (Integer) ResidueProperties.aaHash.get(s.substring(i, - i + 1))).intValue(); + out[i] = ResidueProperties.aaIndex[s.charAt(i)]; i++; } diff --git a/src/jalview/schemes/NucleotideColourScheme.java b/src/jalview/schemes/NucleotideColourScheme.java index 9768d9a..6aaef7d 100755 --- a/src/jalview/schemes/NucleotideColourScheme.java +++ b/src/jalview/schemes/NucleotideColourScheme.java @@ -47,7 +47,7 @@ public class NucleotideColourScheme extends ResidueColourScheme public Color findColour(String n) { // System.out.println("called"); log.debug - return colors[((Integer) (ResidueProperties.nucleotideHash.get(n))).intValue()]; + return colors[ResidueProperties.nucleotideIndex[n.charAt(0)]]; } /** @@ -64,7 +64,7 @@ public class NucleotideColourScheme extends ResidueColourScheme { try { - currentColour = colors[((Integer) (ResidueProperties.nucleotideHash.get(n))).intValue()]; + currentColour = colors[ ResidueProperties.nucleotideIndex[n.charAt(0)]]; } catch (Exception ex) { diff --git a/src/jalview/schemes/PIDColourScheme.java b/src/jalview/schemes/PIDColourScheme.java index a79f083..e09745a 100755 --- a/src/jalview/schemes/PIDColourScheme.java +++ b/src/jalview/schemes/PIDColourScheme.java @@ -21,6 +21,7 @@ package jalview.schemes; import java.awt.*; import jalview.datamodel.*; +import jalview.analysis.AAFrequency; public class PIDColourScheme extends ResidueColourScheme @@ -56,7 +57,7 @@ public class PIDColourScheme if(consensus.length<=j) return Color.white; - if ( (Integer.parseInt(consensus[j].get("maxCount").toString()) != -1) && + if ( (Integer.parseInt(consensus[j].get(AAFrequency.MAXCOUNT).toString()) != -1) && consensus[j].contains(s)) { sc = ( (Float) consensus[j].get(ignoreGaps)).floatValue(); diff --git a/src/jalview/schemes/ResidueColourScheme.java b/src/jalview/schemes/ResidueColourScheme.java index a993802..7c36208 100755 --- a/src/jalview/schemes/ResidueColourScheme.java +++ b/src/jalview/schemes/ResidueColourScheme.java @@ -41,7 +41,7 @@ public class ResidueColourScheme implements ColourSchemeI int threshold = 0; /* Set when threshold colouring to either pid_gaps or pid_nogaps*/ - protected String ignoreGaps = "pid_gaps"; + protected String ignoreGaps = AAFrequency.PID_GAPS; /** Consenus as a hashtable array */ Hashtable [] consensus; @@ -83,7 +83,7 @@ public class ResidueColourScheme implements ColourSchemeI */ public Color findColour(String aa) { - return colors[((Integer) (ResidueProperties.aaHash.get(aa))).intValue()]; + return colors[ResidueProperties.aaIndex[aa.charAt(0)]]; } @@ -91,7 +91,7 @@ public class ResidueColourScheme implements ColourSchemeI public Color findColour(String s, int j) { - int index = ((Integer) (ResidueProperties.aaHash.get(s))).intValue(); + int index = ResidueProperties.aaIndex[s.charAt(0)]; if ((threshold == 0) || aboveThreshold(ResidueProperties.aa[index], j)) { @@ -129,9 +129,9 @@ public class ResidueColourScheme implements ColourSchemeI { threshold = ct; if(ignoreGaps) - this.ignoreGaps = "pid_nogaps"; + this.ignoreGaps = AAFrequency.PID_NOGAPS; else - this.ignoreGaps = "pid_gaps"; + this.ignoreGaps = AAFrequency.PID_GAPS; } /** @@ -154,7 +154,7 @@ public class ResidueColourScheme implements ColourSchemeI } - if ((((Integer) consensus[j].get("maxCount")).intValue() != -1) && + if ((((Integer) consensus[j].get(AAFrequency.MAXCOUNT)).intValue() != -1) && consensus[j].contains(s)) { if (((Float)consensus[j].get(ignoreGaps)).floatValue() >= threshold) diff --git a/src/jalview/schemes/ResidueProperties.java b/src/jalview/schemes/ResidueProperties.java index 87efddc..4699dc6 100755 --- a/src/jalview/schemes/ResidueProperties.java +++ b/src/jalview/schemes/ResidueProperties.java @@ -25,90 +25,99 @@ import java.awt.*; public class ResidueProperties { //Stores residue codes/names and colours and other things - public static final Hashtable aaHash = new Hashtable(); // stores the number value of the aa + 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 nucleotideHash = new Hashtable(); public static final Hashtable nucleotideName = new Hashtable(); + static { - aaHash.put("A", new Integer(0)); - aaHash.put("R", new Integer(1)); - aaHash.put("N", new Integer(2)); - aaHash.put("D", new Integer(3)); - aaHash.put("C", new Integer(4)); - aaHash.put("Q", new Integer(5)); - aaHash.put("E", new Integer(6)); - aaHash.put("G", new Integer(7)); - aaHash.put("H", new Integer(8)); - aaHash.put("I", new Integer(9)); - aaHash.put("L", new Integer(10)); - aaHash.put("K", new Integer(11)); - aaHash.put("M", new Integer(12)); - aaHash.put("F", new Integer(13)); - aaHash.put("P", new Integer(14)); - aaHash.put("S", new Integer(15)); - aaHash.put("T", new Integer(16)); - aaHash.put("W", new Integer(17)); - aaHash.put("Y", new Integer(18)); - aaHash.put("V", new Integer(19)); - aaHash.put("B", new Integer(20)); - aaHash.put("Z", new Integer(21)); - aaHash.put("X", new Integer(22)); - aaHash.put("U", new Integer(22)); - aaHash.put("a", new Integer(0)); - aaHash.put("r", new Integer(1)); - aaHash.put("n", new Integer(2)); - aaHash.put("d", new Integer(3)); - aaHash.put("c", new Integer(4)); - aaHash.put("q", new Integer(5)); - aaHash.put("e", new Integer(6)); - aaHash.put("g", new Integer(7)); - aaHash.put("h", new Integer(8)); - aaHash.put("i", new Integer(9)); - aaHash.put("l", new Integer(10)); - aaHash.put("k", new Integer(11)); - aaHash.put("m", new Integer(12)); - aaHash.put("f", new Integer(13)); - aaHash.put("p", new Integer(14)); - aaHash.put("s", new Integer(15)); - aaHash.put("t", new Integer(16)); - aaHash.put("w", new Integer(17)); - aaHash.put("y", new Integer(18)); - aaHash.put("v", new Integer(19)); - aaHash.put("b", new Integer(20)); - aaHash.put("z", new Integer(21)); - aaHash.put("x", new Integer(22)); - aaHash.put("u", new Integer(22)); - aaHash.put("-", new Integer(23)); - aaHash.put("*", new Integer(23)); - aaHash.put(".", new Integer(23)); - aaHash.put(" ", new Integer(23)); + aaIndex = new int[132]; + for(int i=0; i<132; i++) + aaIndex[i] = -1; + + aaIndex['A'] = 0; + aaIndex['R'] = 1; + aaIndex['N'] = 2; + aaIndex['D'] = 3; + aaIndex['C'] = 4; + aaIndex['Q'] = 5; + aaIndex['E'] = 6; + aaIndex['G'] = 7; + aaIndex['H'] = 8; + aaIndex['I'] = 9; + aaIndex['L'] = 10; + aaIndex['K'] = 11; + aaIndex['M'] = 12; + aaIndex['F'] = 13; + aaIndex['P'] = 14; + aaIndex['S'] = 15; + aaIndex['T'] = 16; + aaIndex['W'] = 17; + aaIndex['Y'] = 18; + aaIndex['V'] = 19; + aaIndex['B'] = 20; + aaIndex['Z'] = 21; + aaIndex['X'] = 22; + aaIndex['U'] = 22; + aaIndex['a'] = 0; + aaIndex['r'] = 1; + aaIndex['n'] = 2; + aaIndex['d'] = 3; + aaIndex['c'] = 4; + aaIndex['q'] = 5; + aaIndex['e'] = 6; + aaIndex['g'] = 7; + aaIndex['h'] = 8; + aaIndex['i'] = 9; + aaIndex['l'] = 10; + aaIndex['k'] = 11; + aaIndex['m'] = 12; + aaIndex['f'] = 13; + aaIndex['p'] = 14; + aaIndex['s'] = 15; + aaIndex['t'] = 16; + aaIndex['w'] = 17; + aaIndex['y'] = 18; + aaIndex['v'] = 19; + aaIndex['b'] = 20; + aaIndex['z'] = 21; + aaIndex['x'] = 22; + aaIndex['u'] = 22; + aaIndex['-'] = 23; + aaIndex['*'] = 23; + aaIndex['.'] = 23; + aaIndex[' '] = 23; } static { - nucleotideHash.put("A", new Integer(0)); - nucleotideHash.put("a", new Integer(0)); - nucleotideHash.put("C", new Integer(1)); - nucleotideHash.put("c", new Integer(1)); - nucleotideHash.put("G", new Integer(2)); - nucleotideHash.put("g", new Integer(2)); - nucleotideHash.put("T", new Integer(3)); - nucleotideHash.put("t", new Integer(3)); - nucleotideHash.put("U", new Integer(4)); - nucleotideHash.put("u", new Integer(4)); - nucleotideHash.put("I", new Integer(5)); - nucleotideHash.put("i", new Integer(5)); - nucleotideHash.put("X", new Integer(6)); - nucleotideHash.put("x", new Integer(6)); - nucleotideHash.put("R", new Integer(7)); - nucleotideHash.put("r", new Integer(7)); - nucleotideHash.put("Y", new Integer(8)); - nucleotideHash.put("y", new Integer(8)); - nucleotideHash.put("N", new Integer(9)); - nucleotideHash.put("n", new Integer(9)); + nucleotideIndex = new int[132]; + for (int i = 0; i < 132; i++) + nucleotideIndex[i] = -1; + + nucleotideIndex['A'] = 0; + nucleotideIndex['a'] = 0; + nucleotideIndex['C'] = 1; + nucleotideIndex['c'] = 1; + nucleotideIndex['G'] = 2; + nucleotideIndex['g'] = 2; + nucleotideIndex['T'] = 3; + nucleotideIndex['t'] = 3; + nucleotideIndex['U'] = 4; + nucleotideIndex['u'] = 4; + nucleotideIndex['I'] = 5; + nucleotideIndex['i'] = 5; + nucleotideIndex['X'] = 6; + nucleotideIndex['x'] = 6; + nucleotideIndex['R'] = 7; + nucleotideIndex['r'] = 7; + nucleotideIndex['Y'] = 8; + nucleotideIndex['y'] = 8; + nucleotideIndex['N'] = 9; + nucleotideIndex['n'] = 9; nucleotideName.put("A", "Adenine"); @@ -1134,11 +1143,6 @@ public class ResidueProperties return hyd; } - public static Hashtable getAAHash() - { - return aaHash; - } - public static Hashtable getAA3Hash() { return aa3Hash; @@ -1156,9 +1160,10 @@ public class ResidueProperties public static int getPAM250(String A1, String A2) { - Integer pog1 = (Integer) aaHash.get(A1); - Integer pog2 = (Integer) aaHash.get(A2); - int pog = ResidueProperties.PAM250[pog1.intValue()][pog2.intValue()]; + int a = aaIndex[A1.charAt(0)]; + int b = aaIndex[A2.charAt(0)]; + + int pog = ResidueProperties.PAM250[a][b]; return pog; } @@ -1169,9 +1174,10 @@ public class ResidueProperties try { - Integer pog1 = (Integer) aaHash.get(A1); - Integer pog2 = (Integer) aaHash.get(A2); - pog = ResidueProperties.BLOSUM62[pog1.intValue()][pog2.intValue()]; + int a = aaIndex[A1.charAt(0)]; + int b = aaIndex[A2.charAt(0)]; + + pog = ResidueProperties.BLOSUM62[a][b]; } catch (Exception e) { diff --git a/src/jalview/schemes/ScoreColourScheme.java b/src/jalview/schemes/ScoreColourScheme.java index e238d79..8d7a45a 100755 --- a/src/jalview/schemes/ScoreColourScheme.java +++ b/src/jalview/schemes/ScoreColourScheme.java @@ -99,7 +99,7 @@ public class ScoreColourScheme extends ResidueColourScheme return Color.white; } - currentColour = colors[((Integer) ResidueProperties.aaHash.get(s)).intValue()]; + currentColour = colors[ ResidueProperties.aaIndex[s.charAt(0)] ]; if(conservationColouring) applyConservation(j); diff --git a/src/jalview/schemes/UserColourScheme.java b/src/jalview/schemes/UserColourScheme.java index bd70c5d..007d358 100755 --- a/src/jalview/schemes/UserColourScheme.java +++ b/src/jalview/schemes/UserColourScheme.java @@ -147,12 +147,10 @@ public class UserColourScheme { token = st2.nextToken(); - if (ResidueProperties.aaHash.get(token) == null) + if (ResidueProperties.aaIndex[token.charAt(0)]==-1) continue; - int colIndex = - ( (Integer) ResidueProperties.aaHash. - get(token)).intValue(); + int colIndex = ResidueProperties.aaIndex[token.charAt(0)]; //AW - LOWER CASE DISABLED IN 2.1.01 bug fix release @@ -192,7 +190,7 @@ public class UserColourScheme public Color findColour(String s, int j) { - int index = ((Integer) (ResidueProperties.aaHash.get(s))).intValue(); + int index = ResidueProperties.aaIndex[s.charAt(0)]; if ((threshold == 0) || aboveThreshold(ResidueProperties.aa[index], j)) { -- 1.7.10.2