The Seahawk MOBY End-User Applet

What is Seahawk?

While this page links to many extra technical details, the definitive reference for an explanation of Seahawk and its features is:

Gordon P.M.K., Sensen C.W. (2007) Seahawk: Moving Beyond HTML in Web-based Bioinformatics Analysis. BMC Bioinformatics 8:208. Medline
Seahawk is a Java applet (or application component) that allows a naïve user to:
  1. Load text, HTML, Rich Text, or MOBY XML files from their local disk or a Web site
  2. Select all or part of the data displayed (by highlighting or using hyperlinks)
  3. Discover then execute services for the selected data
The interface consists of tabbed pane of documents, with MOBY analysis options displayed via popup menus. Functions commonly found in a Web browser interface, such as printing, saving, back and forward, and tab control are provided.

The user interaction and data display is significantly different in concept and execution from the other end-user clients (all HTML-based), Ahab, Gbrowse and MOWServ.

What is not?

Seahawk is not a visual programming environment for workflows, but rather allows workflow construction by example (as opposed to Taverna or Remora. It is not for deploying services or seeing the guts of MOBY Objects and service calls: for this please see Dashboard.


How do I launch it?

The applet can be launched from the following Web site: If you are a programmer, you can run it with a checked out version of the jMOBY CVS: ant seahawk

Why do I get a ClassDefNotFound Exception?

If Seahawk appears to freeze up, you will probably find a ClassDefNotFound exception in your Java Console. In order to make Seahawk a reasonable size for download (~2.7 MB), only those classes that appear to be required for its set of functionality are included. If you get this exception, it is because the class-reducing mechanism did not work properly. Please let gordonp @ know!

How do I embed it in my own application?

The jar (Java archive) file containing all of the required classes (including those from Axis, Jena, Xalan, Xerces, etc.) is available here, and is signed by the University of Calgary Bioinformatics Lab. You can also build your own version of the jar with the jMOBY CVS Ant target "seahawk-jar". Either jar file can be used as an application with the command:

java -jar seahawk.jar
If there is sufficient demand, I'll make a nice graphical installer for it.

Or it can be launched from within another Java application with the following code (and assuming seahawk.jar is in the classpath):

import ca.ucalgary.seahawk.util.MobyUtils;
import ca.ucalgary.seahawk.gui.MobyContentGUI;

// the rest of your application code goes here...

JLabel whereStatusMessagesAreDisplayed = new JLabel();  // or preferably some existing part of your interface
MobyContentGUI mobyContentGUI = MobyUtils.getMobyContentGUI(whereStatusMessagesAreDisplayed);

// just so something is displayed for the user

// or load a particular document

If you'd like to see the XML data being passed back and forth between the client and the server, simply define the moby.debug system property. e.g.

java -Dmoby.debug=1 -jar seahawk.jar

How does the Moby Data discovery work (and how do I change it)?

There are 4 main mechanisms for creating Moby Data Instances in Seahawk:

  1. When a Moby XML file is loaded, the resulting (customizable) HTML display contains XPointer-based hyperlinks to parts of the original XML file.
  2. Highlighted text is automatically turned into a Moby String Object by ca.ucalgary.seahawk.gui.MobyContentGUI, and this same class will create a MOBY DNASequence, RNASequence or AASequence if 95% of the characters are valid for that sequence type.
  3. Highlighted text is tested against a set of regular expression rules
  4. Programmatically selected XML document nodes (e.g. when genes are clicked in Bluejay) are tested against a set of XPath rules
The regular expression and XPath rules are specified in a special rules file that can be customized.

Paul Gordon
Last modified: Thu Feb 14 15:02:47 2008