X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAAFrequency.java;h=1f43788a88fbcec95ccfd7a6b54ef95f66fa966c;hb=c4dd9fbd848d3ffaa88134fb06bed794d69bc6f3;hp=ad1fe4e9b7911137ac7fd5e086d47b135b0c9a7b;hpb=f24dacb1da56fccf05d684e2f4899facec2aecf7;p=jalview.git diff --git a/src/jalview/analysis/AAFrequency.java b/src/jalview/analysis/AAFrequency.java index ad1fe4e..1f43788 100755 --- a/src/jalview/analysis/AAFrequency.java +++ b/src/jalview/analysis/AAFrequency.java @@ -1,139 +1,139 @@ -/* -* Jalview - A Sequence Alignment Editor and Viewer -* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -*/ -package jalview.analysis; - -import jalview.datamodel.*; - -import java.util.*; - - -/** - * Takes in a vector of sequences and column start and column end - * and returns a vector of size (end-start+1). Each element of the - * vector contains a hashtable with the keys being residues and - * the values being the count of each residue in that column. - * This class is used extensively in calculating alignment colourschemes - * that depend on the amount of conservation in each alignment column. - * @author $author$ - * @version $Revision$ - */ -public class AAFrequency -{ - /** Takes in a vector of sequences and column start and column end - * and returns a vector of size (end-start+1). Each element of the - * vector contains a hashtable with the keys being residues and - * the values being the count of each residue in that column. - * This class is used extensively in calculating alignment colourschemes - * that depend on the amount of conservation in each alignment column. */ - public static final Vector calculate(Vector sequences, int start, int end) - { - Vector result = new Vector(); - Hashtable residueHash; - int count, maxCount, nongap, i, j, jSize = sequences.size(); - String maxResidue, sequence, res; - float percentage; - - for (i = start; i <= end; i++) - { - residueHash = new Hashtable(); - maxCount = 0; - maxResidue = "-"; - nongap = 0; - - for (j = 0; j < jSize; j++) - { - if (sequences.elementAt(j) instanceof Sequence) - { - sequence = ((Sequence) sequences.elementAt(j)).getSequence(); - - if (sequence.length() > i) - { - res = String.valueOf(Character.toUpperCase(sequence.charAt(i))); - - if (jalview.util.Comparison.isGap(res.charAt(0))) - { - res = "-"; // we always use this for gaps in the property vectors - } - else - { nongap++; } - - if (residueHash.containsKey(res)) - { - count = ((Integer) residueHash.get(res)).intValue(); - count++; - - if (!jalview.util.Comparison.isGap(res.charAt(0)) && - (count >= maxCount)) - { - if (count > maxCount) - { - maxResidue = res; - } - else if (maxResidue.indexOf(res) == -1) - { - maxResidue += res; - } - - maxCount = count; - } - - residueHash.put(res, new Integer(count)); - } - else - { - residueHash.put(res, new Integer(1)); - } - } - else - { - if (residueHash.containsKey("-")) - { - count = ((Integer) residueHash.get("-")).intValue(); - count++; - residueHash.put("-", new Integer(count)); - } - else - { - residueHash.put("-", new Integer(1)); - } - } - } - } - - residueHash.put("maxCount", new Integer(maxCount)); - residueHash.put("maxResidue", maxResidue); - - - //Size is redundant at present if we calculate percentage here - //residueHash.put("size", new Integer(jSize)); - //residueHash.put("nogaps", new Integer(nongap)); - - percentage = ((float)maxCount*100) / (float)jSize; - residueHash.put("pid_gaps", new Float(percentage) ); - - percentage = ((float)maxCount*100) / (float)nongap; - residueHash.put("pid_nogaps", new Float(percentage) ); - result.addElement(residueHash); - } - - - - return result; - } -} +/* +* Jalview - A Sequence Alignment Editor and Viewer +* Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +*/ +package jalview.analysis; + +import jalview.datamodel.*; + +import java.util.*; + + +/** + * Takes in a vector of sequences and column start and column end + * and returns a vector of size (end-start+1). Each element of the + * vector contains a hashtable with the keys being residues and + * the values being the count of each residue in that column. + * This class is used extensively in calculating alignment colourschemes + * that depend on the amount of conservation in each alignment column. + * @author $author$ + * @version $Revision$ + */ +public class AAFrequency +{ + /** Takes in a vector of sequences and column start and column end + * and returns a vector of size (end-start+1). Each element of the + * vector contains a hashtable with the keys being residues and + * the values being the count of each residue in that column. + * This class is used extensively in calculating alignment colourschemes + * that depend on the amount of conservation in each alignment column. */ + public static final Vector calculate(Vector sequences, int start, int end) + { + Vector result = new Vector(); + Hashtable residueHash; + int count, maxCount, nongap, i, j, jSize = sequences.size(); + String maxResidue, sequence, res; + float percentage; + + for (i = start; i <= end; i++) + { + residueHash = new Hashtable(); + maxCount = 0; + maxResidue = "-"; + nongap = 0; + + for (j = 0; j < jSize; j++) + { + if (sequences.elementAt(j) instanceof Sequence) + { + sequence = ((Sequence) sequences.elementAt(j)).getSequence(); + + if (sequence.length() > i) + { + res = String.valueOf(Character.toUpperCase(sequence.charAt(i))); + + if (jalview.util.Comparison.isGap(res.charAt(0))) + { + res = "-"; // we always use this for gaps in the property vectors + } + else + { nongap++; } + + if (residueHash.containsKey(res)) + { + count = ((Integer) residueHash.get(res)).intValue(); + count++; + + if (!jalview.util.Comparison.isGap(res.charAt(0)) && + (count >= maxCount)) + { + if (count > maxCount) + { + maxResidue = res; + } + else if (maxResidue.indexOf(res) == -1) + { + maxResidue += res; + } + + maxCount = count; + } + + residueHash.put(res, new Integer(count)); + } + else + { + residueHash.put(res, new Integer(1)); + } + } + else + { + if (residueHash.containsKey("-")) + { + count = ((Integer) residueHash.get("-")).intValue(); + count++; + residueHash.put("-", new Integer(count)); + } + else + { + residueHash.put("-", new Integer(1)); + } + } + } + } + + residueHash.put("maxCount", new Integer(maxCount)); + residueHash.put("maxResidue", maxResidue); + + + //Size is redundant at present if we calculate percentage here + //residueHash.put("size", new Integer(jSize)); + //residueHash.put("nogaps", new Integer(nongap)); + + percentage = ((float)maxCount*100) / (float)jSize; + residueHash.put("pid_gaps", new Float(percentage) ); + + percentage = ((float)maxCount*100) / (float)nongap; + residueHash.put("pid_nogaps", new Float(percentage) ); + result.addElement(residueHash); + } + + + + return result; + } +}