JAL-3285 change method declaration in AAFrequency to match develop
[jalview.git] / src / jalview / analysis / AAFrequency.java
index 3e59274..1fef08e 100755 (executable)
@@ -193,16 +193,14 @@ public class AAFrequency
    *          The alignment column on which the first profile is based.
    * @param end
    *          The alignment column on which the last profile is based.
-   * @param saveFullProfile
-   *          if true, all residue counts are saved (enables profile logo)
    * @param removeBelowBackground
    *          if true, symbols with a match emission probability less than
    *          background frequency are ignored
    * @return
    */
   public static ProfilesI calculateHMMProfiles(final HiddenMarkovModel hmm,
-          int width, int start, int end, boolean saveFullProfile,
-          boolean removeBelowBackground, boolean infoLetterHeight)
+          int width, int start, int end, boolean removeBelowBackground,
+          boolean infoLetterHeight)
   {
     ProfileI[] result = new ProfileI[width];
     char[] symbols = hmm.getSymbols().toCharArray();
@@ -221,11 +219,7 @@ public class AAFrequency
       int gapCount = counts.getGapCount();
       ProfileI profile = new Profile(symbolCount, gapCount, maxCount,
               maxResidue);
-
-      if (saveFullProfile)
-      {
-        profile.setCounts(counts);
-      }
+      profile.setCounts(counts);
 
       result[column] = profile;
     }
@@ -344,20 +338,16 @@ public class AAFrequency
    * @param endCol
    *          end column (exclusive)
    * @param ignoreGaps
-   *          if true, normalise residue percentages 
+   *          if true, normalise residue percentages
    * @param showSequenceLogo
    *          if true include all information symbols, else just show modal
    *          residue
-   * @param nseq
-   *          number of sequences
    */
   public static float completeInformation(AlignmentAnnotation information,
-          ProfilesI profiles, int startCol, int endCol, long nseq,
-          float currentMax)
+          ProfilesI profiles, int startCol, int endCol)
   {
     // long now = System.currentTimeMillis();
-    if (information == null || information.annotations == null
-            || information.annotations.length < endCol)
+    if (information == null || information.annotations == null)
     {
       /*
        * called with a bad alignment annotation row 
@@ -368,19 +358,21 @@ public class AAFrequency
 
     float max = 0f;
     SequenceI hmmSeq = information.sequenceRef;
+
+    int seqLength = hmmSeq.getLength();
+    if (information.annotations.length < seqLength)
+    {
+      return 0;
+    }
+
     HiddenMarkovModel hmm = hmmSeq.getHMM();
 
     for (int column = startCol; column < endCol; column++)
     {
-      ProfileI profile = profiles.get(column);
-      if (profile == null)
+      if (column >= seqLength)
       {
-        /*
-         * happens if sequences calculated over were 
-         * shorter than alignment width
-         */
-        information.annotations[column] = null;
-        return 0f;
+        // hmm consensus sequence is shorter than the alignment
+        break;
       }
       
       float value = hmm.getInformationContent(column);
@@ -393,12 +385,11 @@ public class AAFrequency
       String description = isNaN ? null
               : String.format("%.4f bits", value);
       information.annotations[column] = new Annotation(
-              Character.toString(Character
-                      .toUpperCase(hmm.getConsensusAtAlignColumn(column))),
+              Character.toString(
+                      Character.toUpperCase(hmmSeq.getCharAt(column))),
               description, ' ', value);
     }
 
-    max = Math.max(max, currentMax);
     information.graphMax = max;
     return max;
   }
@@ -415,7 +406,7 @@ public class AAFrequency
    * @param endCol
    *          end column (exclusive)
    */
-  public static void completeOccupancyAnnot(AlignmentAnnotation occupancy,
+  public static void completeGapAnnot(AlignmentAnnotation occupancy,
           ProfilesI profiles, int startCol, int endCol, long nseq)
   {
     if (occupancy == null || occupancy.annotations == null