JAL-2629 can now choose number of jackhmmer iterations
[jalview.git] / src / jalview / hmmer / HMMERParamStore.java
index 452097b..df9ab55 100644 (file)
@@ -32,6 +32,8 @@ public final class HMMERParamStore implements ParamDatastoreI
 
   private static final String HMMSEARCH = "hmmsearch";
 
+  private static final String JACKHMMER = "jackhmmer";
+
   private String name;
 
   private List<WsParamSetI> presets = new ArrayList<>();
@@ -59,6 +61,11 @@ public final class HMMERParamStore implements ParamDatastoreI
     return new HMMERParamStore(HMMSEARCH, viewport);
   }
 
+  public static HMMERParamStore forJackhmmer(AlignmentViewport viewport)
+  {
+    return new HMMERParamStore(JACKHMMER, viewport);
+  }
+
   @Override
   public List<WsParamSetI> getPresets()
   {
@@ -86,6 +93,8 @@ public final class HMMERParamStore implements ParamDatastoreI
     case HMMBUILD:
       getHMMBuildParams(args);
       break;
+    case JACKHMMER:
+      getJackhmmerParams(args);
     default:
     }
 
@@ -115,6 +124,10 @@ public final class HMMERParamStore implements ParamDatastoreI
             MessageManager.getString(HMMSearch.TRIM_TERMINI_KEY),
             MessageManager.getString("label.trim_termini_desc"), false,
             false, true, null));
+    args.add(new BooleanOption(
+            MessageManager.getString(HMMSearch.RETURN_N_NEW_SEQ),
+            MessageManager.getString("label.check_for_new_sequences_desc"),
+            false, false, false, null));
 
     /*
      * 'Parameters'
@@ -126,11 +139,6 @@ public final class HMMERParamStore implements ParamDatastoreI
     String thisAlignment = MessageManager
             .getString(HMMSearch.THIS_ALIGNMENT_KEY);
     String database = MessageManager.getString("label.database");
-    args.add(new RadioChoiceParameter(
-            MessageManager.getString("action.search"), null,
-            Arrays.asList(thisAlignment,
-                    database),
-            thisAlignment));
     args.add(new FileParameter(database, "", false, "", ""));
     args.add(new IntegerParameter(
             MessageManager.getString(HMMSearch.NUMBER_OF_RESULTS_KEY),
@@ -138,27 +146,134 @@ public final class HMMERParamStore implements ParamDatastoreI
             100, 0, 100000));
     args.add(new RadioChoiceParameter(
             MessageManager.getString(HMMSearch.REPORTING_CUTOFF_KEY), null,
-            Arrays.asList(HMMSearch.CUTOFF_NONE, HMMSearch.CUTOFF_EVALUE,
-                    HMMSearch.CUTOFF_SCORE),
-            HMMSearch.CUTOFF_EVALUE));
+            Arrays.asList(MessageManager.getString(HMMSearch.CUTOFF_EVALUE),
+                    MessageManager.getString(HMMSearch.CUTOFF_SCORE)),
+            MessageManager.getString(HMMSearch.CUTOFF_EVALUE)));
     args.add(new LogarithmicParameter(
-            MessageManager.getString(HMMSearch.SEQ_EVALUE_KEY),
-            MessageManager.getString("label.seq_e_value_desc"), false, 1D,
-            1E-38, 10D));
+            MessageManager.getString(HMMSearch.REPORTING_SEQ_EVALUE_KEY),
+            MessageManager.getString("label.reporting_seq_e_value_desc"),
+            false, 1D,
+            1E-100, 10D));
     args.add(new LogarithmicParameter(
-            MessageManager.getString(HMMSearch.DOM_EVALUE_KEY),
-            MessageManager.getString("label.dom_e_value_desc"), false, 1D,
-            1E-38, 10D));
+            MessageManager.getString(HMMSearch.REPORTING_DOM_EVALUE_KEY),
+            MessageManager.getString("label.reporting_dom_e_value_desc"),
+            false, 1D,
+            1E-100, 10D));
     args.add(
             new DoubleParameter(
-                    MessageManager.getString(HMMSearch.SEQ_SCORE_KEY),
-                    MessageManager.getString("label.seq_score_desc"), false,
+                    MessageManager
+                            .getString(HMMSearch.REPORTING_SEQ_SCORE_KEY),
+                    MessageManager.getString(
+                            "label.reporting_seq_score_desc"),
+                    false,
                     0d, 0d, 1000d));
     args.add(
             new DoubleParameter(
-                    MessageManager.getString(HMMSearch.DOM_SCORE_KEY),
-                    MessageManager.getString("label.dom_score_desc"), false,
+                    MessageManager
+                            .getString(HMMSearch.REPORTING_DOM_SCORE_KEY),
+                    MessageManager.getString(
+                            "label.reporting_dom_score_desc"),
+                    false,
                     0d, 0d, 1000d));
+    args.add(new RadioChoiceParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_THRESHOLD_KEY),
+            null,
+            Arrays.asList(MessageManager.getString(HMMSearch.CUTOFF_EVALUE),
+                    MessageManager.getString(HMMSearch.CUTOFF_SCORE)),
+            MessageManager.getString(HMMSearch.CUTOFF_EVALUE)));
+    args.add(new LogarithmicParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_SEQ_EVALUE_KEY),
+            MessageManager.getString("label.inclusion_seq_e_value_desc"),
+            false, 1D,
+            1E-100, 10D));
+    args.add(new LogarithmicParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_DOM_EVALUE_KEY),
+            MessageManager.getString("label.inclusion_dom_e_value_desc"),
+            false, 1D,
+            1E-100, 10D));
+    args.add(new DoubleParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_SEQ_SCORE_KEY),
+            MessageManager.getString("label.inclusion_seq_score_desc"),
+            false, 0d, 0d,
+            1000d));
+    args.add(new DoubleParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_DOM_SCORE_KEY),
+            MessageManager.getString("label.inclusion_dom_score_desc"),
+            false, 0d, 0d,
+            1000d));
+  }
+
+  /**
+   * Answers default parameters for jackhmmer, taking into account any configured
+   * as user preferences
+   * 
+   * @param args
+   */
+  private void getJackhmmerParams(List<ArgumentI> args)
+  {
+
+    /*
+     * 'Parameters'
+     */
+    addChoiceOfSequence(args);
+
+    // addChoiceOfDatabase(args);
+
+    String database = MessageManager.getString("label.database");
+    args.add(new FileParameter(database, "", false, "", ""));
+    args.add(new IntegerParameter(
+            MessageManager.getString(HMMSearch.NUMBER_OF_ITERATIONS),
+            MessageManager.getString("label.number_of_iterations_desc"),
+            true, 5, 1, 20));
+    args.add(new RadioChoiceParameter(
+            MessageManager.getString(JackHMMER.REPORTING_CUTOFF_KEY), null,
+            Arrays.asList(MessageManager.getString(JackHMMER.CUTOFF_NONE),
+                    MessageManager.getString(JackHMMER.CUTOFF_EVALUE),
+                    MessageManager.getString(JackHMMER.CUTOFF_SCORE)),
+            MessageManager.getString(JackHMMER.CUTOFF_EVALUE)));
+    args.add(new LogarithmicParameter(
+            MessageManager.getString(JackHMMER.REPORTING_SEQ_EVALUE_KEY),
+            MessageManager.getString("label.reporting_seq_e_value_desc"),
+            false, 1D,
+            1E-38, 10D));
+    args.add(new LogarithmicParameter(
+            MessageManager.getString(JackHMMER.REPORTING_DOM_EVALUE_KEY),
+            MessageManager.getString(
+                    "label.reporting_dom_e_value_desc"),
+            false, 1D,
+            1E-38, 10D));
+    args.add(new DoubleParameter(
+            MessageManager.getString(JackHMMER.REPORTING_SEQ_SCORE_KEY),
+            MessageManager.getString("label.reporting_seq_score_desc"),
+            false, 0d, 0d,
+            1000d));
+    args.add(new DoubleParameter(
+            MessageManager.getString(JackHMMER.REPORTING_DOM_SCORE_KEY),
+            MessageManager.getString("label.reporting_dom_score_desc"),
+            false, 0d, 0d,
+            1000d));
+    args.add(new RadioChoiceParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_THRESHOLD_KEY),
+            null,
+            Arrays.asList(MessageManager.getString(HMMSearch.CUTOFF_EVALUE),
+                    MessageManager.getString(HMMSearch.CUTOFF_SCORE)),
+            MessageManager.getString(HmmerCommand.CUTOFF_EVALUE)));
+    args.add(new LogarithmicParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_SEQ_EVALUE_KEY),
+            MessageManager.getString("label.inclusion_seq_e_value_desc"),
+            false, 1D, 1E-100, 10D));
+    args.add(new LogarithmicParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_DOM_EVALUE_KEY),
+            MessageManager.getString("label.inclusion_dom_e_value_desc"),
+            false, 1D, 1E-100, 10D));
+    args.add(new DoubleParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_SEQ_SCORE_KEY),
+            MessageManager.getString("label.inclusion_seq_score_desc"),
+            false, 0d, 0d, 1000d));
+    args.add(new DoubleParameter(
+            MessageManager.getString(HMMSearch.INCLUSION_DOM_SCORE_KEY),
+            MessageManager.getString("label.inclusion_dom_score_desc"),
+            false, 0d, 0d, 1000d));
   }
 
   /**
@@ -254,6 +369,31 @@ public final class HMMERParamStore implements ParamDatastoreI
   }
 
   /**
+   * Adds an argument representing the choice of sequence against which to perform
+   * jackhmmer
+   * 
+   * @param args
+   */
+  protected void addChoiceOfSequence(List<ArgumentI> args)
+  {
+    List<SequenceI> sequences = viewport.getAlignment().getSequences();
+
+    List<String> options = new ArrayList<>();
+
+    for (SequenceI seq : sequences)
+    {
+      options.add(seq.getName());
+    }
+
+    String defseq = options.get(0);
+    ArgumentI arg = new StringParameter(
+            MessageManager.getString("label.use_sequence"), null, true,
+            defseq,
+            defseq, options, null);
+    args.add(arg);
+  }
+
+  /**
    * Answers default parameters for hmmbuild, taking into account any configured
    * as user preferences
    *