JAL-98 don't include gaps in maxResidue!
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Mon, 26 Sep 2016 08:21:50 +0000 (09:21 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Mon, 26 Sep 2016 08:21:50 +0000 (09:21 +0100)
src/jalview/analysis/AAFrequency.java

index cb06882..49c2340 100755 (executable)
@@ -26,6 +26,7 @@ import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
 import jalview.datamodel.SequenceI;
 import jalview.ext.android.SparseIntArray;
+import jalview.util.Comparison;
 import jalview.util.Format;
 import jalview.util.MappingUtils;
 import jalview.util.QuickSort;
@@ -109,7 +110,7 @@ public class AAFrequency
   public static final void calculate(SequenceI[] sequences, int start,
           int end, Hashtable[] result, boolean profile)
   {
-    // long now = System.currentTimeMillis();
+    long now = System.currentTimeMillis();
     Hashtable residueHash;
     int seqCount = sequences.length;
     char c = '-';
@@ -138,16 +139,11 @@ public class AAFrequency
         {
           c = seq[column];
 
-          if (c == '.' || c == ' ')
-          {
-            c = '-';
-          }
-
-          if (c == '-')
+          if (Comparison.isGap(c))
           {
             // values['-']++;
             // values.put('-', values.get('-') + 1);
-            values.increment('-');
+            values.add('-', 1);
             continue;
           }
           else if ('a' <= c && c <= 'z')
@@ -158,13 +154,17 @@ public class AAFrequency
           nongap++;
           // values[c]++;
           // values.put(c, values.get(c) + 1);
-          values.increment(c);
+          values.add(c, 1);
         }
         else
         {
+          /*
+           * here we count as a gap if the sequence doesn't
+           * reach this column (is that correct?)
+           */
           // values['-']++;
           // values.put('-', values.get('-') + 1);
-          values.increment('-');
+          values.add('-', 1);
         }
       }
       if (seqCount == 1)
@@ -180,7 +180,7 @@ public class AAFrequency
         {
           int v = values.keyAt(k);
           int count = values.valueAt(k); // values[v];
-          if (count < 1 || count < maxCount)
+          if (v == '-' || count < 1 || count < maxCount)
           {
             continue;
           }
@@ -221,10 +221,10 @@ public class AAFrequency
 
       result[column] = residueHash;
 
-      profileSizes.increment(values.size());
+      profileSizes.add(values.size(), 1);
     }
-    // long elapsed = System.currentTimeMillis() - now;
-    // System.out.println(elapsed);
+    long elapsed = System.currentTimeMillis() - now;
+    System.out.println(elapsed);
   }
 
   /**
@@ -302,7 +302,7 @@ public class AAFrequency
           boolean ignoreGapsInConsensusCalculation,
           boolean includeAllConsSymbols, char[] alphabet, long nseq)
   {
-    // long now = System.currentTimeMillis();
+     long now = System.currentTimeMillis();
     if (consensus == null || consensus.annotations == null
             || consensus.annotations.length < width)
     {
@@ -404,8 +404,8 @@ public class AAFrequency
       consensus.annotations[i] = new Annotation(maxRes,
               mouseOver.toString(), ' ', value);
     }
-    // long elapsed = System.currentTimeMillis() - now;
-    // System.out.println(-elapsed);
+     long elapsed = System.currentTimeMillis() - now;
+     System.out.println(-elapsed);
   }
 
   /**