AAConWS further work and test cases
[jabaws.git] / testsrc / compbio / ws / client / TestAAConWS.java
1 package compbio.ws.client;\r
2 \r
3 import static org.testng.Assert.assertEquals;\r
4 import static org.testng.Assert.assertNotNull;\r
5 import static org.testng.Assert.fail;\r
6 \r
7 import java.io.File;\r
8 import java.io.FileInputStream;\r
9 import java.io.FileNotFoundException;\r
10 import java.io.IOException;\r
11 import java.net.MalformedURLException;\r
12 import java.net.URL;\r
13 import java.util.ArrayList;\r
14 import java.util.HashSet;\r
15 import java.util.List;\r
16 \r
17 import javax.xml.namespace.QName;\r
18 import javax.xml.ws.Service;\r
19 \r
20 import org.testng.annotations.BeforeTest;\r
21 import org.testng.annotations.Test;\r
22 \r
23 import compbio.data.msa.Annotation;\r
24 import compbio.data.sequence.FastaSequence;\r
25 import compbio.data.sequence.Method;\r
26 import compbio.data.sequence.Score;\r
27 import compbio.data.sequence.SequenceUtil;\r
28 import compbio.metadata.JobSubmissionException;\r
29 import compbio.metadata.LimitExceededException;\r
30 import compbio.metadata.PresetManager;\r
31 import compbio.metadata.ResultNotAvailableException;\r
32 import compbio.metadata.RunnerConfig;\r
33 import compbio.metadata.UnsupportedRuntimeException;\r
34 import compbio.metadata.WrongParameterException;\r
35 import compbio.runner.conservation.AACon;\r
36 import compbio.util.SysPrefs;\r
37 \r
38 public class TestAAConWS {\r
39 \r
40         Annotation<AACon> msaws;\r
41 \r
42         @BeforeTest\r
43         void initConnection() {\r
44                 URL url = null;\r
45                 try {\r
46                         url = new URL("http://localhost:8080/jabaws/AAConWS?wsdl");\r
47                 } catch (MalformedURLException e) {\r
48                         e.printStackTrace();\r
49                         fail(e.getLocalizedMessage());\r
50                 }\r
51                 String namespace = "http://msa.data.compbio/01/12/2010/";\r
52                 QName qname = new QName(namespace, "AAConWS");\r
53                 Service serv = Service.create(url, qname);\r
54                 msaws = serv.getPort(new QName(namespace, "AAConWSPort"),\r
55                                 Annotation.class);\r
56         }\r
57 \r
58         @Test\r
59         public void testAnalize() throws FileNotFoundException, IOException {\r
60 \r
61                 /*\r
62                  * MsaWS msaws = serv.getPort(new QName(\r
63                  * "http://msa.data.compbio/01/01/2010/", "ClustalWSPort"),\r
64                  * MsaWS.class);\r
65                  */\r
66                 // Annotation<AACon> msaws = serv.getPort(new QName(namespace,\r
67                 // "ClustalWSPort"), Annotation.class);\r
68 \r
69                 // List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
70                 // AAConTester.test_alignment_input));\r
71 \r
72                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
73                                 + File.separator;\r
74 \r
75                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
76                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
77                                                 + File.separator + "TO1381.fasta.aln"));\r
78 \r
79                 try {\r
80                         System.out.println("Pres: " + msaws.getPresets().getPresets());\r
81                         String jobId = msaws.analize(fsl);\r
82                         System.out.println("J: " + jobId);\r
83                         HashSet<Score> result = msaws.getConservation(jobId);\r
84                         assertNotNull(result);\r
85                         assertEquals(result.size(), 1);\r
86                         assertEquals(result.iterator().next().getMethod(), Method.SHENKIN);\r
87                         List<Float> scores = result.iterator().next().getScores();\r
88                         assertNotNull(scores);\r
89                         assertEquals(scores.size(), 568);\r
90 \r
91                         // Using presets\r
92                         PresetManager<AACon> presets = msaws.getPresets();\r
93                         jobId = msaws.presetAnalize(fsl,\r
94                                         presets.getPresetByName("Quick conservation"));\r
95                         result = msaws.getConservation(jobId);\r
96                         assertNotNull(result);\r
97                         assertEquals(result.size(), 13);\r
98 \r
99                         jobId = msaws.presetAnalize(fsl,\r
100                                         presets.getPresetByName("Slow conservation"));\r
101                         result = msaws.getConservation(jobId);\r
102                         assertNotNull(result);\r
103                         assertEquals(result.size(), 5);\r
104 \r
105                         jobId = msaws.presetAnalize(fsl,\r
106                                         presets.getPresetByName("Complete conservation"));\r
107                         result = msaws.getConservation(jobId);\r
108                         assertNotNull(result);\r
109                         assertEquals(result.size(), 18);\r
110 \r
111                 } catch (UnsupportedRuntimeException e) {\r
112                         e.printStackTrace();\r
113                         fail(e.getMessage());\r
114                 } catch (LimitExceededException e) {\r
115                         e.printStackTrace();\r
116                         fail(e.getMessage());\r
117                 } catch (JobSubmissionException e) {\r
118                         e.printStackTrace();\r
119                         fail(e.getMessage());\r
120                 } catch (ResultNotAvailableException e) {\r
121                         e.printStackTrace();\r
122                         fail(e.getMessage());\r
123                 } catch (WrongParameterException e) {\r
124                         e.printStackTrace();\r
125                         fail(e.getMessage());\r
126                 }\r
127 \r
128         }\r
129 \r
130         @Test\r
131         public void testPresetAnalize() throws FileNotFoundException, IOException {\r
132 \r
133                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
134                                 + File.separator;\r
135 \r
136                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
137                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
138                                                 + File.separator + "TO1381.fasta.aln"));\r
139 \r
140                 try {\r
141                         System.out.println("Pres: " + msaws.getPresets().getPresets());\r
142 \r
143                         // Using presets\r
144                         PresetManager<AACon> presets = msaws.getPresets();\r
145                         String jobId = msaws.presetAnalize(fsl,\r
146                                         presets.getPresetByName("Quick conservation"));\r
147                         HashSet<Score> result = msaws.getConservation(jobId);\r
148                         assertNotNull(result);\r
149                         assertEquals(result.size(), 13);\r
150 \r
151                         jobId = msaws.presetAnalize(fsl,\r
152                                         presets.getPresetByName("Slow conservation"));\r
153                         result = msaws.getConservation(jobId);\r
154                         assertNotNull(result);\r
155                         assertEquals(result.size(), 5);\r
156 \r
157                         jobId = msaws.presetAnalize(fsl,\r
158                                         presets.getPresetByName("Complete conservation"));\r
159                         result = msaws.getConservation(jobId);\r
160                         assertNotNull(result);\r
161                         assertEquals(result.size(), 18);\r
162 \r
163                 } catch (UnsupportedRuntimeException e) {\r
164                         e.printStackTrace();\r
165                         fail(e.getMessage());\r
166                 } catch (LimitExceededException e) {\r
167                         e.printStackTrace();\r
168                         fail(e.getMessage());\r
169                 } catch (JobSubmissionException e) {\r
170                         e.printStackTrace();\r
171                         fail(e.getMessage());\r
172                 } catch (ResultNotAvailableException e) {\r
173                         e.printStackTrace();\r
174                         fail(e.getMessage());\r
175                 } catch (WrongParameterException e) {\r
176                         e.printStackTrace();\r
177                         fail(e.getMessage());\r
178                 }\r
179 \r
180         }\r
181 \r
182         @Test\r
183         public void testCustomAnalize() throws FileNotFoundException, IOException {\r
184 \r
185                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
186                                 + File.separator;\r
187 \r
188                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
189                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
190                                                 + File.separator + "TO1381.fasta.aln"));\r
191 \r
192                 // Using options\r
193                 RunnerConfig<AACon> options = msaws.getRunnerOptions();\r
194                 // System.out.println(options.getArguments());\r
195 \r
196                 try {\r
197                         options.getArgument("Calculation method").setDefaultValue("SMERFS");\r
198                         String jobId = msaws.customAnalize(fsl, options.getArguments());\r
199                         HashSet<Score> result = msaws.getConservation(jobId);\r
200                         assertNotNull(result);\r
201                         assertEquals(result.size(), 1);\r
202                         assertEquals(\r
203                                         new ArrayList<Score>(result).get(0).getScores().get(0),\r
204                                         0.698f);\r
205 \r
206                         options.getArgument("Calculation method").setDefaultValue("SMERFS");\r
207                         options.removeArgument("Normalize");\r
208                         System.out.println(options);\r
209                         jobId = msaws.customAnalize(fsl, options.getArguments());\r
210                         result = msaws.getConservation(jobId);\r
211                         assertNotNull(result);\r
212                         assertEquals(result.size(), 1);\r
213                         assertEquals(\r
214                                         new ArrayList<Score>(result).get(0).getScores().get(0),\r
215                                         0.401f);\r
216 \r
217                 } catch (WrongParameterException e) {\r
218                         e.printStackTrace();\r
219                         fail(e.getMessage());\r
220                 } catch (UnsupportedRuntimeException e) {\r
221                         e.printStackTrace();\r
222                         fail(e.getMessage());\r
223                 } catch (LimitExceededException e) {\r
224                         e.printStackTrace();\r
225                         fail(e.getMessage());\r
226                 } catch (JobSubmissionException e) {\r
227                         e.printStackTrace();\r
228                         fail(e.getMessage());\r
229                 } catch (ResultNotAvailableException e) {\r
230                         e.printStackTrace();\r
231                         fail(e.getMessage());\r
232                 }\r
233         }\r
234 }\r