JAL-2629 add adjustable parameters to hmmbuild
[jalview.git] / src / jalview / hmmer / HMMERParamStore.java
1 package jalview.hmmer;
2
3
4 import jalview.bin.Cache;
5 import jalview.gui.Preferences;
6 import jalview.util.MessageManager;
7 import jalview.ws.params.ArgumentI;
8 import jalview.ws.params.ParamDatastoreI;
9 import jalview.ws.params.ValueConstrainI;
10 import jalview.ws.params.WsParamSetI;
11 import jalview.ws.params.simple.BooleanOption;
12 import jalview.ws.params.simple.IntegerParameter;
13 import jalview.ws.params.simple.LogarithmicParameter;
14 import jalview.ws.params.simple.Option;
15 import jalview.ws.params.simple.StringParameter;
16
17 import java.io.IOException;
18 import java.util.ArrayList;
19 import java.util.Collection;
20 import java.util.List;
21 import java.util.Scanner;
22
23
24 public class HMMERParamStore implements ParamDatastoreI
25 {
26
27   String name;
28
29   List<WsParamSetI> presets = new ArrayList<>();
30
31   public HMMERParamStore(String name)
32   {
33     this.name = name;
34   }
35
36   @Override
37   public List<WsParamSetI> getPresets()
38   {
39     // TODO Auto-generated method stub
40     return presets;
41   }
42
43   @Override
44   public WsParamSetI getPreset(String name)
45   {
46     // TODO Auto-generated method stub
47     return null;
48   }
49
50   @Override
51   public List<ArgumentI> getServiceParameters()
52   {
53     List<ArgumentI> args = new ArrayList<>();
54     if ("hmmsearch".equals(name))
55     {
56       getHMMSearchParams(args);
57     }
58     if ("hmmalign".equals(name))
59     {
60       getHMMAlignParams(args);
61
62     }
63     if ("hmmbuild".equals(name))
64     {
65       getHMMBuildParams(args);
66
67     }
68     return args;
69   }
70
71   private void getHMMSearchParams(List<ArgumentI> args)
72   {
73     args.add(new IntegerParameter(
74             MessageManager.getString("label.number_of_results"),
75             MessageManager.getString("label.number_of_results_desc"), true,
76             100, 0, 100000));
77     String names = Cache.getProperty(Preferences.HMMSEARCH_DBS);
78     if (names != null && !names.isEmpty())
79     {
80       Collection<String> databases = new ArrayList<>();
81       databases.add(MessageManager.getString("label.this_alignment"));
82       Scanner nameScanner = new Scanner(names);
83
84       if (nameScanner.hasNext())
85       {
86         while (nameScanner.hasNext())
87         {
88           String next = nameScanner.next();
89           if (next == "null")
90           {
91             Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
92             Cache.setProperty(Preferences.HMMSEARCH_DB_PATHS, "");
93           }
94           else
95           {
96             databases.add(next);
97           }
98         }
99       }
100       nameScanner.close();
101       args.add(new Option(MessageManager.getString("label.database"),
102               MessageManager.getString("label.database_for_hmmsearch"),
103               true, MessageManager.getString("label.this_alignment"),
104               MessageManager.getString("label.this_alignment"), databases,
105               null));
106     }
107     args.add(new BooleanOption(
108             MessageManager.getString("label.auto_align_seqs"),
109             MessageManager.getString("label.auto_align_seqs_desc"), false,
110             false, true, null));
111     args.add(new BooleanOption(
112             MessageManager.getString("label.use_accessions"),
113             MessageManager.getString("label.use_accessions_desc"), false,
114             false, true, null));
115     args.add(new BooleanOption(
116             MessageManager.getString("label.trim_termini"),
117             MessageManager.getString("label.trim_termini_desc"), false,
118             false, true, null));
119     args.add(new LogarithmicParameter(
120             MessageManager.getString("label.seq_e_value"),
121             MessageManager.getString("label.seq_e_value_desc"), false,
122             -3d, -37.92977945, 1d, 10d));
123     /*
124     args.add(new DoubleParameter(
125             MessageManager.getString("label.seq_score"),
126             MessageManager.getString("label.seq_score_desc"), false,
127             0d, 0d, 10000d));
128        */
129     args.add(new LogarithmicParameter(
130             MessageManager.getString("label.dom_e_value_desc"),
131             MessageManager.getString("label.dom_e_value_desc"), false,
132             -3d, -37.92977945, 1d, 10d));
133     /*
134     args.add(new DoubleParameter(
135             MessageManager.getString("label.dom_score"),
136             MessageManager.getString("label.dom_score_desc"), false, 0d,
137             0d,
138             10000d));
139             */
140   }
141
142
143   private void getHMMAlignParams(List<ArgumentI> args)
144   {
145     args.add(new BooleanOption(
146             MessageManager.getString("label.trim_termini"),
147             MessageManager.getString(
148                     "label.trim_termini = Trim Non-Matching Termini_desc"),
149             false, false, true, null));
150   }
151
152   private void getHMMBuildParams(List<ArgumentI> args)
153   {
154     args.add(new StringParameter(MessageManager.getString("label.hmm_name"),
155             MessageManager.getString("label.hmm_name_desc"), true, ""));
156     args.add(new BooleanOption(
157             MessageManager.getString("label.use_reference"),
158             MessageManager.getString("label.use_reference_desc"), true,
159             true, true, null));
160   }
161
162   private class StringValueConstrain implements ValueConstrainI
163   {
164
165     @Override
166     public ValueType getType()
167     {
168       return ValueType.String;
169     }
170
171     @Override
172     public Number getMax()
173     {
174       return null;
175     }
176
177     @Override
178     public Number getMin()
179     {
180       return null;
181     }
182
183   }
184
185   @Override
186   public boolean presetExists(String name)
187   {
188     // TODO Auto-generated method stub
189     return false;
190   }
191
192   @Override
193   public void deletePreset(String name)
194   {
195     // TODO Auto-generated method stub
196
197   }
198
199   @Override
200   public void storePreset(String presetName, String text,
201           List<ArgumentI> jobParams)
202   {
203     // TODO Auto-generated method stub
204
205   }
206
207   @Override
208   public void updatePreset(String oldName, String presetName, String text,
209           List<ArgumentI> jobParams)
210   {
211     // TODO Auto-generated method stub
212
213   }
214
215   @Override
216   public WsParamSetI parseServiceParameterFile(String name,
217           String description, String[] serviceURL, String parameters)
218           throws IOException
219   {
220     // TODO Auto-generated method stub
221     return null;
222   }
223
224   @Override
225   public String generateServiceParameterFile(WsParamSetI pset)
226           throws IOException
227   {
228     // TODO Auto-generated method stub
229     return null;
230   }
231
232 }