JAL-2629 partial refactoring of Hmmer command classes
[jalview.git] / src / jalview / hmmer / HMMBuildThread.java
index 2262bae..4e3dc2e 100644 (file)
@@ -1,15 +1,13 @@
 package jalview.hmmer;
 
-import jalview.bin.Cache;
+import jalview.analysis.SeqsetUtils;
 import jalview.datamodel.AlignmentI;
-import jalview.datamodel.HiddenMarkovModel;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 import jalview.gui.JvOptionPane;
-import jalview.gui.Preferences;
 import jalview.io.DataSourceType;
 import jalview.io.FileParse;
 import jalview.io.HMMFile;
@@ -24,12 +22,8 @@ import java.util.List;
 
 import javax.swing.JOptionPane;
 
-public class HMMBuildThread implements Runnable
+public class HMMBuildThread extends HmmerCommand implements Runnable
 {
-  HMMERCommands cmds = new HMMERCommands();
-
-  AlignFrame af;
-
   AlignViewport viewport;
 
   boolean multiJob = false;
@@ -78,7 +72,6 @@ public class HMMBuildThread implements Runnable
       af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
               barID);
     }
-    cmds.HMMERFOLDER = Cache.getProperty(Preferences.HMMER_PATH);
 
     List<SequenceGroup> groups = new ArrayList<>();
     if (params != null)
@@ -167,8 +160,7 @@ public class HMMBuildThread implements Runnable
 
     if (af != null)
     {
-      af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
-              barID);
+      af.setProgressBar("", barID);
     }
   }
 
@@ -215,8 +207,6 @@ public class HMMBuildThread implements Runnable
           array = alignment.getSequencesArray();
         }
 
-        cmds.setHmmSeqs(seqs);
-
         if (array.length < 1)
         {
           if (af != null)
@@ -234,18 +224,18 @@ public class HMMBuildThread implements Runnable
           index++;
         }
 
-        cmds.uniquifySequences(newArr);
+        uniquifySequences(newArr);
 
         if (forGroup)
         {
-          cmds.exportData(newArr, stoTemp, null, null, group);
+          exportData(newArr, stoTemp, null, null, group);
         }
         else
         {
-          cmds.exportData(newArr, stoTemp, null, null, alignment);
+          exportData(newArr, stoTemp, null, null, alignment);
         }
 
-        jalview.analysis.SeqsetUtils.deuniquify(cmds.hash, array);
+        SeqsetUtils.deuniquify(hash, array);
 
       } catch (FileNotFoundException e)
       {
@@ -289,23 +279,12 @@ public class HMMBuildThread implements Runnable
    */
   private boolean runCommand() throws IOException, InterruptedException
   {
-    File file = new File(cmds.HMMERFOLDER + "/hmmbuild");
-    if (!file.canExecute())
+    String binaryPath = getCommandRoot(HMMBUILD);
+    if (binaryPath == null)
     {
-      file = new File(cmds.HMMERFOLDER + "/hmmbuild.exe");
-      {
-        if (!file.canExecute())
-        {
-          if (af != null)
-          {
-            JvOptionPane.showInternalMessageDialog(af,
-                    MessageManager.getString("warn.hmmbuild_failed"));
-          }
-          return false;
-        }
-      }
+      return false;
     }
-    String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.SPACE;
+    String command = binaryPath + SPACE;
     String name = null;
 
     if (params != null)
@@ -348,19 +327,19 @@ public class HMMBuildThread implements Runnable
 
     }
 
-    command += "-n " + name.replace(' ', '_') + cmds.SPACE;
+    command += "-n " + name.replace(' ', '_') + SPACE;
     if (!alignment.isNucleotide())
     {
-      command += cmds.FORCEAMINO; // TODO check for rna
+      command += FORCEAMINO; // TODO check for rna
     }
     else
     {
-      command += cmds.FORCEDNA;
+      command += FORCEDNA;
     }
 
-    command += hmmTemp.getAbsolutePath() + cmds.SPACE
-            + stoTemp.getAbsolutePath() + cmds.SPACE;
-    return cmds.runCommand(command);
+    command += hmmTemp.getAbsolutePath() + SPACE + stoTemp.getAbsolutePath()
+            + SPACE;
+    return runCommand(command);
   }
 
   /**
@@ -376,7 +355,6 @@ public class HMMBuildThread implements Runnable
     SequenceI[] seqs = file.getSeqsAsArray();
     SequenceI seq = seqs[0];
     seq.createDatasetSequence();
-    HiddenMarkovModel hmm = file.getHMM();
     if (group != null)
     {
       seq.insertCharAt(0, group.getStartRes(), '-');