Merge branch 'develop' into update_212_Dec_merge_with_21125_chamges
[jalview.git] / src / jalview / hmmer / HMMBuild.java
index 0b6e3ee..cb087fa 100644 (file)
@@ -1,11 +1,13 @@
 package jalview.hmmer;
 
+import jalview.analysis.SeqsetUtils.SequenceInfo;
 import jalview.api.AlignViewportI;
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
-import jalview.datamodel.AlignmentView;
 import jalview.datamodel.AnnotatedCollectionI;
+import jalview.datamodel.ResidueCount;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
@@ -22,6 +24,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.Map;
 
 /**
  * A class that runs the hmmbuild command as a separate process.
@@ -58,7 +61,7 @@ public class HMMBuild extends HmmerCommand
   {
     if (params == null || params.isEmpty())
     {
-      Cache.log.error("No parameters to HMMBuild!|");
+      Console.error("No parameters to HMMBuild!|");
       return;
     }
 
@@ -115,20 +118,18 @@ public class HMMBuild extends HmmerCommand
         else if (MessageManager.getString("label.groups_and_alignment")
                 .equals(value))
         {
-          AlignmentView av = viewport.getAlignmentView(true);
-          runBuildFor.add(av.getVisibleAlignment('-'));
-          runBuildFor.addAll(av.getVisibleGroups('-'));
+          runBuildFor.add(viewport.getAlignmentView(false)
+                  .getVisibleAlignment('-'));
+          runBuildFor.addAll(viewport.getAlignment().getGroups());
         }
         else if (MessageManager.getString("label.groups").equals(value))
         {
-          AlignmentView av = viewport.getAlignmentView(false);
-          runBuildFor.addAll(av.getVisibleGroups('-'));
+          runBuildFor.addAll(viewport.getAlignment().getGroups());
         }
         else if (MessageManager.getString("label.selected_group")
                 .equals(value))
         {
-          AlignmentView av = viewport.getAlignmentView(true);
-          runBuildFor.add(av.getVisibleAlignment('-'));
+          runBuildFor.add(viewport.getSelectionGroup());
         }
       }
       else if (MessageManager.getString("label.use_reference")
@@ -192,14 +193,18 @@ public class HMMBuild extends HmmerCommand
                                                .getSelectionAsNewSequences((AlignmentI) ac.getContext());
         for (SequenceI seq : sel)
         {
-          copy.add(seq);
+          if (seq != null)
+          {
+            copy.add(seq);
+          }
         }
       }
       // TODO rather than copy alignment data we should anonymize in situ -
       // export/File import could use anonymization hash to reinstate references
       // at import level ?
+
       SequenceI[] copyArray = copy.toArray(new SequenceI[copy.size()]);
-      Hashtable sequencesHash = stashSequences(copyArray);
+      Map<String, SequenceInfo> sequencesHash = stashSequences(copyArray);
 
       exportStockholm(copyArray, alignmentFile, ac);
 
@@ -230,33 +235,6 @@ public class HMMBuild extends HmmerCommand
   }
 
   /**
-   * A helper method that deletes any HMM consensus sequence from the given
-   * collection, and from the parent alignment if <code>ac</code> is a subgroup
-   * 
-   * @param ac
-   */
-  void deleteHmmSequences(AnnotatedCollectionI ac)
-  {
-    List<SequenceI> hmmSeqs = ac.getHmmSequences();
-    for (SequenceI hmmSeq : hmmSeqs)
-    {
-      if (ac instanceof SequenceGroup)
-      {
-        ((SequenceGroup) ac).deleteSequence(hmmSeq, false);
-        AnnotatedCollectionI context = ac.getContext();
-        if (context != null && context instanceof AlignmentI)
-        {
-          ((AlignmentI) context).deleteSequence(hmmSeq);
-        }
-      }
-      else
-      {
-        ((AlignmentI) ac).deleteSequence(hmmSeq);
-      }
-    }
-  }
-
-  /**
    * Constructs and executes the hmmbuild command as a separate process
    * 
    * @param sequencesFile
@@ -355,7 +333,7 @@ public class HMMBuild extends HmmerCommand
   {
     if (hmmFile.length() == 0L)
     {
-      Cache.log.error("Error: hmmbuild produced empty hmm file");
+      Console.error("Error: hmmbuild produced empty hmm file");
       return;
     }
 
@@ -363,6 +341,11 @@ public class HMMBuild extends HmmerCommand
             new FileParse(hmmFile.getAbsolutePath(), DataSourceType.FILE));
     SequenceI hmmSeq = file.getHMM().getConsensusSequence();
 
+
+
+    ResidueCount counts = new ResidueCount(alignment.getSequences());
+    hmmSeq.getHMM().setBackgroundFrequencies(counts);
+
     if (hmmSeq == null)
     {
       // hmmbuild failure not detected earlier