1 package compbio.ws.client;
\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
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
21 * AAConWS client example
\r
23 public class AAConWSClientExample {
\r
26 * Input sequences. For the simplicity keep them in the class
\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
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
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
64 public static void main(String[] args) throws UnsupportedRuntimeException,
\r
65 JobSubmissionException, WrongParameterException,
\r
66 FileNotFoundException, IOException, ResultNotAvailableException,
\r
67 InterruptedException {
\r
70 * Annotation interface for AAConWS web service instance
\r
72 SequenceAnnotation<AACon> client = (SequenceAnnotation<AACon>) Jws2Client
\r
73 .connect("http://www.compbio.dundee.ac.uk/aacon",
\r
76 /* Get the list of available presets */
\r
77 PresetManager presetman = client.getPresets();
\r
79 /* Get the Preset object by preset name */
\r
80 Preset preset = presetman.getPresetByName("Complete conservation");
\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
86 List<FastaSequence> fastalist = SequenceUtil
\r
87 .readFasta(new ByteArrayInputStream(input.getBytes()));
\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
94 String jobId = client.presetAnalize(fastalist, preset);
\r
96 /* This method will block for the duration of the calculation */
\r
97 ScoreManager result = client.getAnnotation(jobId);
\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
106 // while (client.getJobStatus(jobId) != JobStatus.FINISHED) {
\r
107 // Thread.sleep(1000); // wait a second, then recheck the status
\r
110 /* Output the alignment to standard out */
\r
111 IOHelper.writeOut(System.out, result);
\r
112 // Score.write(result, System.out);
\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