AAConWS further work
[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 import java.util.Set;\r
8 \r
9 import compbio.data.msa.Annotation;\r
10 import compbio.data.sequence.FastaSequence;\r
11 import compbio.data.sequence.Score;\r
12 import compbio.data.sequence.SequenceUtil;\r
13 import compbio.metadata.JobSubmissionException;\r
14 import compbio.metadata.Preset;\r
15 import compbio.metadata.PresetManager;\r
16 import compbio.metadata.ResultNotAvailableException;\r
17 import compbio.metadata.UnsupportedRuntimeException;\r
18 import compbio.metadata.WrongParameterException;\r
19 import compbio.runner.conservation.AACon;\r
20 \r
21 /**\r
22  * AAConWS client example\r
23  */\r
24 public class AAConWSClientExample {\r
25 \r
26         /*\r
27          * Input sequences. For the simplicity keep them in the class\r
28          */\r
29         static final String input = ">Foo      \r\n"\r
30                         + "MTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\r\n"\r
31                         + "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL\r\n"\r
32                         + "LPEEPYITAQLLNWRRRLCDWRALDVLSAQVRAAVAQGVGAVEPFAFLSEDASAAEQLAC\r\n"\r
33                         + "ARTRAQAIAASVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
34                         + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
35                         + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
36                         + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
37                         + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
38                         + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
39                         + "GVFEMDGFADDFGALLQALARRHGWLGI\r\n"\r
40                         + "\r\n"\r
41                         + ">Bar                    \r\n"\r
42                         + "-----------------------------------MGDTTAGEMAVQRGLALH-------\r\n"\r
43                         + "---------QQRHAEAAVLLQQASDAAPEHPGIALWL-HALEDAGQAEAAAA-YTRAHQL\r\n"\r
44                         + "LPEEPYITAQLLN--------------------AVAQGVGAVEPFAFLSEDASAAE----\r\n"\r
45                         + "----------SVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
46                         + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
47                         + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
48                         + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
49                         + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
50                         + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
51                         + "GVFEMDGFADDFGALLQALARRHGWLGI\r\n"\r
52                         + "\r\n"\r
53                         + ">Noname             \r\n"\r
54                         + "-MTADGPRELLQLRAAVRHRPQDVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\r\n"\r
55                         + "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALED--------------HQL\r\n"\r
56                         + "LPEEPYITAQLDVLSAQVR-------------AAVAQGVGAVEPFAFLSEDASAAEQLAC\r\n"\r
57                         + "ARTRAQAIAASVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
58                         + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
59                         + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
60                         + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
61                         + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
62                         + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
63                         + "I---------------------------";\r
64 \r
65         public static void main(String[] args) throws UnsupportedRuntimeException,\r
66                         JobSubmissionException, WrongParameterException,\r
67                         FileNotFoundException, IOException, ResultNotAvailableException,\r
68                         InterruptedException {\r
69 \r
70                 /*\r
71                  * Annotation interface for AAConWS web service instance\r
72                  */\r
73                 Annotation<AACon> client = (Annotation<AACon>) Jws2Client.connect(\r
74                                 "http://www.compbio.dundee.ac.uk/aacon", 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                 Set<Score> 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                 Score.write(result, System.out);\r
112 \r
113                 /* Alternatively, you can record retrieved alignment into the file */\r
114                 // FileOutputStream out = new FileOutputStream("result.txt");\r
115                 // Score.write(result, out);\r
116                 // out.close();\r
117         }\r
118 }\r