JAL-2629 revert to showing Profile parameter even if only 1 choice
[jalview.git] / src / jalview / hmmer / HMMERParamStore.java
index 6f1f51f..fbab7a9 100644 (file)
@@ -9,6 +9,7 @@ import jalview.ws.params.ArgumentI;
 import jalview.ws.params.ParamDatastoreI;
 import jalview.ws.params.WsParamSetI;
 import jalview.ws.params.simple.BooleanOption;
+import jalview.ws.params.simple.DoubleParameter;
 import jalview.ws.params.simple.IntegerParameter;
 import jalview.ws.params.simple.LogarithmicParameter;
 import jalview.ws.params.simple.Option;
@@ -16,6 +17,7 @@ import jalview.ws.params.simple.StringParameter;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Scanner;
@@ -96,17 +98,16 @@ public final class HMMERParamStore implements ParamDatastoreI
    */
   private void getHMMSearchParams(List<ArgumentI> args)
   {
+    /*
+     * 'Options'
+     */
     addChoiceOfHmm(args);
 
-    args.add(new IntegerParameter(
-            MessageManager.getString("label.number_of_results"),
-            MessageManager.getString("label.number_of_results_desc"), true,
-            100, 0, 100000));
     String names = Cache.getProperty(Preferences.HMMSEARCH_DBS);
     if (names != null && !names.isEmpty())
     {
       List<String> databases = new ArrayList<>();
-      databases.add(MessageManager.getString("label.this_alignment"));
+      databases.add(MessageManager.getString(HMMSearch.THIS_ALIGNMENT_KEY));
       Scanner nameScanner = new Scanner(names);
 
       if (nameScanner.hasNext())
@@ -126,45 +127,56 @@ public final class HMMERParamStore implements ParamDatastoreI
         }
       }
       nameScanner.close();
-      args.add(new Option(MessageManager.getString("label.database"),
+      args.add(new StringParameter(
+              MessageManager.getString(HMMSearch.DATABASE_KEY),
               MessageManager.getString("label.database_for_hmmsearch"),
-              true, MessageManager.getString("label.this_alignment"),
-              MessageManager.getString("label.this_alignment"), databases,
-              null));
+              true, MessageManager.getString(HMMSearch.THIS_ALIGNMENT_KEY),
+              MessageManager.getString(HMMSearch.THIS_ALIGNMENT_KEY),
+              databases));
     }
     args.add(new BooleanOption(
-            MessageManager.getString("label.auto_align_seqs"),
+            MessageManager.getString(HMMSearch.AUTO_ALIGN_SEQS_KEY),
             MessageManager.getString("label.auto_align_seqs_desc"), false,
             false, true, null));
     args.add(new BooleanOption(
-            MessageManager.getString("label.use_accessions"),
+            MessageManager.getString(HMMSearch.USE_ACCESSIONS_KEY),
             MessageManager.getString("label.use_accessions_desc"), false,
             false, true, null));
     args.add(new BooleanOption(
-            MessageManager.getString("label.trim_termini"),
+            MessageManager.getString(HMMSearch.TRIM_TERMINI_KEY),
             MessageManager.getString("label.trim_termini_desc"), false,
             false, true, null));
+
+    /*
+     * 'Parameters'
+     */
+    args.add(new IntegerParameter(
+            MessageManager.getString(HMMSearch.NUMBER_OF_RESULTS_KEY),
+            MessageManager.getString("label.number_of_results_desc"), true,
+            100, 0, 100000));
+    args.add(new StringParameter(
+            MessageManager.getString(HMMSearch.REPORTING_CUTOFF_KEY), null,
+            true, HMMSearch.CUTOFF_NONE, HMMSearch.CUTOFF_NONE,
+            Arrays.asList(HMMSearch.CUTOFF_NONE, HMMSearch.CUTOFF_EVALUE,
+                    HMMSearch.CUTOFF_SCORE)));
     args.add(new LogarithmicParameter(
-            MessageManager.getString("label.seq_e_value"),
+            MessageManager.getString(HMMSearch.SEQ_EVALUE_KEY),
             MessageManager.getString("label.seq_e_value_desc"), false, 1D,
-            1E-38, 10D, 10D));
-    /*
-    args.add(new DoubleParameter(
-            MessageManager.getString("label.seq_score"),
-            MessageManager.getString("label.seq_score_desc"), false,
-            0d, 0d, 10000d));
-       */
+            1E-38, 10D));
     args.add(new LogarithmicParameter(
-            MessageManager.getString("label.dom_e_value"),
+            MessageManager.getString(HMMSearch.DOM_EVALUE_KEY),
             MessageManager.getString("label.dom_e_value_desc"), false, 1D,
-            1E-38, 10D, 10D));
-    /*
-    args.add(new DoubleParameter(
-            MessageManager.getString("label.dom_score"),
-            MessageManager.getString("label.dom_score_desc"), false, 0d,
-            0d,
-            10000d));
-            */
+            1E-38, 10D));
+    args.add(
+            new DoubleParameter(
+                    MessageManager.getString(HMMSearch.SEQ_SCORE_KEY),
+                    MessageManager.getString("label.seq_score_desc"), false,
+                    0d, 0d, 1000d));
+    args.add(
+            new DoubleParameter(
+                    MessageManager.getString(HMMSearch.DOM_SCORE_KEY),
+                    MessageManager.getString("label.dom_score_desc"), false,
+                    0d, 0d, 1000d));
   }
 
   /**
@@ -187,7 +199,7 @@ public final class HMMERParamStore implements ParamDatastoreI
 
   /**
    * Adds an argument representing the choice of HMM sequences (profiles)
-   * against which to perform align or search, provided more than one is found
+   * against which to perform align or search, provided at least one is found
    * 
    * @param args
    */
@@ -202,9 +214,10 @@ public final class HMMERParamStore implements ParamDatastoreI
         options.add(hmmSeq.getName());
       }
       String defseq = options.get(0);
-      Option option = new Option(MessageManager.getString("label.use_hmm"),
-              "", true, defseq, defseq, options, null);
-      args.add(option);
+      ArgumentI arg = new StringParameter(
+              MessageManager.getString("label.use_hmm"), null, true, defseq,
+              defseq, options);
+      args.add(arg);
     }
   }
 
@@ -239,16 +252,20 @@ public final class HMMERParamStore implements ParamDatastoreI
 
     /*
      * choice of whether to compute HMM for alignment and/or group(s)
+     * - only if there are any groups
      */
-    Collection<String> options = new ArrayList<>();
-    options.add(MessageManager.getString("label.alignment"));
-    options.add(MessageManager.getString("label.groups_and_alignment"));
-    options.add(MessageManager.getString("label.groups"));
-    options.add(MessageManager.getString("label.selected_group"));
-    args.add(new Option(MessageManager.getString("label.hmmbuild_for"),
-            MessageManager.getString("label.hmmbuild_for_desc"), true,
-            MessageManager.getString("label.alignment"),
-            MessageManager.getString("label.alignment"), options, null));
+    if (!viewport.getAlignment().getGroups().isEmpty())
+    {
+      Collection<String> options = new ArrayList<>();
+      options.add(MessageManager.getString("label.alignment"));
+      options.add(MessageManager.getString("label.groups_and_alignment"));
+      options.add(MessageManager.getString("label.groups"));
+      options.add(MessageManager.getString("label.selected_group"));
+      args.add(new Option(MessageManager.getString("label.hmmbuild_for"),
+              MessageManager.getString("label.hmmbuild_for_desc"), true,
+              MessageManager.getString("label.alignment"),
+              MessageManager.getString("label.alignment"), options, null));
+    }
   }
 
   @Override