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