JAL-2629 selected HMM name now shown in HMMER menu
[jalview.git] / src / jalview / hmmer / HMMAlignThread.java
index 49fc49d..d94ce97 100644 (file)
@@ -10,6 +10,7 @@ import jalview.datamodel.HiddenMarkovModel;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
 import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
 import jalview.gui.Preferences;
 import jalview.gui.SplitFrame;
 import jalview.io.DataSourceType;
@@ -79,7 +80,7 @@ public class HMMAlignThread implements Runnable
   @Override
   public void run()
   {
-    if (af.getViewport().getSelectedHMM() == null)
+    if (af.getSelectedHMM() == null)
     {
       JOptionPane.showMessageDialog(af,
               MessageManager.getString("warn.no_selected_hmm"));
@@ -87,10 +88,10 @@ public class HMMAlignThread implements Runnable
     }
     else
     {
-      hmm = af.getViewport().getSelectedHMM();
+      hmm = af.getSelectedHMM();
     }
     barID = System.currentTimeMillis();
-    af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
+    af.setProgressBar(MessageManager.getString("status.running_hmmalign"),
             barID);
     cmds.HMMERFOLDER = Cache.getProperty(Preferences.HMMER_PATH);
 
@@ -123,7 +124,13 @@ public class HMMAlignThread implements Runnable
       }
       try
       {
-        runCommand();
+        boolean ran = runCommand();
+        if (!ran)
+        {
+          JvOptionPane.showInternalMessageDialog(af,
+                  MessageManager.getString("warn.hmmalign_failed"));
+          return;
+        }
       } catch (IOException | InterruptedException e)
       {
         e.printStackTrace();
@@ -156,17 +163,32 @@ public class HMMAlignThread implements Runnable
     inputTemp.deleteOnExit();
   }
 
-  private void runCommand() throws IOException, InterruptedException
+  private boolean runCommand() throws IOException, InterruptedException
   {
+    File file = new File(cmds.HMMERFOLDER + "/binaries/hmmalign.exe");
+    if (!file.canExecute())
+    {
+      return false;
+    }
     String command = cmds.HMMERFOLDER + cmds.HMMALIGN;
     if (!hmm.getFileHeader().contains("HMMER3/f"))
     {
       command += cmds.ALLCOL;
     }
-    command += cmds.TRIM + " -o" + inputTemp.getAbsolutePath() + cmds.SPACE
+    boolean trim = true;
+    String bool = Cache.getProperty("TRIM_TERMINI");
+    if ("false".equals(bool))
+    {
+      trim = false;
+    }
+    if (trim)
+    {
+      command += cmds.TRIM;
+    }
+    command += " -o" + inputTemp.getAbsolutePath() + cmds.SPACE
             + hmmTemp.getAbsolutePath() + cmds.SPACE
             + outTemp.getAbsolutePath();
-    cmds.runCommand(command);
+    return cmds.runCommand(command);
   }
 
   private void importData(int index)
@@ -176,47 +198,10 @@ public class HMMAlignThread implements Runnable
             DataSourceType.FILE);
     SequenceI[] result = file.getSeqsAsArray();
     AlignmentOrder msaorder = new AlignmentOrder(result);
-    // always recover the order - makes parseResult()'s life easier.
     jalview.analysis.AlignmentSorter.recoverOrder(result);
     jalview.analysis.SeqsetUtils.deuniquify(cmds.hash, result);
     allOrders.add(msaorder);
     allResults[index] = result;
-
-    /*
-    if (newFrame)
-    {
-      FileLoader loader = new FileLoader();
-      AlignFrame aFrame = new AlignFrame(new Alignment(new SequenceI[1]),
-              AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
-      Desktop.addInternalFrame(aFrame, aFrame.getTitle(),
-              AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
-      aFrame.setTitle(
-              af.getName() + "Aligned to " + hmm.getName() + "'s HMM");
-      af.getViewport().setAlignment(null);
-    
-      aFrame.loadJalviewDataFile(inputTemp.getAbsolutePath(),
-              DataSourceType.FILE, FileFormat.Stockholm, null);
-    
-    
-    
-      Map<Integer, SequenceI> copy = new HashMap<>(
-              hmmSeqs);
-      addSeqs(aFrame, copy);
-      SequenceI seq = aFrame.getViewport().getAlignment()
-              .getSequenceAt(0);
-      seq.getHMM().mapToReferenceAnnotation(aFrame, seq);
-      addSeqs(af, hmmSeqs);
-    }
-    else
-    {
-      af.getViewport().getAlignment().getSequences().clear();
-      af.setIsRecurring(true);
-      af.loadJalviewDataFile(inputTemp.getAbsolutePath(),
-              DataSourceType.FILE, FileFormat.Stockholm, null);
-      af.setIsRecurring(false);
-      addSeqs(af, hmmSeqs);
-    }
-    */
     hmmTemp.delete();
     outTemp.delete();
     inputTemp.delete();