Replace Map<String, HashSet<Score>> with ScoreManager and ScoreHolder classes to...
[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.List;\r
12 \r
13 import org.testng.annotations.BeforeTest;\r
14 import org.testng.annotations.Test;\r
15 \r
16 import compbio.data.msa.JABAService;\r
17 import compbio.data.msa.SequenceAnnotation;\r
18 import compbio.data.sequence.ConservationMethod;\r
19 import compbio.data.sequence.FastaSequence;\r
20 import compbio.data.sequence.ScoreManager;\r
21 import compbio.data.sequence.SequenceUtil;\r
22 import compbio.metadata.JobSubmissionException;\r
23 import compbio.metadata.LimitExceededException;\r
24 import compbio.metadata.PresetManager;\r
25 import compbio.metadata.ResultNotAvailableException;\r
26 import compbio.metadata.RunnerConfig;\r
27 import compbio.metadata.UnsupportedRuntimeException;\r
28 import compbio.metadata.WrongParameterException;\r
29 import compbio.runner.conservation.AACon;\r
30 import compbio.util.SysPrefs;\r
31 \r
32 public class TestAAConWS {\r
33 \r
34         SequenceAnnotation<AACon> msaws;\r
35 \r
36         @BeforeTest\r
37         void initConnection() {\r
38                 /*\r
39                  * URL url = null; try { url = new\r
40                  * URL("http://localhost:8080/jabaws/AAConWS?wsdl"); } catch\r
41                  * (MalformedURLException e) { e.printStackTrace();\r
42                  * fail(e.getLocalizedMessage()); } String namespace =\r
43                  * "http://msa.data.compbio/01/12/2010/"; QName qname = new\r
44                  * QName(namespace, "AAConWS"); Service serv = Service.create(url,\r
45                  * qname); msaws = serv.getPort(new QName(namespace, "AAConWSPort"),\r
46                  * Annotation.class);\r
47                  */\r
48                 JABAService client = Jws2Client.connect("http://localhost:8080/jabaws",\r
49                                 Services.AAConWS);\r
50                 msaws = (SequenceAnnotation<AACon>) client;\r
51         }\r
52 \r
53         @Test\r
54         public void testAnalize() throws FileNotFoundException, IOException {\r
55 \r
56                 /*\r
57                  * MsaWS msaws = serv.getPort(new QName(\r
58                  * "http://msa.data.compbio/01/01/2010/", "ClustalWSPort"),\r
59                  * MsaWS.class);\r
60                  */\r
61                 // Annotation<AACon> msaws = serv.getPort(new QName(namespace,\r
62                 // "ClustalWSPort"), Annotation.class);\r
63 \r
64                 // List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
65                 // AAConTester.test_alignment_input));\r
66 \r
67                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
68                                 + File.separator;\r
69 \r
70                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
71                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
72                                                 + File.separator + "TO1381.fasta.aln"));\r
73 \r
74                 try {\r
75                         System.out.println("Pres: " + msaws.getPresets().getPresets());\r
76                         String jobId = msaws.analize(fsl);\r
77                         System.out.println("J: " + jobId);\r
78                         ScoreManager result = msaws.getAnnotation(jobId);\r
79                         assertNotNull(result);\r
80                         assertEquals(result.asSet().size(), 1);\r
81 \r
82                         assertEquals(result.asSet().iterator().next().getMethod(),\r
83                                         ConservationMethod.SHENKIN);\r
84                         List<Float> scores = result.asSet().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.asSet().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.asSet().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.asSet().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         @Test\r
127         public void testPresetAnalize() throws FileNotFoundException, IOException {\r
128 \r
129                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
130                                 + File.separator;\r
131 \r
132                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
133                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
134                                                 + File.separator + "TO1381.fasta.aln"));\r
135 \r
136                 try {\r
137                         System.out.println("Pres: " + msaws.getPresets().getPresets());\r
138 \r
139                         // Using presets\r
140                         PresetManager<AACon> presets = msaws.getPresets();\r
141                         String jobId = msaws.presetAnalize(fsl,\r
142                                         presets.getPresetByName("Quick conservation"));\r
143                         ScoreManager result = msaws.getAnnotation(jobId);\r
144                         assertNotNull(result);\r
145                         assertEquals(result.asSet().size(), 13);\r
146 \r
147                         jobId = msaws.presetAnalize(fsl,\r
148                                         presets.getPresetByName("Slow conservation"));\r
149                         result = msaws.getAnnotation(jobId);\r
150                         assertNotNull(result);\r
151                         assertEquals(result.asSet().size(), 5);\r
152 \r
153                         jobId = msaws.presetAnalize(fsl,\r
154                                         presets.getPresetByName("Complete conservation"));\r
155                         result = msaws.getAnnotation(jobId);\r
156                         assertNotNull(result);\r
157                         assertEquals(result.asSet().size(), 18);\r
158 \r
159                 } catch (UnsupportedRuntimeException e) {\r
160                         e.printStackTrace();\r
161                         fail(e.getMessage());\r
162                 } catch (LimitExceededException e) {\r
163                         e.printStackTrace();\r
164                         fail(e.getMessage());\r
165                 } catch (JobSubmissionException e) {\r
166                         e.printStackTrace();\r
167                         fail(e.getMessage());\r
168                 } catch (ResultNotAvailableException e) {\r
169                         e.printStackTrace();\r
170                         fail(e.getMessage());\r
171                 } catch (WrongParameterException e) {\r
172                         e.printStackTrace();\r
173                         fail(e.getMessage());\r
174                 }\r
175 \r
176         }\r
177 \r
178         @Test\r
179         public void testCustomAnalize() throws FileNotFoundException, IOException {\r
180 \r
181                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
182                                 + File.separator;\r
183 \r
184                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
185                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
186                                                 + File.separator + "TO1381.fasta.aln"));\r
187 \r
188                 // Using options\r
189                 RunnerConfig<AACon> options = msaws.getRunnerOptions();\r
190                 // System.out.println(options.getArguments());\r
191 \r
192                 try {\r
193                         options.getArgument("Calculation method").setDefaultValue("SMERFS");\r
194                         // options.getArgument("SMERFS Column Scoring Method")\r
195                         // .setDefaultValue("MAX_SCORE");\r
196                         // options.getArgument("SMERFS Gap Threshhold").setDefaultValue("1");\r
197                         String jobId = msaws.customAnalize(fsl, options.getArguments());\r
198                         ScoreManager result = msaws.getAnnotation(jobId);\r
199                         assertNotNull(result);\r
200                         assertEquals(result.asSet().size(), 1);\r
201                         assertEquals(result.asSet().iterator().next().getScores().get(0),\r
202                                         0.698f);\r
203 \r
204                         options.getArgument("Calculation method").setDefaultValue("SMERFS");\r
205                         options.removeArgument("Normalize");\r
206                         System.out.println(options);\r
207                         jobId = msaws.customAnalize(fsl, options.getArguments());\r
208                         result = msaws.getAnnotation(jobId);\r
209                         assertNotNull(result);\r
210                         assertEquals(result.asSet().size(), 1);\r
211                         assertEquals(result.asSet().iterator().next().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