--- /dev/null
+package compbio.ws.client;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import compbio.data.msa.Annotation;\r
+import compbio.data.sequence.FastaSequence;\r
+import compbio.data.sequence.Score;\r
+import compbio.data.sequence.SequenceUtil;\r
+import compbio.metadata.JobSubmissionException;\r
+import compbio.metadata.Preset;\r
+import compbio.metadata.PresetManager;\r
+import compbio.metadata.ResultNotAvailableException;\r
+import compbio.metadata.UnsupportedRuntimeException;\r
+import compbio.metadata.WrongParameterException;\r
+import compbio.runner.conservation.AACon;\r
+\r
+/**\r
+ * AAConWS client example\r
+ */\r
+public class AAConWSClientExample {\r
+\r
+ /*\r
+ * Input sequences. For the simplicity keep them in the class\r
+ */\r
+ static final String input = ">Foo \r\n"\r
+ + "MTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\r\n"\r
+ + "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL\r\n"\r
+ + "LPEEPYITAQLLNWRRRLCDWRALDVLSAQVRAAVAQGVGAVEPFAFLSEDASAAEQLAC\r\n"\r
+ + "ARTRAQAIAASVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
+ + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
+ + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
+ + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
+ + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
+ + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
+ + "GVFEMDGFADDFGALLQALARRHGWLGI\r\n"\r
+ + "\r\n"\r
+ + ">Bar \r\n"\r
+ + "-----------------------------------MGDTTAGEMAVQRGLALH-------\r\n"\r
+ + "---------QQRHAEAAVLLQQASDAAPEHPGIALWL-HALEDAGQAEAAAA-YTRAHQL\r\n"\r
+ + "LPEEPYITAQLLN--------------------AVAQGVGAVEPFAFLSEDASAAE----\r\n"\r
+ + "----------SVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
+ + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
+ + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
+ + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
+ + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
+ + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
+ + "GVFEMDGFADDFGALLQALARRHGWLGI\r\n"\r
+ + "\r\n"\r
+ + ">Noname \r\n"\r
+ + "-MTADGPRELLQLRAAVRHRPQDVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\r\n"\r
+ + "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALED--------------HQL\r\n"\r
+ + "LPEEPYITAQLDVLSAQVR-------------AAVAQGVGAVEPFAFLSEDASAAEQLAC\r\n"\r
+ + "ARTRAQAIAASVRPLAPTRVRSKGPLRVGFVSNGFGAHPTGLLTVALFEALQRRQPDLQM\r\n"\r
+ + "HLFATSGDDGSTLRTRLAQASTLHDVTALGHLATAKHIRHHGIDLLFDLRGWGGGGRPEV\r\n"\r
+ + "FALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAFQPSDTSR\r\n"\r
+ + "VVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEADA\r\n"\r
+ + "RLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVL\r\n"\r
+ + "TTPGETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRES\r\n"\r
+ + "I---------------------------";\r
+\r
+ public static void main(String[] args) throws UnsupportedRuntimeException,\r
+ JobSubmissionException, WrongParameterException,\r
+ FileNotFoundException, IOException, ResultNotAvailableException,\r
+ InterruptedException {\r
+\r
+ /*\r
+ * Annotation interface for AAConWS web service instance\r
+ */\r
+ Annotation<AACon> client = (Annotation<AACon>) Jws2Client.connect(\r
+ "http://www.compbio.dundee.ac.uk/aacon", Services.AAConWS);\r
+\r
+ /* Get the list of available presets */\r
+ PresetManager presetman = client.getPresets();\r
+\r
+ /* Get the Preset object by preset name */\r
+ Preset preset = presetman.getPresetByName("Complete conservation");\r
+\r
+ /*\r
+ * Load sequences in FASTA format from the file You can use something\r
+ * like new FileInputStream() to load sequence from the file\r
+ */\r
+ List<FastaSequence> fastalist = SequenceUtil\r
+ .readFasta(new ByteArrayInputStream(input.getBytes()));\r
+\r
+ /*\r
+ * Submit loaded sequences for an alignment using preset. The job\r
+ * identifier is returned by this method, you can retrieve the results\r
+ * with it sometime later.\r
+ */\r
+ String jobId = client.presetAnalize(fastalist, preset);\r
+\r
+ /* This method will block for the duration of the calculation */\r
+ Set<Score> result = client.getAnnotation(jobId);\r
+\r
+ /*\r
+ * This is a better way of obtaining results, it does not involve\r
+ * holding the connection open for the duration of the calculation,\r
+ * Besides, as the University of Dundee public server will reset the\r
+ * connection after 10 minutes of idling, this is the only way to obtain\r
+ * the results of long running task from our public server.\r
+ */\r
+ // while (client.getJobStatus(jobId) != JobStatus.FINISHED) {\r
+ // Thread.sleep(1000); // wait a second, then recheck the status\r
+ // }\r
+\r
+ /* Output the alignment to standard out */\r
+ Score.write(result, System.out);\r
+\r
+ /* Alternatively, you can record retrieved alignment into the file */\r
+ // FileOutputStream out = new FileOutputStream("result.txt");\r
+ // Score.write(result, out);\r
+ // out.close();\r
+ }\r
+}\r