3 import jalview.bin.Cache;
4 import jalview.gui.Preferences;
5 import jalview.util.MessageManager;
6 import jalview.ws.params.ArgumentI;
7 import jalview.ws.params.ParamDatastoreI;
8 import jalview.ws.params.WsParamSetI;
9 import jalview.ws.params.simple.BooleanOption;
10 import jalview.ws.params.simple.IntegerParameter;
11 import jalview.ws.params.simple.LogarithmicParameter;
12 import jalview.ws.params.simple.Option;
13 import jalview.ws.params.simple.StringParameter;
15 import java.io.IOException;
16 import java.util.ArrayList;
17 import java.util.Collection;
18 import java.util.List;
19 import java.util.Scanner;
21 public final class HMMERParamStore implements ParamDatastoreI
23 private static final String HMMBUILD = "hmmbuild";
25 private static final String HMMALIGN = "hmmalign";
27 private static final String HMMSEARCH = "hmmsearch";
31 List<WsParamSetI> presets = new ArrayList<>();
33 private HMMERParamStore(String nam)
38 public static HMMERParamStore forBuild()
40 return new HMMERParamStore(HMMBUILD);
43 public static HMMERParamStore forAlign()
45 return new HMMERParamStore(HMMALIGN);
48 public static HMMERParamStore forSearch()
50 return new HMMERParamStore(HMMSEARCH);
54 public List<WsParamSetI> getPresets()
60 public WsParamSetI getPreset(String nam)
66 public List<ArgumentI> getServiceParameters()
68 List<ArgumentI> args = new ArrayList<>();
72 getHMMSearchParams(args);
75 getHMMAlignParams(args);
78 getHMMBuildParams(args);
86 private void getHMMSearchParams(List<ArgumentI> args)
88 args.add(new IntegerParameter(
89 MessageManager.getString("label.number_of_results"),
90 MessageManager.getString("label.number_of_results_desc"), true,
92 String names = Cache.getProperty(Preferences.HMMSEARCH_DBS);
93 if (names != null && !names.isEmpty())
95 Collection<String> databases = new ArrayList<>();
96 databases.add(MessageManager.getString("label.this_alignment"));
97 Scanner nameScanner = new Scanner(names);
99 if (nameScanner.hasNext())
101 while (nameScanner.hasNext())
103 String next = nameScanner.next();
104 if ("null".equals(next))
106 Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
107 Cache.setProperty(Preferences.HMMSEARCH_DB_PATHS, "");
116 args.add(new Option(MessageManager.getString("label.database"),
117 MessageManager.getString("label.database_for_hmmsearch"),
118 true, MessageManager.getString("label.this_alignment"),
119 MessageManager.getString("label.this_alignment"), databases,
122 args.add(new BooleanOption(
123 MessageManager.getString("label.auto_align_seqs"),
124 MessageManager.getString("label.auto_align_seqs_desc"), false,
126 args.add(new BooleanOption(
127 MessageManager.getString("label.use_accessions"),
128 MessageManager.getString("label.use_accessions_desc"), false,
130 args.add(new BooleanOption(
131 MessageManager.getString("label.trim_termini"),
132 MessageManager.getString("label.trim_termini_desc"), false,
134 args.add(new LogarithmicParameter(
135 MessageManager.getString("label.seq_e_value"),
136 MessageManager.getString("label.seq_e_value_desc"), false, -3d,
137 -37.92977945, 1d, 10d));
139 args.add(new DoubleParameter(
140 MessageManager.getString("label.seq_score"),
141 MessageManager.getString("label.seq_score_desc"), false,
144 args.add(new LogarithmicParameter(
145 MessageManager.getString("label.dom_e_value_desc"),
146 MessageManager.getString("label.dom_e_value_desc"), false, -3d,
147 -37.92977945, 1d, 10d));
149 args.add(new DoubleParameter(
150 MessageManager.getString("label.dom_score"),
151 MessageManager.getString("label.dom_score_desc"), false, 0d,
157 private void getHMMAlignParams(List<ArgumentI> args)
159 args.add(new BooleanOption(
160 MessageManager.getString("label.trim_termini"),
161 MessageManager.getString("label.trim_termini_desc"),
162 false, false, true, null));
165 private void getHMMBuildParams(List<ArgumentI> args)
167 args.add(new StringParameter(MessageManager.getString("label.hmm_name"),
168 MessageManager.getString("label.hmm_name_desc"), true, ""));
169 // todo only enable Use Reference Annotation if RF is present
170 args.add(new BooleanOption(
171 MessageManager.getString("label.use_reference"),
172 MessageManager.getString("label.use_reference_desc"), true,
175 Collection<String> options = new ArrayList<>();
176 options.add(MessageManager.getString("label.alignment"));
177 options.add(MessageManager.getString("label.groups_and_alignment"));
178 options.add(MessageManager.getString("label.groups"));
179 options.add(MessageManager.getString("label.selected_group"));
181 args.add(new Option(MessageManager.getString("label.hmmbuild_for"),
182 MessageManager.getString("label.hmmbuild_for_desc"), true,
183 MessageManager.getString("label.alignment"),
184 MessageManager.getString("label.alignment"), options, null));
188 public boolean presetExists(String forName)
194 public void deletePreset(String forName)
199 public void storePreset(String presetName, String text,
200 List<ArgumentI> jobParams)
205 public void updatePreset(String oldName, String presetName, String text,
206 List<ArgumentI> jobParams)
211 public WsParamSetI parseServiceParameterFile(String forName,
212 String description, String[] serviceURL, String parameters)
219 public String generateServiceParameterFile(WsParamSetI pset)