X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAAFrequency.java;h=edcc50fa5cc9bb06890a3a5afa403161546a9330;hb=9d701bbe1b456aac498c5665cb3d7ac00a58db57;hp=c8e6388ab31b34836969cea706c957da0d4bcc30;hpb=1ecf6419aba86993b3c223bf5ec0fa79427baf85;p=jalview.git diff --git a/src/jalview/analysis/AAFrequency.java b/src/jalview/analysis/AAFrequency.java index c8e6388..edcc50f 100755 --- a/src/jalview/analysis/AAFrequency.java +++ b/src/jalview/analysis/AAFrequency.java @@ -20,6 +20,7 @@ public class AAFrequency { // This class is used extensively in calculating alignment colourschemes // that depend on the amount of conservation in each alignment column. + public static Vector calculate(Vector sequences,int start,int end) { Vector result = new Vector(); @@ -28,7 +29,7 @@ public class AAFrequency { { Hashtable residueHash = new Hashtable(); - int maxCount = -1; + int maxCount = 0; String maxResidue = "-"; int nongap = 0; for (int j=0; j < sequences.size(); j++) @@ -41,10 +42,12 @@ public class AAFrequency { if (s.getSequence().length() > i) { - String res = s.getSequence().substring(i,i+1); + String res = s.getSequence().charAt(i)+""; - if (!res.equals("-")) + if (!jalview.util.Comparison.isGap(res.charAt(0))) nongap++; + else + res = "-"; // we always use this for gaps in the property vectors if (residueHash.containsKey(res)) { @@ -52,7 +55,7 @@ public class AAFrequency { int count = ((Integer)residueHash.get(res)).intValue() ; count++; - if (!res.equals("-") && count >= maxCount) + if (!jalview.util.Comparison.isGap(res.charAt(0)) && count >= maxCount) { if(count>maxCount) @@ -84,7 +87,10 @@ public class AAFrequency { } } } + residueHash.put("maxCount",new Integer(maxCount)); + if(maxCount<0) + System.out.println("asasa "+maxCount); residueHash.put("maxResidue", maxResidue); residueHash.put("size", new Integer(sequences.size())); residueHash.put("nongap", new Integer(nongap)); @@ -130,26 +136,28 @@ public class AAFrequency { for (int k = winstart; k <= winend; k++) { String refchar = refseq.getSequence().substring(k,k+1); + if (jalview.util.Comparison.isGap(refchar.charAt(0))) + refchar="-"; + else { + for (int j = 0; j < sequences.size(); j++) { - for (int j = 0; j < sequences.size(); j++) { + Sequence s = (Sequence)sequences.elementAt(j); - if (refchar.equals("-") == false) { + if (s.getSequence().length() > k) { - Sequence s = (Sequence)sequences.elementAt(j); + String res = s.getSequence().substring(k,k+1); // no gapchar test needed - if (s.getSequence().length() > k) { + if (res.equals(refchar)) { + int val = ((Integer)values.elementAt(j)).intValue(); + val++; + values.setElementAt(new Integer(val),j); + } + } + } + } - String res = s.getSequence().substring(k,k+1); + } - if (res.equals(refchar)) { - int val = ((Integer)values.elementAt(j)).intValue(); - val++; - values.setElementAt(new Integer(val),j); - } - } - } - } - } prev = values; } else { int winstart = i-window/2; @@ -186,11 +194,13 @@ public class AAFrequency { // Now substract 1 if the chars at winstart-1 match - if (pre_refchar.equals("-") == false && pre_char.equals(pre_refchar)) { + if (jalview.util.Comparison.isGap(pre_refchar.charAt(0)) == false + && pre_char.equals(pre_refchar)) { val--; } - if (pos_refchar.equals("-") == false && pos_char.equals(pos_refchar)) { + if (jalview.util.Comparison.isGap(pos_refchar.charAt(0)) == false + && pos_char.equals(pos_refchar)) { val++; }