AAConWS further work
[jabaws.git] / testsrc / compbio / ws / client / AAConWSClientExample.java
diff --git a/testsrc/compbio/ws/client/AAConWSClientExample.java b/testsrc/compbio/ws/client/AAConWSClientExample.java
new file mode 100644 (file)
index 0000000..98c2dfc
--- /dev/null
@@ -0,0 +1,118 @@
+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