JAL-2629 add adjustable parameters to hmmbuild
[jalview.git] / src / jalview / hmmer / HMMBuildThread.java
index eb9fc2a..4260c34 100644 (file)
@@ -152,11 +152,6 @@ public class HMMBuildThread implements Runnable
         boolean ran = runCommand();
         if (!ran)
         {
-          if (af != null)
-          {
-            JvOptionPane.showInternalMessageDialog(af,
-                  MessageManager.getString("warn.hmmbuild_failed"));
-          }
           return;
         }
     } catch (IOException | InterruptedException e)
@@ -205,30 +200,63 @@ public class HMMBuildThread implements Runnable
       {
         if (!file.canExecute())
         {
+          if (af != null)
+          {
+            JvOptionPane.showInternalMessageDialog(af,
+                    MessageManager.getString("warn.hmmbuild_failed"));
+          }
           return false;
         }
       }
     }
-    String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.NAME;
-    if (forGroup)
+    String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.SPACE;
+    String name = null;
+
+    if (params != null)
     {
-      command += group.getName();
+      for (ArgumentI arg : params)
+      {
+        String argName = arg.getName();
+        switch (argName)
+        {
+        case "HMM Name":
+          name = arg.getValue();
+          break;
+        case "Use Reference Annotation":
+          command += "--hand ";
+          if (!af.getViewport().hasReferenceAnnotation())
+          {
+            JvOptionPane.showInternalMessageDialog(af, MessageManager
+                    .getString("warn.no_reference_annotation"));
+            return false;
+          }
+          break;
+
+        }
+
+      }
     }
-    else
+
+    if (name == null || name == "" || name == " ")
     {
-      String name = null;
-      if (af != null)
+      if (forGroup)
       {
-        // name = af.getTitle();
-        name = "replace";
+        name = group.getName();
       }
-      if (name == null || name == "" || name == " " || name == "  ")
+      else
       {
-        name = "Alignment";
+        if (af != null)
+        {
+          name = af.getTitle();
+        }
+        if (name == null || name == "" || name == " " || name == "  ")
+        {
+          name = "Alignment";
+        }
       }
-      command += name;
     }
-    command += cmds.SPACE;
+
+    command += "-n " + name + cmds.SPACE;
     if (!alignment.isNucleotide())
     {
       command += cmds.FORCEAMINO; // TODO check for rna