X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FResidueProperties.java;h=18b11c114499848d77de2bd8c0790929c1a3ce04;hb=bc18effe68ba80213a6d03ca7e6175adc6be71d6;hp=e659ddeae61bb982761c08b6e7b14d83e7d1d014;hpb=db93a1adcbe0a4eaaf06e0a70ade0d6c5c1961c3;p=jalview.git diff --git a/src/jalview/schemes/ResidueProperties.java b/src/jalview/schemes/ResidueProperties.java index e659dde..18b11c1 100755 --- a/src/jalview/schemes/ResidueProperties.java +++ b/src/jalview/schemes/ResidueProperties.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) - * Copyright (C) 2015 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,10 +20,6 @@ */ package jalview.schemes; -import jalview.analysis.scoremodels.FeatureScoreModel; -import jalview.analysis.scoremodels.PIDScoreModel; -import jalview.api.analysis.ScoreModelI; - import java.awt.Color; import java.util.ArrayList; import java.util.Arrays; @@ -36,8 +32,6 @@ import java.util.Vector; public class ResidueProperties { - 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 @@ -45,14 +39,14 @@ public class ResidueProperties public static final int[] purinepyrimidineIndex; - public static final Map aa3Hash = new HashMap(); + public static final Map aa3Hash = new HashMap<>(); - public static final Map aa2Triplet = new HashMap(); + public static final Map aa2Triplet = new HashMap<>(); - public static final Map nucleotideName = new HashMap(); + public static final Map nucleotideName = new HashMap<>(); // lookup from modified amino acid (e.g. MSE) to canonical form (e.g. MET) - public static final Map modifications = new HashMap(); + public static final Map modifications = new HashMap<>(); static { @@ -222,10 +216,14 @@ public class ResidueProperties purinepyrimidineIndex['n'] = 2; } + private static final Integer ONE = Integer.valueOf(1); + + private static final Integer ZERO = Integer.valueOf(0); + static { - aa3Hash.put("ALA", Integer.valueOf(0)); - aa3Hash.put("ARG", Integer.valueOf(1)); + aa3Hash.put("ALA", ZERO); + aa3Hash.put("ARG", ONE); aa3Hash.put("ASN", Integer.valueOf(2)); aa3Hash.put("ASP", Integer.valueOf(3)); // D aa3Hash.put("CYS", Integer.valueOf(4)); @@ -365,8 +363,11 @@ public class ResidueProperties }; // Added for PurinePyrimidineColourScheme - public static final Color[] purinepyrimidine = { - new Color(255, 131, 250), // A, G, R purines purplish/orchid + public static final Color[] purinepyrimidine = { new Color(255, 131, 250), // A, + // G, + // R + // purines + // purplish/orchid new Color(64, 224, 208), // C,U, T, Y pyrimidines turquoise Color.white, // all other nucleotides Color.white // Gap @@ -381,7 +382,7 @@ public class ResidueProperties Color.green, // Q Color.red, // E Color.magenta, // G - midBlue,// Color.red, // H + midBlue, // Color.red, // H Color.pink, // I Color.pink, // L midBlue, // K @@ -428,9 +429,9 @@ public class ResidueProperties 0.0 // X }; - public static final double[] helix = { 1.42, 0.98, 0.67, 1.01, 0.70, - 1.11, 1.51, 0.57, 1.00, 1.08, 1.21, 1.16, 1.45, 1.13, 0.57, 0.77, - 0.83, 1.08, 0.69, 1.06, 0.84, 1.31, 1.00, 0.0 }; + public static final double[] helix = { 1.42, 0.98, 0.67, 1.01, 0.70, 1.11, + 1.51, 0.57, 1.00, 1.08, 1.21, 1.16, 1.45, 1.13, 0.57, 0.77, 0.83, + 1.08, 0.69, 1.06, 0.84, 1.31, 1.00, 0.0 }; public static final double helixmin = 0.57; @@ -452,9 +453,9 @@ public class ResidueProperties public static final double turnmax = 1.56; - public static final double[] buried = { 1.7, 0.1, 0.4, 0.4, 4.6, 0.3, - 0.3, 1.8, 0.8, 3.1, 2.4, 0.05, 1.9, 2.2, 0.6, 0.8, 0.7, 1.6, 0.5, - 2.9, 0.4, 0.3, 1.358, 0.00 }; + public static final double[] buried = { 1.7, 0.1, 0.4, 0.4, 4.6, 0.3, 0.3, + 1.8, 0.8, 3.1, 2.4, 0.05, 1.9, 2.2, 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, + 0.3, 1.358, 0.00 }; public static final double buriedmin = 0.05; @@ -473,105 +474,6 @@ public class ResidueProperties // public static final double hydmax = 1.38; // public static final double hydmin = -2.53; - private static final int[][] BLOSUM62 = { - { 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, - -2, 0, -2, -1, 0, -4 }, - { -1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, - -2, -3, -1, 0, -1, -4 }, - { -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, - -3, 3, 0, -1, -4 }, - { -2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, - -3, -3, 4, 1, -1, -4 }, - { 0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, - -2, -2, -1, -3, -3, -2, -4 }, - { -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, - -2, 0, 3, -1, -4 }, - { -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, - -2, 1, 4, -1, -4 }, - { 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, - -3, -3, -1, -2, -1, -4 }, - { -2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, - 2, -3, 0, 0, -1, -4 }, - { -1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, - -1, 3, -3, -3, -1, -4 }, - { -1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, - -1, 1, -4, -3, -1, -4 }, - { -1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, - -2, -2, 0, 1, -1, -4 }, - { -1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, - -1, 1, -3, -1, -1, -4 }, - { -2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, - 3, -1, -3, -3, -1, -4 }, - { -1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, - -4, -3, -2, -2, -1, -2, -4 }, - { 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, - -2, 0, 0, 0, -4 }, - { 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, - -2, 0, -1, -1, 0, -4 }, - { -3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, - 11, 2, -3, -4, -3, -2, -4 }, - { -2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, - 2, 7, -1, -3, -2, -1, -4 }, - { 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, - -1, 4, -3, -2, -1, -4 }, - { -2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, - -3, -3, 4, 1, -1, -4 }, - { -1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2, - -2, 1, 4, -1, -4 }, - { 0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, - -2, -1, -1, -1, -1, -1, -4 }, - { -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - -4, -4, -4, -4, -4, -4, 1 }, }; - - static final int[][] PAM250 = { - { 2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, - 0, 0, 0, 0, -8 }, - { -2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4, - -2, -1, 0, -1, -8 }, - { 0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2, - 2, 1, 0, -8 }, - { 0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, - -2, 3, 3, -1, -8 }, - { -2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2, - -8, 0, -2, -4, -5, -3, -8 }, - { 0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4, - -2, 1, 3, -1, -8 }, - { 0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, - -2, 3, 3, -1, -8 }, - { 1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5, - -1, 0, 0, -1, -8 }, - { -1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0, - -2, 1, 2, -1, -8 }, - { -1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5, - -1, 4, -2, -2, -1, -8 }, - { -2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2, - -1, 2, -3, -3, -1, -8 }, - { -1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, - -2, 1, 0, -1, -8 }, - { -1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, - -2, 2, -2, -2, -1, -8 }, - { -3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, - 7, -1, -4, -5, -2, -8 }, - { 1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5, - -1, -1, 0, -1, -8 }, - { 1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, - -1, 0, 0, 0, -8 }, - { 1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, - 0, 0, -1, 0, -8 }, - { -6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, - 17, 0, -6, -5, -6, -4, -8 }, - { -3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0, - 10, -2, -3, -4, -2, -8 }, - { 0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6, - -2, 4, -2, -2, -1, -8 }, - { 0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, - -2, 3, 2, -1, -8 }, - { 0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, - -2, 2, 3, -1, -8 }, - { 0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4, - -2, -1, -1, -1, -1, -8 }, - { -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, 1 }, }; // not currently used // public static final Map ssHash = new Hashtable STOP = Arrays.asList("TGA", "TAA", "TAG"); + public static List STOP_CODONS = Arrays.asList("TGA", "TAA", "TAG"); public static String START = "ATG"; /** * Nucleotide Ambiguity Codes */ - public static final Map ambiguityCodes = new Hashtable(); + public static final Map ambiguityCodes = new Hashtable<>(); /** * Codon triplets with additional symbols for unambiguous codons that include * ambiguity codes */ - public static final Hashtable codonHash2 = new Hashtable(); + public static final Hashtable codonHash2 = new Hashtable<>(); /** * all ambiguity codes for a given base */ - public final static Hashtable> _ambiguityCodes = new Hashtable>(); + public final static Hashtable> _ambiguityCodes = new Hashtable<>(); static { @@ -770,7 +640,7 @@ public class ResidueProperties List codesfor = _ambiguityCodes.get(r); if (codesfor == null) { - _ambiguityCodes.put(r, codesfor = new ArrayList()); + _ambiguityCodes.put(r, codesfor = new ArrayList<>()); } if (!codesfor.contains(acode.getKey())) { @@ -778,16 +648,16 @@ public class ResidueProperties } else { - System.err - .println("Inconsistency in the IUBMB ambiguity code nomenclature table: collision for " + System.err.println( + "Inconsistency in the IUBMB ambiguity code nomenclature table: collision for " + acode.getKey() + " in residue " + r); } } } // and programmatically add in the ambiguity codes that yield the same amino // acid - String[] unambcodons = codonHash2.keySet().toArray( - new String[codonHash2.size()]); + String[] unambcodons = codonHash2.keySet() + .toArray(new String[codonHash2.size()]); for (String codon : unambcodons) { String residue = codonHash2.get(codon); @@ -806,7 +676,8 @@ public class ResidueProperties } } // enumerate all combinations and test for veracity of translation - int tpos[] = new int[codon.length()], cpos[] = new int[codon.length()]; + int tpos[] = new int[codon.length()], + cpos[] = new int[codon.length()]; for (int i = 0; i < tpos.length; i++) { tpos[i] = -1; @@ -886,291 +757,291 @@ public class ResidueProperties } // Stores residue codes/names and colours and other things - public static Map> propHash = new Hashtable>(); + public static Map> propHash = new Hashtable<>(); - public static Map hydrophobic = new Hashtable(); + public static Map hydrophobic = new Hashtable<>(); - public static Map polar = new Hashtable(); + public static Map polar = new Hashtable<>(); - public static Map small = new Hashtable(); + public static Map small = new Hashtable<>(); - public static Map positive = new Hashtable(); + public static Map positive = new Hashtable<>(); - public static Map negative = new Hashtable(); + public static Map negative = new Hashtable<>(); - public static Map charged = new Hashtable(); + public static Map charged = new Hashtable<>(); - public static Map aromatic = new Hashtable(); + public static Map aromatic = new Hashtable<>(); - public static Map aliphatic = new Hashtable(); + public static Map aliphatic = new Hashtable<>(); - public static Map tiny = new Hashtable(); + public static Map tiny = new Hashtable<>(); - public static Map proline = new Hashtable(); + public static Map proline = new Hashtable<>(); static { - 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)); + hydrophobic.put("I", ONE); + hydrophobic.put("L", ONE); + hydrophobic.put("V", ONE); + hydrophobic.put("C", ONE); + hydrophobic.put("A", ONE); + hydrophobic.put("G", ONE); + hydrophobic.put("M", ONE); + hydrophobic.put("F", ONE); + hydrophobic.put("Y", ONE); + hydrophobic.put("W", ONE); + hydrophobic.put("H", ONE); + hydrophobic.put("K", ONE); + hydrophobic.put("X", ONE); + hydrophobic.put("-", ONE); + hydrophobic.put("*", ONE); + hydrophobic.put("R", ZERO); + hydrophobic.put("E", ZERO); + hydrophobic.put("Q", ZERO); + hydrophobic.put("D", ZERO); + hydrophobic.put("N", ZERO); + hydrophobic.put("S", ZERO); + hydrophobic.put("T", ONE); + hydrophobic.put("P", ZERO); } static { - 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)); + polar.put("Y", ONE); + polar.put("W", ONE); + polar.put("H", ONE); + polar.put("K", ONE); + polar.put("R", ONE); + polar.put("E", ONE); + polar.put("Q", ONE); + polar.put("D", ONE); + polar.put("N", ONE); + polar.put("S", ONE); + polar.put("T", ONE); + polar.put("X", ONE); + polar.put("-", ONE); + polar.put("*", ONE); + polar.put("I", ZERO); + polar.put("L", ZERO); + polar.put("V", ZERO); + polar.put("C", ZERO); + polar.put("A", ZERO); + polar.put("G", ZERO); + polar.put("M", ZERO); + polar.put("F", ZERO); + polar.put("P", ZERO); } static { - 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)); + small.put("I", ZERO); + small.put("L", ZERO); + small.put("V", ONE); + small.put("C", ONE); + small.put("A", ONE); + small.put("G", ONE); + small.put("M", ZERO); + small.put("F", ZERO); + small.put("Y", ZERO); + small.put("W", ZERO); + small.put("H", ZERO); + small.put("K", ZERO); + small.put("R", ZERO); + small.put("E", ZERO); + small.put("Q", ZERO); + small.put("D", ONE); + small.put("N", ONE); + small.put("S", ONE); + small.put("T", ONE); + small.put("P", ONE); + small.put("-", ONE); + small.put("*", ONE); } static { - 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)); + positive.put("I", ZERO); + positive.put("L", ZERO); + positive.put("V", ZERO); + positive.put("C", ZERO); + positive.put("A", ZERO); + positive.put("G", ZERO); + positive.put("M", ZERO); + positive.put("F", ZERO); + positive.put("Y", ZERO); + positive.put("W", ZERO); + positive.put("H", ONE); + positive.put("K", ONE); + positive.put("R", ONE); + positive.put("E", ZERO); + positive.put("Q", ZERO); + positive.put("D", ZERO); + positive.put("N", ZERO); + positive.put("S", ZERO); + positive.put("T", ZERO); + positive.put("P", ZERO); + positive.put("-", ONE); + positive.put("*", ONE); } static { - 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)); + negative.put("I", ZERO); + negative.put("L", ZERO); + negative.put("V", ZERO); + negative.put("C", ZERO); + negative.put("A", ZERO); + negative.put("G", ZERO); + negative.put("M", ZERO); + negative.put("F", ZERO); + negative.put("Y", ZERO); + negative.put("W", ZERO); + negative.put("H", ZERO); + negative.put("K", ZERO); + negative.put("R", ZERO); + negative.put("E", ONE); + negative.put("Q", ZERO); + negative.put("D", ONE); + negative.put("N", ZERO); + negative.put("S", ZERO); + negative.put("T", ZERO); + negative.put("P", ZERO); + negative.put("-", ONE); + negative.put("*", ONE); } static { - 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. + charged.put("I", ZERO); + charged.put("L", ZERO); + charged.put("V", ZERO); + charged.put("C", ZERO); + charged.put("A", ZERO); + charged.put("G", ZERO); + charged.put("M", ZERO); + charged.put("F", ZERO); + charged.put("Y", ZERO); + charged.put("W", ZERO); + charged.put("H", ONE); + charged.put("K", ONE); + charged.put("R", ONE); + charged.put("E", ONE); + charged.put("Q", ZERO); + charged.put("D", ONE); + charged.put("N", ZERO); // Asparagine is polar but not + // charged. // Alternative would be charged and // negative (in basic form)? - 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)); + charged.put("S", ZERO); + charged.put("T", ZERO); + charged.put("P", ZERO); + charged.put("-", ONE); + charged.put("*", ONE); } static { - 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)); + aromatic.put("I", ZERO); + aromatic.put("L", ZERO); + aromatic.put("V", ZERO); + aromatic.put("C", ZERO); + aromatic.put("A", ZERO); + aromatic.put("G", ZERO); + aromatic.put("M", ZERO); + aromatic.put("F", ONE); + aromatic.put("Y", ONE); + aromatic.put("W", ONE); + aromatic.put("H", ONE); + aromatic.put("K", ZERO); + aromatic.put("R", ZERO); + aromatic.put("E", ZERO); + aromatic.put("Q", ZERO); + aromatic.put("D", ZERO); + aromatic.put("N", ZERO); + aromatic.put("S", ZERO); + aromatic.put("T", ZERO); + aromatic.put("P", ZERO); + aromatic.put("-", ONE); + aromatic.put("*", ONE); } static { - 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)); + aliphatic.put("I", ONE); + aliphatic.put("L", ONE); + aliphatic.put("V", ONE); + aliphatic.put("C", ZERO); + aliphatic.put("A", ZERO); + aliphatic.put("G", ZERO); + aliphatic.put("M", ZERO); + aliphatic.put("F", ZERO); + aliphatic.put("Y", ZERO); + aliphatic.put("W", ZERO); + aliphatic.put("H", ZERO); + aliphatic.put("K", ZERO); + aliphatic.put("R", ZERO); + aliphatic.put("E", ZERO); + aliphatic.put("Q", ZERO); + aliphatic.put("D", ZERO); + aliphatic.put("N", ZERO); + aliphatic.put("S", ZERO); + aliphatic.put("T", ZERO); + aliphatic.put("P", ZERO); + aliphatic.put("-", ONE); + aliphatic.put("*", ONE); } static { - 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)); + tiny.put("I", ZERO); + tiny.put("L", ZERO); + tiny.put("V", ZERO); + tiny.put("C", ZERO); + tiny.put("A", ONE); + tiny.put("G", ONE); + tiny.put("M", ZERO); + tiny.put("F", ZERO); + tiny.put("Y", ZERO); + tiny.put("W", ZERO); + tiny.put("H", ZERO); + tiny.put("K", ZERO); + tiny.put("R", ZERO); + tiny.put("E", ZERO); + tiny.put("Q", ZERO); + tiny.put("D", ZERO); + tiny.put("N", ZERO); + tiny.put("S", ONE); + tiny.put("T", ZERO); + tiny.put("P", ZERO); + tiny.put("-", ONE); + tiny.put("*", ONE); } static { - 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)); + proline.put("I", ZERO); + proline.put("L", ZERO); + proline.put("V", ZERO); + proline.put("C", ZERO); + proline.put("A", ZERO); + proline.put("G", ZERO); + proline.put("M", ZERO); + proline.put("F", ZERO); + proline.put("Y", ZERO); + proline.put("W", ZERO); + proline.put("H", ZERO); + proline.put("K", ZERO); + proline.put("R", ZERO); + proline.put("E", ZERO); + proline.put("Q", ZERO); + proline.put("D", ZERO); + proline.put("N", ZERO); + proline.put("S", ZERO); + proline.put("T", ZERO); + proline.put("P", ONE); + proline.put("-", ONE); + proline.put("*", ONE); } static @@ -1188,7 +1059,9 @@ public class ResidueProperties } static { - int[][] propMatrixF = new int[maxProteinIndex][maxProteinIndex], propMatrixPos = new int[maxProteinIndex][maxProteinIndex], propMatrixEpos = new int[maxProteinIndex][maxProteinIndex]; + int[][] propMatrixF = new int[maxProteinIndex][maxProteinIndex], + propMatrixPos = new int[maxProteinIndex][maxProteinIndex], + propMatrixEpos = new int[maxProteinIndex][maxProteinIndex]; for (int i = 0; i < maxProteinIndex; i++) { int maxF = 0, maxP = 0, maxEP = 0; @@ -1247,15 +1120,6 @@ public class ResidueProperties propMatrixPos[i][i] = maxP; propMatrixEpos[i][i] = maxEP; } - // JAL-1512 comment out physicochemical score matrices for 2.8.1 release - // scoreMatrices.put("Conservation Pos", new - // ScoreMatrix("Conservation Pos",propMatrixPos,0)); - // scoreMatrices.put("Conservation Both", new - // ScoreMatrix("Conservation Both",propMatrixF,0)); - // scoreMatrices.put("Conservation EnhPos", new - // ScoreMatrix("Conservation EnhPos",propMatrixEpos,0)); - scoreMatrices.put("PID", new PIDScoreModel()); - scoreMatrices.put("Displayed Features", new FeatureScoreModel()); } private ResidueProperties() @@ -1282,137 +1146,61 @@ public class ResidueProperties return aa3Hash; } - public static int[][] getDNA() - { - return ResidueProperties.DNA; - } - - public static int[][] getBLOSUM62() - { - return ResidueProperties.BLOSUM62; - } - - public static int getPAM250(String A1, String A2) - { - return getPAM250(A1.charAt(0), A2.charAt(0)); - } - - public static int getBLOSUM62(char c1, char c2) - { - int pog = 0; - - try - { - int a = aaIndex[c1]; - int b = aaIndex[c2]; - - pog = ResidueProperties.BLOSUM62[a][b]; - } catch (Exception e) - { - // System.out.println("Unknown residue in " + A1 + " " + A2); - } - - return pog; - } - public static String codonTranslate(String lccodon) { String cdn = codonHash2.get(lccodon.toUpperCase()); if ("*".equals(cdn)) { - return "STOP"; + return STOP; } return cdn; } - public static int[][] getDefaultPeptideMatrix() - { - return ResidueProperties.getBLOSUM62(); - } - - public static int[][] getDefaultDnaMatrix() - { - return ResidueProperties.getDNA(); - } - - /** - * get a ScoreMatrix based on its string name - * - * @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 && val instanceof ScoreMatrix) - { - return (ScoreMatrix) val; - } - return null; - } - - /** - * get a ScoreModel based on its string name - * - * @param pwtype - * @return scoremodel of type pwtype or null + /* + * lookup of (A-Z) alternative secondary structure symbols' + * equivalents in DSSP3 notation */ - public static ScoreModelI getScoreModel(String pwtype) - { - return scoreMatrices.get(pwtype); - } - - 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; + private static char[] 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", " "); + toDssp3State = new char[9]; // for 'A'-'I'; extend if needed + Arrays.fill(toDssp3State, ' '); + toDssp3State['B' - 'A'] = 'E'; + toDssp3State['E' - 'A'] = 'E'; + toDssp3State['G' - 'A'] = 'H'; + toDssp3State['H' - 'A'] = 'H'; + toDssp3State['I' - 'A'] = 'H'; } /** * translate from other dssp secondary structure alphabets to 3-state * - * @param ssstring - * @return ssstring as a three-state secondary structure assignment. + * @param ssString + * @return ssstring */ - public static String getDssp3state(String ssstring) + public static String getDssp3state(String ssString) { - if (ssstring == null) + if (ssString == null) { return null; } - StringBuffer ss = new StringBuffer(); - for (int i = 0; i < ssstring.length(); i++) + int lookupSize = toDssp3State.length; + int len = ssString.length(); + char[] trans = new char[len]; + for (int i = 0; i < len; i++) { - String ssc = ssstring.substring(i, i + 1); - if (toDssp3State.containsKey(ssc)) + char c = ssString.charAt(i); + int index = c - 'A'; + if (index < 0 || index >= lookupSize) { - ss.append(toDssp3State.get(ssc)); + trans[i] = ' '; } else { - ss.append(" "); + trans[i] = toDssp3State[index]; } } - return ss.toString(); + return new String(trans); } static @@ -2743,7 +2531,7 @@ public class ResidueProperties // / cut here public static void main(String[] args) { - Hashtable> aaProps = new Hashtable>(); + Hashtable> aaProps = new Hashtable<>(); System.out.println("my %aa = {"); // invert property hashes for (String pname : propHash.keySet()) @@ -2754,7 +2542,7 @@ public class ResidueProperties Vector aprops = aaProps.get(rname); if (aprops == null) { - aprops = new Vector(); + aprops = new Vector<>(); aaProps.put(rname, aprops); } Integer hasprop = phash.get(rname); @@ -2796,7 +2584,7 @@ public class ResidueProperties public static List getResidues(boolean forNucleotide, boolean includeAmbiguous) { - List result = new ArrayList(); + List result = new ArrayList<>(); if (forNucleotide) { for (String nuc : nucleotideName.keySet()) @@ -2849,8 +2637,8 @@ public class ResidueProperties { return '0'; } - Integer index = ResidueProperties.aa3Hash.get(threeLetterCode - .toUpperCase()); + Integer index = ResidueProperties.aa3Hash + .get(threeLetterCode.toUpperCase()); return index == null ? '0' : aa[index].charAt(0); } }