--- /dev/null
+package jalview.hmmer;
+
+import jalview.bin.Cache;
+import jalview.gui.Preferences;
+import jalview.util.MessageManager;
+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.IntegerParameter;
+import jalview.ws.params.simple.LogarithmicParameter;
+import jalview.ws.params.simple.Option;
+import jalview.ws.params.simple.StringParameter;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Scanner;
+
+public final class HMMERParamStore implements ParamDatastoreI
+{
+ private static final String HMMBUILD = "hmmbuild";
+
+ private static final String HMMALIGN = "hmmalign";
+
+ private static final String HMMSEARCH = "hmmsearch";
+
+ String name;
+
+ List<WsParamSetI> presets = new ArrayList<>();
+
+ private HMMERParamStore(String nam)
+ {
+ this.name = nam;
+ }
+
+ public static HMMERParamStore forBuild()
+ {
+ return new HMMERParamStore(HMMBUILD);
+ }
+
+ public static HMMERParamStore forAlign()
+ {
+ return new HMMERParamStore(HMMALIGN);
+ }
+
+ public static HMMERParamStore forSearch()
+ {
+ return new HMMERParamStore(HMMSEARCH);
+ }
+
+ @Override
+ public List<WsParamSetI> getPresets()
+ {
+ return presets;
+ }
+
+ @Override
+ public WsParamSetI getPreset(String nam)
+ {
+ return null;
+ }
+
+ @Override
+ public List<ArgumentI> getServiceParameters()
+ {
+ List<ArgumentI> args = new ArrayList<>();
+ switch (name)
+ {
+ case HMMSEARCH:
+ getHMMSearchParams(args);
+ break;
+ case HMMALIGN:
+ getHMMAlignParams(args);
+ break;
+ case HMMBUILD:
+ getHMMBuildParams(args);
+ break;
+ default:
+ }
+
+ return args;
+ }
+
+ private void getHMMSearchParams(List<ArgumentI> 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())
+ {
+ Collection<String> databases = new ArrayList<>();
+ databases.add(MessageManager.getString("label.this_alignment"));
+ Scanner nameScanner = new Scanner(names);
+
+ if (nameScanner.hasNext())
+ {
+ while (nameScanner.hasNext())
+ {
+ String next = nameScanner.next();
+ if ("null".equals(next))
+ {
+ Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
+ Cache.setProperty(Preferences.HMMSEARCH_DB_PATHS, "");
+ }
+ else
+ {
+ databases.add(next);
+ }
+ }
+ }
+ nameScanner.close();
+ args.add(new Option(MessageManager.getString("label.database"),
+ MessageManager.getString("label.database_for_hmmsearch"),
+ true, MessageManager.getString("label.this_alignment"),
+ MessageManager.getString("label.this_alignment"), databases,
+ null));
+ }
+ args.add(new BooleanOption(
+ MessageManager.getString("label.auto_align_seqs"),
+ MessageManager.getString("label.auto_align_seqs_desc"), false,
+ false, true, null));
+ args.add(new BooleanOption(
+ MessageManager.getString("label.use_accessions"),
+ MessageManager.getString("label.use_accessions_desc"), false,
+ false, true, null));
+ args.add(new BooleanOption(
+ MessageManager.getString("label.trim_termini"),
+ MessageManager.getString("label.trim_termini_desc"), false,
+ false, true, null));
+ args.add(new LogarithmicParameter(
+ MessageManager.getString("label.seq_e_value"),
+ MessageManager.getString("label.seq_e_value_desc"), false, -3d,
+ -37.92977945, 1d, 10d));
+ /*
+ args.add(new DoubleParameter(
+ MessageManager.getString("label.seq_score"),
+ MessageManager.getString("label.seq_score_desc"), false,
+ 0d, 0d, 10000d));
+ */
+ args.add(new LogarithmicParameter(
+ MessageManager.getString("label.dom_e_value_desc"),
+ MessageManager.getString("label.dom_e_value_desc"), false, -3d,
+ -37.92977945, 1d, 10d));
+ /*
+ args.add(new DoubleParameter(
+ MessageManager.getString("label.dom_score"),
+ MessageManager.getString("label.dom_score_desc"), false, 0d,
+ 0d,
+ 10000d));
+ */
+ }
+
+ private void getHMMAlignParams(List<ArgumentI> args)
+ {
+ args.add(new BooleanOption(
+ MessageManager.getString("label.trim_termini"),
+ MessageManager.getString("label.trim_termini_desc"),
+ false, false, true, null));
+ }
+
+ private void getHMMBuildParams(List<ArgumentI> args)
+ {
+ args.add(new StringParameter(MessageManager.getString("label.hmm_name"),
+ MessageManager.getString("label.hmm_name_desc"), true, ""));
+ // todo only enable Use Reference Annotation if RF is present
+ args.add(new BooleanOption(
+ MessageManager.getString("label.use_reference"),
+ MessageManager.getString("label.use_reference_desc"), true,
+ true, true, null));
+
+ 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
+ public boolean presetExists(String forName)
+ {
+ return false;
+ }
+
+ @Override
+ public void deletePreset(String forName)
+ {
+ }
+
+ @Override
+ public void storePreset(String presetName, String text,
+ List<ArgumentI> jobParams)
+ {
+ }
+
+ @Override
+ public void updatePreset(String oldName, String presetName, String text,
+ List<ArgumentI> jobParams)
+ {
+ }
+
+ @Override
+ public WsParamSetI parseServiceParameterFile(String forName,
+ String description, String[] serviceURL, String parameters)
+ throws IOException
+ {
+ return null;
+ }
+
+ @Override
+ public String generateServiceParameterFile(WsParamSetI pset)
+ throws IOException
+ {
+ return null;
+ }
+
+}