Add testing dirs
[proteocache.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..23eaf36
--- /dev/null
@@ -0,0 +1,123 @@
+package compbio.ws.client;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.io.PrintWriter;\r
+import java.io.Writer;\r
+import java.util.List;\r
+\r
+import compbio.data.msa.SequenceAnnotation;\r
+import compbio.data.sequence.FastaSequence;\r
+import compbio.data.sequence.ScoreManager;\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
+               SequenceAnnotation<AACon> client = (SequenceAnnotation<AACon>) Jws2Client\r
+                               .connect("http://www.compbio.dundee.ac.uk/aacon",\r
+                                               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
+               ScoreManager 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
+               Writer writer = new PrintWriter(System.out, true);\r
+               IOHelper.writeOut(writer, result);\r
+               writer.close();\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