1 package jalview.ws2.client.ebi;
3 import jalview.ws.params.ArgumentI;
4 import jalview.ws.params.ParamDatastoreI;
5 import jalview.ws.params.ParamManager;
6 import jalview.ws.params.simple.*;
7 import jalview.ws2.params.SimpleParamDatastore;
9 import java.net.MalformedURLException;
11 import java.util.ArrayList;
12 import java.util.Collections;
13 import java.util.List;
17 static final List<ArgumentI> phmmerParameters;
20 * Set up phmmer parameters list.
24 var parameters = new ArrayList<ArgumentI>();
28 baseURL = new URL( "https://www.ebi.ac.uk/Tools/services/rest/hmmer3_phmmer/");
29 } catch (MalformedURLException e)
31 throw new ExceptionInInitializerError(e);
34 var builder = StringParameter.newBuilder();
35 builder.setName("cut-offs");
36 builder.setLabel("Cut-offs");
37 builder.setDescription("Set the method of controlling which target sequences match your query.");
38 builder.setRequired(true);
39 builder.setValue("E");
40 builder.setDefaultValue("E");
41 builder.setPossibleValues(List.of("E", "T"));
42 builder.setDisplayValues(List.of("E-values", "Bit scores"));
43 parameters.add(builder.build());
46 var builder = DoubleParameter.newBuilder();
47 builder.setName("incE");
48 builder.setLabel("Significance E-values[Sequence]");
49 builder.setDescription("Significance E-values[Sequence]");
50 builder.setRequired(false);
51 builder.setValue(0.01);
52 builder.setDefaultValue(0.01);
55 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/incE"));
56 parameters.add(builder.build());
59 var builder = DoubleParameter.newBuilder();
60 builder.setName("incdomE");
61 builder.setLabel("Significance E-values[Hit]");
62 builder.setDescription("Significance E-values[Hit]");
63 builder.setRequired(false);
64 builder.setValue(0.03);
65 builder.setDefaultValue(0.03);
68 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/incdomE"));
69 parameters.add(builder.build());
72 var builder = DoubleParameter.newBuilder();
74 builder.setLabel("Report E-values[Sequence]");
75 builder.setDescription("Report E-values[Sequence]");
76 builder.setRequired(false);
77 builder.setValue(1.0);
78 builder.setDefaultValue(1.0);
81 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/E"));
82 parameters.add(builder.build());
85 var builder = DoubleParameter.newBuilder();
86 builder.setName("domE");
87 builder.setLabel("Report E-values[Hit]");
88 builder.setDescription("Report E-values[Hit]");
89 builder.setRequired(false);
90 builder.setValue(1.0);
91 builder.setDefaultValue(1.0);
94 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/domE"));
95 parameters.add(builder.build());
98 var builder = DoubleParameter.newBuilder();
99 builder.setName("incT");
100 builder.setLabel("Significance bit scores[Sequence]");
101 builder.setDescription("Significance bit scores[Sequence]");
102 builder.setRequired(false);
103 builder.setValue(25.0);
104 builder.setDefaultValue(25.0);
106 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/incT"));
107 parameters.add(builder.build());
110 var builder = DoubleParameter.newBuilder();
111 builder.setName("incdomT");
112 builder.setLabel("Significance bit scores[Hit]");
113 builder.setDescription("Significance bit scores[Hit]");
114 builder.setRequired(false);
115 builder.setValue(22.0);
116 builder.setDefaultValue(22.0);
118 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/incdomT"));
119 parameters.add(builder.build());
122 var builder = DoubleParameter.newBuilder();
123 builder.setName("T");
124 builder.setLabel("Report bit scores[Sequence]");
125 builder.setDescription("Report bit scores[Sequence]");
126 builder.setRequired(false);
127 builder.setValue(7.0);
128 builder.setDefaultValue(7.0);
130 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/T"));
131 parameters.add(builder.build());
134 var builder = DoubleParameter.newBuilder();
135 builder.setName("domT");
136 builder.setLabel("Report bit scores[Hit]");
137 builder.setDescription("Report bit scores[Hit]");
138 builder.setRequired(false);
139 builder.setValue(5.0);
140 builder.setDefaultValue(5.0);
142 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/domT"));
143 parameters.add(builder.build());
146 var builder = DoubleParameter.newBuilder();
147 builder.setName("popen");
148 builder.setLabel("Gap Penalties[open]");
149 builder.setDescription("Gap Penalties[open]");
150 builder.setRequired(false);
151 builder.setValue(0.02);
152 builder.setDefaultValue(0.02);
155 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/popen"));
156 parameters.add(builder.build());
159 var builder = DoubleParameter.newBuilder();
160 builder.setName("pextend");
161 builder.setLabel("Gap Penalties[extend]");
162 builder.setDescription("Gap Penalties[extend]");
163 builder.setRequired(false);
164 builder.setValue(0.4);
165 builder.setDefaultValue(0.4);
168 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/pextend"));
169 parameters.add(builder.build());
172 var builder = StringParameter.newBuilder();
173 builder.setName("mx");
174 builder.setLabel("Gap Penalties[Substitution scoring matrix]");
175 builder.setDescription("Gap Penalties[Substitution scoring matrix]");
176 builder.setRequired(false);
177 builder.setValue("BLOSUM62");
178 builder.setDefaultValue("BLOSUM62");
179 builder.setPossibleValues(List.of("BLOSUM45", "BLOSUM62", "BLOSUM90", "PAM30", "PAM70"));
180 builder.setDisplayValues(List.of("BLOSUM45", "BLOSUM62", "BLOSUM90", "PAM30", "PAM70"));
181 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/mx"));
182 parameters.add(builder.build());
185 var builder = BooleanOption.newBuilder();
186 builder.setName("nobias");
187 builder.setLabel("No bias filter");
188 builder.setDescription(
189 "The '--nobias' option turns off (bypasses) the biased composition filter which is on by default.");
190 builder.setRequired(false);
191 builder.setValue(false);
192 builder.setDefaultValue(false);
193 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/nobias"));
194 parameters.add(builder.build());
197 var builder = BooleanOption.newBuilder();
198 builder.setName("compressedout");
199 builder.setLabel("Compressed Output");
200 builder.setDescription(
201 "By default it runs hmm2c plus post-processing (default output), whereas with compressedout, it gets compressed output only.");
202 builder.setRequired(false);
203 builder.setValue(false);
204 builder.setDefaultValue(false);
205 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/compressedout"));
206 parameters.add(builder.build());
209 var builder = BooleanOption.newBuilder();
210 builder.setName("alignView");
211 builder.setLabel("Output Alignment");
212 builder.setDescription("Output alignment in result");
213 builder.setRequired(false);
214 builder.setValue(true);
215 builder.setDefaultValue(true);
216 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/alignView"));
217 parameters.add(builder.build());
220 var builder = StringParameter.newBuilder();
221 builder.setName("database");
222 builder.setLabel("Sequence Database");
223 builder.setDescription("Sequence Database Selection");
224 builder.setRequired(true);
225 builder.setValue("uniprotkb");
226 builder.setDefaultValue("uniprotkb");
227 builder.setPossibleValues(List.of("swissprot", "uniprotrefprot", "uniprotkb", "pdb", "rp75", "rp55", "rp35", "rp15", "ensembl", "merops", "qfo", "chembl"));
228 builder.setDisplayValues(List.of("SwissProt", "Reference Proteomes", "UniProtKB", "PDB", "rp75", "rp55", "rp35", "rp15", "Ensembl", "MEROPS", "Quest for Orthologs", "ChEMBL"));
229 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/database"));
230 parameters.add(builder.build());
233 var builder = DoubleParameter.newBuilder();
234 builder.setName("evalue");
235 builder.setLabel("Expectation Value Threshold");
236 builder.setDescription(
237 "Expectation value cut-off for reporting target profiles in the per-target output.");
238 builder.setRequired(false);
239 builder.setValue(0.01);
240 builder.setDefaultValue(0.01);
241 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/evalue"));
242 parameters.add(builder.build());
245 // var builder = StringParameter.newBuilder();
246 // builder.setName("sequence");
247 // builder.setLabel("Input Sequence");
248 // builder.setDescription(
249 // "The input sequence can be entered directly into this form. The sequence can be be in FASTA or UniProtKB/Swiss-Prot format. A partially formatted sequence is not accepted. Adding a return to the end of the sequence may help certain applications understand the input. Note that directly using data from word processors may yield unpredictable results as hidden/control characters may be present.");
250 // builder.setRequired(false);
252 // builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/sequence"));
253 // parameters.add(builder.build());
256 var builder = IntegerParameter.newBuilder();
257 builder.setName("nhits");
258 builder.setLabel("Number of Hits Displayed");
259 builder.setDescription("Number of hits to be displayed.");
260 builder.setRequired(false);
261 builder.setValue(100);
262 builder.setDefaultValue(100);
263 builder.setDetailsUrl(resolveURL(baseURL, "parameterdetails/nhits"));
264 parameters.add(builder.build());
266 phmmerParameters = Collections.unmodifiableList(parameters);
269 private static URL resolveURL(URL base, String spec)
273 return new URL(base, spec);
274 } catch (MalformedURLException e)
276 throw new ExceptionInInitializerError(e);
280 public static ParamDatastoreI newPhmmerDatastore(URL url, ParamManager manager)
282 return new SimpleParamDatastore(url, phmmerParameters,
283 Collections.emptyList(), manager);