JAL-2629 simplifying method signatures in Hmmer command classes
[jalview.git] / src / jalview / hmmer / HMMERParamStore.java
1 package jalview.hmmer;
2
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;
14
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;
20
21 public class HMMERParamStore implements ParamDatastoreI
22 {
23   String name;
24
25   List<WsParamSetI> presets = new ArrayList<>();
26
27   public HMMERParamStore(String nam)
28   {
29     this.name = nam;
30   }
31
32   @Override
33   public List<WsParamSetI> getPresets()
34   {
35     return presets;
36   }
37
38   @Override
39   public WsParamSetI getPreset(String nam)
40   {
41     return null;
42   }
43
44   @Override
45   public List<ArgumentI> getServiceParameters()
46   {
47     List<ArgumentI> args = new ArrayList<>();
48     if ("hmmsearch".equals(name))
49     {
50       getHMMSearchParams(args);
51     }
52     if ("hmmalign".equals(name))
53     {
54       getHMMAlignParams(args);
55
56     }
57     if ("hmmbuild".equals(name))
58     {
59       getHMMBuildParams(args);
60
61     }
62     return args;
63   }
64
65   private void getHMMSearchParams(List<ArgumentI> args)
66   {
67     args.add(new IntegerParameter(
68             MessageManager.getString("label.number_of_results"),
69             MessageManager.getString("label.number_of_results_desc"), true,
70             100, 0, 100000));
71     String names = Cache.getProperty(Preferences.HMMSEARCH_DBS);
72     if (names != null && !names.isEmpty())
73     {
74       Collection<String> databases = new ArrayList<>();
75       databases.add(MessageManager.getString("label.this_alignment"));
76       Scanner nameScanner = new Scanner(names);
77
78       if (nameScanner.hasNext())
79       {
80         while (nameScanner.hasNext())
81         {
82           String next = nameScanner.next();
83           if (next == "null")
84           {
85             Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
86             Cache.setProperty(Preferences.HMMSEARCH_DB_PATHS, "");
87           }
88           else
89           {
90             databases.add(next);
91           }
92         }
93       }
94       nameScanner.close();
95       args.add(new Option(MessageManager.getString("label.database"),
96               MessageManager.getString("label.database_for_hmmsearch"),
97               true, MessageManager.getString("label.this_alignment"),
98               MessageManager.getString("label.this_alignment"), databases,
99               null));
100     }
101     args.add(new BooleanOption(
102             MessageManager.getString("label.auto_align_seqs"),
103             MessageManager.getString("label.auto_align_seqs_desc"), false,
104             false, true, null));
105     args.add(new BooleanOption(
106             MessageManager.getString("label.use_accessions"),
107             MessageManager.getString("label.use_accessions_desc"), false,
108             false, true, null));
109     args.add(new BooleanOption(
110             MessageManager.getString("label.trim_termini"),
111             MessageManager.getString("label.trim_termini_desc"), false,
112             false, true, null));
113     args.add(new LogarithmicParameter(
114             MessageManager.getString("label.seq_e_value"),
115             MessageManager.getString("label.seq_e_value_desc"), false, -3d,
116             -37.92977945, 1d, 10d));
117     /*
118     args.add(new DoubleParameter(
119             MessageManager.getString("label.seq_score"),
120             MessageManager.getString("label.seq_score_desc"), false,
121             0d, 0d, 10000d));
122        */
123     args.add(new LogarithmicParameter(
124             MessageManager.getString("label.dom_e_value_desc"),
125             MessageManager.getString("label.dom_e_value_desc"), false, -3d,
126             -37.92977945, 1d, 10d));
127     /*
128     args.add(new DoubleParameter(
129             MessageManager.getString("label.dom_score"),
130             MessageManager.getString("label.dom_score_desc"), false, 0d,
131             0d,
132             10000d));
133             */
134   }
135
136   private void getHMMAlignParams(List<ArgumentI> args)
137   {
138     args.add(new BooleanOption(
139             MessageManager.getString("label.trim_termini"),
140             MessageManager.getString("label.trim_termini_desc"),
141             false, false, true, null));
142   }
143
144   private void getHMMBuildParams(List<ArgumentI> args)
145   {
146     args.add(new StringParameter(MessageManager.getString("label.hmm_name"),
147             MessageManager.getString("label.hmm_name_desc"), true, ""));
148     // todo only enable Use Reference Annotation if RF is present
149     args.add(new BooleanOption(
150             MessageManager.getString("label.use_reference"),
151             MessageManager.getString("label.use_reference_desc"), true,
152             true, true, null));
153
154     Collection<String> options = new ArrayList<>();
155     options.add(MessageManager.getString("label.alignment"));
156     options.add(MessageManager.getString("label.groups_and_alignment"));
157     options.add(MessageManager.getString("label.groups"));
158     options.add(MessageManager.getString("label.selected_group"));
159
160     args.add(new Option(MessageManager.getString("label.hmmbuild_for"),
161             MessageManager.getString("label.hmmbuild_for_desc"), true,
162             MessageManager.getString("label.alignment"),
163             MessageManager.getString("label.alignment"), options, null));
164   }
165
166   @Override
167   public boolean presetExists(String name)
168   {
169     return false;
170   }
171
172   @Override
173   public void deletePreset(String name)
174   {
175   }
176
177   @Override
178   public void storePreset(String presetName, String text,
179           List<ArgumentI> jobParams)
180   {
181     // TODO Auto-generated method stub
182
183   }
184
185   @Override
186   public void updatePreset(String oldName, String presetName, String text,
187           List<ArgumentI> jobParams)
188   {
189   }
190
191   @Override
192   public WsParamSetI parseServiceParameterFile(String name,
193           String description, String[] serviceURL, String parameters)
194           throws IOException
195   {
196     return null;
197   }
198
199   @Override
200   public String generateServiceParameterFile(WsParamSetI pset)
201           throws IOException
202   {
203     return null;
204   }
205
206 }