Merge branch 'develop' into features/mchmmer
[jalview.git] / src / jalview / schemes / HmmerLocalBackground.java
index b878b9e..2fe775c 100644 (file)
@@ -1,10 +1,12 @@
 package jalview.schemes;
 
 import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.HiddenMarkovModel;
 import jalview.datamodel.ResidueCount;
+import jalview.datamodel.SequenceCollectionI;
+import jalview.datamodel.SequenceI;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -18,17 +20,14 @@ public class HmmerLocalBackground extends HmmerColourScheme
   float logTotalCount;
 
   /**
-   * Constructor given a Hidden Markov Model
+   * Constructor given a sequence collection
    * 
-   * @param sg
-   * 
-   * @param markov
+   * @param ac
    */
-  public HmmerLocalBackground(AnnotatedCollectionI sg,
-          HiddenMarkovModel markov)
+  public HmmerLocalBackground(AnnotatedCollectionI ac)
   {
-    super(markov);
-    countFrequencies(sg);
+    super(ac.getHmmSequences());
+    countFrequencies(ac);
   }
 
   /**
@@ -46,13 +45,30 @@ public class HmmerLocalBackground extends HmmerColourScheme
 
   /**
    * Counts and stores the relative frequency of every residue in the alignment
+   * (apart from any HMM consensus sequences)
    * 
-   * @param sg
+   * @param sc
    */
-  public void countFrequencies(AnnotatedCollectionI sg)
+  public void countFrequencies(SequenceCollectionI sc)
   {
+    // TODO or total counts in Consensus Profile (how do we get at it?)?
     Map<Character, Float> freqs = new HashMap<>();
-    ResidueCount counts = new ResidueCount(sg.getSequences());
+
+    /*
+     * count symbols, excluding any HMM consensus sequences
+     */
+    ResidueCount counts = new ResidueCount();
+    List<SequenceI> seqs = sc.getSequences();
+    for (SequenceI seq : seqs)
+    {
+      if (!seq.hasHMMProfile())
+      {
+        for (char c : seq.getSequence())
+        {
+          counts.add(c);
+        }
+      }
+    }
     int total = counts.getTotalResidueCount(); // excludes gaps
 
     for (char symbol : counts.getSymbolCounts().symbols)
@@ -73,9 +89,8 @@ public class HmmerLocalBackground extends HmmerColourScheme
   }
 
   @Override
-  protected HmmerColourScheme newInstance(AnnotatedCollectionI ac,
-          HiddenMarkovModel model)
+  protected HmmerColourScheme newInstance(AnnotatedCollectionI ac)
   {
-    return new HmmerLocalBackground(ac, model);
+    return new HmmerLocalBackground(ac);
   }
 }