JAL-2629 add HMM Match Score colour scheme
[jalview.git] / src / jalview / hmmer / HMMBuild.java
index 6de7029..88f28dd 100644 (file)
@@ -4,7 +4,9 @@ import jalview.api.AlignViewportI;
 import jalview.bin.Cache;
 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;
@@ -105,24 +107,29 @@ public class HMMBuild extends HmmerCommand
       {
         foundArg = true;
         String value = arg.getValue();
+
         if (MessageManager.getString("label.alignment").equals(value))
         {
-          runBuildFor.add(alignment);
+          runBuildFor.add(viewport.getAlignmentView(false)
+                  .getVisibleAlignment('-'));
         }
         else if (MessageManager.getString("label.groups_and_alignment")
                 .equals(value))
         {
-          runBuildFor.add(alignment);
-          runBuildFor.addAll(viewport.getAlignment().getGroups());
+          AlignmentView av = viewport.getAlignmentView(true);
+          runBuildFor.add(av.getVisibleAlignment('-'));
+          runBuildFor.addAll(av.getVisibleGroups('-'));
         }
         else if (MessageManager.getString("label.groups").equals(value))
         {
-          runBuildFor.addAll(viewport.getAlignment().getGroups());
+          AlignmentView av = viewport.getAlignmentView(false);
+          runBuildFor.addAll(av.getVisibleGroups('-'));
         }
         else if (MessageManager.getString("label.selected_group")
                 .equals(value))
         {
-          runBuildFor.add(viewport.getSelectionGroup());
+          AlignmentView av = viewport.getAlignmentView(true);
+          runBuildFor.add(av.getVisibleAlignment('-'));
         }
       }
       else if (MessageManager.getString("label.use_reference")
@@ -183,13 +190,15 @@ public class HMMBuild extends HmmerCommand
       else
       {
         SequenceI[] sel = ((SequenceGroup) ac)
-                .getSelectionAsNewSequences((AlignmentI) ac.getContext());
+                                               .getSelectionAsNewSequences((AlignmentI) ac.getContext());
         for (SequenceI seq : sel)
         {
           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);
 
@@ -326,8 +335,8 @@ public class HMMBuild extends HmmerCommand
       args.add(ARG_DNA);
     }
 
-    args.add(getFilePath(hmmFile));
-    args.add(getFilePath(sequencesFile));
+    args.add(getFilePath(hmmFile, true));
+    args.add(getFilePath(sequencesFile, true));
 
     return runCommand(args);
   }
@@ -354,6 +363,8 @@ public class HMMBuild extends HmmerCommand
     HMMFile file = new HMMFile(
             new FileParse(hmmFile.getAbsolutePath(), DataSourceType.FILE));
     SequenceI hmmSeq = file.getHMM().getConsensusSequence();
+    ResidueCount counts = new ResidueCount(alignment.getSequences());
+    hmmSeq.getHMM().setBackgroundFrequencies(counts);
 
     if (hmmSeq == null)
     {