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.io.PrintWriter;
\r
7 import java.io.Writer;
\r
8 import java.util.List;
\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
23 * AAConWS client example
\r
25 public class AAConWSClientExample {
\r
28 * Input sequences. For the simplicity keep them in the class
\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
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
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
66 public static void main(String[] args) throws UnsupportedRuntimeException,
\r
67 JobSubmissionException, WrongParameterException,
\r
68 FileNotFoundException, IOException, ResultNotAvailableException,
\r
69 InterruptedException {
\r
72 * Annotation interface for AAConWS web service instance
\r
74 SequenceAnnotation<AACon> client = (SequenceAnnotation<AACon>) Jws2Client
\r
75 .connect("http://www.compbio.dundee.ac.uk/aacon",
\r
78 /* Get the list of available presets */
\r
79 PresetManager presetman = client.getPresets();
\r
81 /* Get the Preset object by preset name */
\r
82 Preset preset = presetman.getPresetByName("Complete conservation");
\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
88 List<FastaSequence> fastalist = SequenceUtil
\r
89 .readFasta(new ByteArrayInputStream(input.getBytes()));
\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
96 String jobId = client.presetAnalize(fastalist, preset);
\r
98 /* This method will block for the duration of the calculation */
\r
99 ScoreManager result = client.getAnnotation(jobId);
\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
108 // while (client.getJobStatus(jobId) != JobStatus.FINISHED) {
\r
109 // Thread.sleep(1000); // wait a second, then recheck the status
\r
112 /* Output the alignment to standard out */
\r
113 Writer writer = new PrintWriter(System.out, true);
\r
114 IOHelper.writeOut(writer, result);
\r
116 // Score.write(result, System.out);
\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