example script that will submit a muscle jabaws job using the currently loaded alignm...
[jalview.git] / examples / groovy / alignLoadedFile.groovy
diff --git a/examples/groovy/alignLoadedFile.groovy b/examples/groovy/alignLoadedFile.groovy
new file mode 100644 (file)
index 0000000..6d8f807
--- /dev/null
@@ -0,0 +1,34 @@
+// run an alignment on the current alignFrame
+import jalview.ws.jws2.*;
+import jalview.datamodel.*;
+
+// First get the JABA service discoverer and see if there are any services.
+jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer.getDiscoverer();
+while (disc.isRunning()) {
+Thread.sleep(50);
+}
+if (!disc.isRunning() && !disc.hasServices())
+{
+  // discoverer is not running, and has no services - so run it again.
+  disc.run();
+}
+
+for (jalview.ws.jws2.Jws2Discoverer.Jws2Instance service: disc.getServices()) {
+
+if (service.serviceType.indexOf("uscle")>-1) {
+  // now - go through the services if any, and find a Muscle service
+  def msaf;
+  try {
+       msaf = currentAlFrame;
+  } catch (q) {
+        // currentAlFrame is not defined - so we were run as an interactive script from the Groovy console
+       // in that case, just pick the first alignmentFrame in the stack.
+       msaf = Jalview.getAlignframes()[0]
+  };
+  // Finally start Jalview's JabaWS MSA Client with the alignment from msaf
+  new MsaWSClient(service, msaf.getTitle(), msaf.gatherSequencesForAlignment(), false,
+                true, msaf.getViewport().getAlignment()
+                .getDataset(), msaf);
+  break;
+}
+}