JAL-2629 partial refactoring of Hmmer command classes
[jalview.git] / src / jalview / hmmer / HMMAlignThread.java
index 168e3f9..fadbdb1 100644 (file)
@@ -1,5 +1,7 @@
 package jalview.hmmer;
 
+import jalview.analysis.AlignmentSorter;
+import jalview.analysis.SeqsetUtils;
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -11,7 +13,6 @@ 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;
 import jalview.io.StockholmFile;
@@ -23,25 +24,18 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import javax.swing.JInternalFrame;
 
-public class HMMAlignThread implements Runnable
+public class HMMAlignThread extends HmmerCommand implements Runnable
 {
+  static final String HMMALIGN = "hmmalign";
 
-  /**
+  /*
    * feature settings from view that job was associated with
    */
   protected FeatureRendererSettings featureSettings = null;
 
-  /**
-   * Object containing frequently used commands.
-   */
-  HMMERCommands cmds = new HMMERCommands();
-
-  AlignFrame af;
-
   AlignmentI alignment;
 
   AlignmentI dataset;
@@ -58,8 +52,6 @@ public class HMMAlignThread implements Runnable
 
   long barID;
 
-  Map<Integer, SequenceI> hmmSeqs;
-
   File hmmTemp = null;
 
   File outTemp = null;
@@ -106,7 +98,6 @@ public class HMMAlignThread implements Runnable
     barID = System.currentTimeMillis();
     af.setProgressBar(MessageManager.getString("status.running_hmmalign"),
             barID);
-    cmds.HMMERFOLDER = Cache.getProperty(Preferences.HMMER_PATH);
     prepareAlignment();
     SequenceI[][] subAlignments = msa.getVisibleContigs('-');
     allOrders = new ArrayList<>();
@@ -114,7 +105,7 @@ public class HMMAlignThread implements Runnable
     int job = 0;
     for (SequenceI[] seqs : subAlignments)
     {
-      cmds.uniquifySequences(seqs);
+      uniquifySequences(seqs);
       try
       {
         createTemporaryFiles();
@@ -124,7 +115,7 @@ public class HMMAlignThread implements Runnable
       }
       try
       {
-        cmds.exportData(seqs, outTemp.getAbsoluteFile(), hmm,
+        exportData(seqs, outTemp.getAbsoluteFile(), hmm,
                 hmmTemp.getAbsoluteFile(), null);
       } catch (IOException e1)
       {
@@ -156,8 +147,7 @@ public class HMMAlignThread implements Runnable
 
     displayResults(newFrame);
 
-    af.setProgressBar(MessageManager.getString("status.running_hmmalign"),
-            barID);
+    af.setProgressBar("", barID);
 
   }
 
@@ -183,7 +173,7 @@ public class HMMAlignThread implements Runnable
   }
 
   /**
-   * Executes the hmmalign command in the command line.
+   * Executes the hmmalign command in the command line
    * 
    * @return
    * @throws IOException
@@ -191,22 +181,16 @@ public class HMMAlignThread implements Runnable
    */
   private boolean runCommand() throws IOException, InterruptedException
   {
-    File file = new File(cmds.HMMERFOLDER + "/hmmalign");
-    if (!file.canExecute())
-    {
-      file = new File(cmds.HMMERFOLDER + "/hmmalign.exe");
-      {
-        if (!file.canExecute())
-        {
-          return false;
-        }
-      }
+    String binaryPath = getCommandRoot(HMMALIGN);
+    if (binaryPath == null) {
+      return false;
     }
-    String command = cmds.HMMERFOLDER + cmds.HMMALIGN;
+    String command = binaryPath + SPACE;
+    // todo parse version from ./hmmerbuild -h
     String version = Cache.getProperty("HMMER_VERSION");
     if (!"3.1b2".equals(version))
     {
-      command += cmds.ALLCOL;
+      // command += ALLCOL; // todo obsolete option?
     }
     if (args != null)
     {
@@ -220,10 +204,10 @@ public class HMMAlignThread implements Runnable
         }
       }
     }
-    command += " -o " + inputTemp.getAbsolutePath() + cmds.SPACE
-            + hmmTemp.getAbsolutePath() + cmds.SPACE
+    command += " -o " + inputTemp.getAbsolutePath() + SPACE
+            + hmmTemp.getAbsolutePath() + SPACE
             + outTemp.getAbsolutePath();
-    return cmds.runCommand(command);
+    return runCommand(command);
   }
 
   /**
@@ -242,8 +226,8 @@ public class HMMAlignThread implements Runnable
             DataSourceType.FILE);
     SequenceI[] result = file.getSeqsAsArray();
     AlignmentOrder msaorder = new AlignmentOrder(result);
-    jalview.analysis.AlignmentSorter.recoverOrder(result);
-    jalview.analysis.SeqsetUtils.deuniquify(cmds.hash, result);
+    AlignmentSorter.recoverOrder(result);
+    SeqsetUtils.deuniquify(hash, result);
     allOrders.add(msaorder);
     allResults[index] = result;
     hmmTemp.delete();