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