Replace Map<String, HashSet<Score>> with ScoreManager and ScoreHolder classes to...
[jabaws.git] / testsrc / compbio / ws / client / AAConWSClientExample.java
1 package compbio.ws.client;\r
2 \r
3 import java.io.ByteArrayInputStream;\r
4 import java.io.FileNotFoundException;\r
5 import java.io.IOException;\r
6 import java.util.List;\r
7 \r
8 import compbio.data.msa.SequenceAnnotation;\r
9 import compbio.data.sequence.FastaSequence;\r
10 import compbio.data.sequence.ScoreManager;\r
11 import compbio.data.sequence.SequenceUtil;\r
12 import compbio.metadata.JobSubmissionException;\r
13 import compbio.metadata.Preset;\r
14 import compbio.metadata.PresetManager;\r
15 import compbio.metadata.ResultNotAvailableException;\r
16 import compbio.metadata.UnsupportedRuntimeException;\r
17 import compbio.metadata.WrongParameterException;\r
18 import compbio.runner.conservation.AACon;\r
19 \r
20 /**\r
21  * AAConWS client example\r
22  */\r
23 public class AAConWSClientExample {\r
24 \r
25         /*\r
26          * Input sequences. For the simplicity keep them in the class\r
27          */\r
28         static final String input = ">Foo      \r\n"\r
29                         + "MTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\r\n"\r
30                         + "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL\r\n"\r
31                         + "LPEEPYITAQLLNWRRRLCDWRALDVLSAQVRAAVAQGVGAVEPFAFLSEDASAAEQLAC\r\n"\r
32                         + "ARTRAQAIAASVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
33                         + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
34                         + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
35                         + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
36                         + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
37                         + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
38                         + "GVFEMDGFADDFGALLQALARRHGWLGI\r\n"\r
39                         + "\r\n"\r
40                         + ">Bar                    \r\n"\r
41                         + "-----------------------------------MGDTTAGEMAVQRGLALH-------\r\n"\r
42                         + "---------QQRHAEAAVLLQQASDAAPEHPGIALWL-HALEDAGQAEAAAA-YTRAHQL\r\n"\r
43                         + "LPEEPYITAQLLN--------------------AVAQGVGAVEPFAFLSEDASAAE----\r\n"\r
44                         + "----------SVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
45                         + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
46                         + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
47                         + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
48                         + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
49                         + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
50                         + "GVFEMDGFADDFGALLQALARRHGWLGI\r\n"\r
51                         + "\r\n"\r
52                         + ">Noname             \r\n"\r
53                         + "-MTADGPRELLQLRAAVRHRPQDVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\r\n"\r
54                         + "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALED--------------HQL\r\n"\r
55                         + "LPEEPYITAQLDVLSAQVR-------------AAVAQGVGAVEPFAFLSEDASAAEQLAC\r\n"\r
56                         + "ARTRAQAIAASVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
57                         + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
58                         + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
59                         + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
60                         + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
61                         + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
62                         + "I---------------------------";\r
63 \r
64         public static void main(String[] args) throws UnsupportedRuntimeException,\r
65                         JobSubmissionException, WrongParameterException,\r
66                         FileNotFoundException, IOException, ResultNotAvailableException,\r
67                         InterruptedException {\r
68 \r
69                 /*\r
70                  * Annotation interface for AAConWS web service instance\r
71                  */\r
72                 SequenceAnnotation<AACon> client = (SequenceAnnotation<AACon>) Jws2Client\r
73                                 .connect("http://www.compbio.dundee.ac.uk/aacon",\r
74                                                 Services.AAConWS);\r
75 \r
76                 /* Get the list of available presets */\r
77                 PresetManager presetman = client.getPresets();\r
78 \r
79                 /* Get the Preset object by preset name */\r
80                 Preset preset = presetman.getPresetByName("Complete conservation");\r
81 \r
82                 /*\r
83                  * Load sequences in FASTA format from the file You can use something\r
84                  * like new FileInputStream() to load sequence from the file\r
85                  */\r
86                 List<FastaSequence> fastalist = SequenceUtil\r
87                                 .readFasta(new ByteArrayInputStream(input.getBytes()));\r
88 \r
89                 /*\r
90                  * Submit loaded sequences for an alignment using preset. The job\r
91                  * identifier is returned by this method, you can retrieve the results\r
92                  * with it sometime later.\r
93                  */\r
94                 String jobId = client.presetAnalize(fastalist, preset);\r
95 \r
96                 /* This method will block for the duration of the calculation */\r
97                 ScoreManager result = client.getAnnotation(jobId);\r
98 \r
99                 /*\r
100                  * This is a better way of obtaining results, it does not involve\r
101                  * holding the connection open for the duration of the calculation,\r
102                  * Besides, as the University of Dundee public server will reset the\r
103                  * connection after 10 minutes of idling, this is the only way to obtain\r
104                  * the results of long running task from our public server.\r
105                  */\r
106                 // while (client.getJobStatus(jobId) != JobStatus.FINISHED) {\r
107                 // Thread.sleep(1000); // wait a second, then recheck the status\r
108                 // }\r
109 \r
110                 /* Output the alignment to standard out */\r
111                 IOHelper.writeOut(System.out, result);\r
112                 // Score.write(result, System.out);\r
113 \r
114                 /* Alternatively, you can record retrieved alignment into the file */\r
115                 // FileOutputStream out = new FileOutputStream("result.txt");\r
116                 // Score.write(result, out);\r
117                 // out.close();\r
118         }\r
119 }\r