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