A Bioinformatics Web Service with Mac OS X
by Brian Gilman
Using Objective-C and Mac OS X's Core Web Services to Construct an OmniGene Analysis Engine Client
Introduction to OmniGene
Releasing algorithms to the biological community (or any research environment) is typically a painstaking and error prone process. This stems from the fact that bioinformaticians do not usually write their programs with a user interface in mind and, instead, depend on a command line interface.
Typically, command line interfaces satisfy only a subset of so-called power users in an organization, leaving others in the dark in terms of input parameters, file formats, and output generated from these programs. READMEs and other documentation are usually left unread, forcing the developer of the program to answer the same questions time and time again.
Worse still, once a command line program becomes popular to the not so tech savvy biologist, the bioinformatician is left running their program each and every time data is ripe for analysis. One common solution to this problem is to set up a web interface for the popular program and let the biologist run it for themselves. This works well for a single program but becomes quite cumbersome when there are hundreds.
The OmniGene Analysis Engine (OAE) solves this problem by providing a runtime engine that interfaces with any command line driven program by exposing these programs as web services using a single common interface and a little glue code. The algorithm developer writes a single client application in their favorite programming language and makes this available to their biologist counterpart. After the interface has been produced the algorithm developer is freed from having to run their programs for the biologist. The bioinformatician can then concentrate on writing programs that solve the next set of interesting biological problems.
In this series of articles I will be describing the use of Objective-C, the CoreServices web services framework, and the WSMakeStubs application to produce a trivial OAE Mac OS X Aqua client application. This demonstration application is by no means complete: many features are missing, like robust error checking.
Specifically, I will be describing:
- Web Services
- CoreServices webservice framework
- Interface Builder
- Project Builder
- OmniGene's Analysis Service Framework
- The WSMakeStubs application
- Connecting to OmniGene through WebServicesCore API
This article presupposes that you have a basic understanding of Cocoa programming, Objective-C and the developer tools that are bundled with Mac OS X 10.2. You must install the developer tools off the bundled CD to build the applications describe in this article. If you are not acquainted with these tools or languages please refer to the resources section at the end of this article.
The Web Services Revolution
Microsoft, IBM, HP and other large application server and software vendors are investing a lot of time, energy and money in web services. In fact, Microsoft has released .NET, a suite of frameworks and programming tools to produce web service applications. IBM has released the Web Services Tool Kit (WSTK) as well as many other web services frameworks that build on the WebSphere application server. In this article we'll be using the Apache Axis web services framework, an open source web services toolkit, and OS X's WebServicesCore API to build an OmniGene Analysis Engine client that inspects and executes OmniGene analysis tasks.
O'Reilly Bioinformatics Technology Conference Coverage
You might expect Microsoft, IBM, and the other major proponents of web services to be offering a wide variety of web service applications as part of their core offerings and operating systems. Unfortunately this is just not the case. Windows XP does allow users to look up applications that may handle certain file extensions it does not recognize using web services. Other than this example, the landscape is quite barren in terms of applications bundled with the OS that leverage web services. This is certainly not the case for applications built outside or not bundled with the major vendors OSes. A quick search on x-methods shows a significant number of web services that have been produced for experimentation. I encourage readers to explore the services that have been built and exposed on the x-methods web site.
Unsurprising to Mac users, Apple has been producing web service frameworks and applications which seamlessly integrate into the core OS for quite some time now. Apple has even bundled web service applications free for end users to use on an everyday basis. Apple has allowed users to use web services to search the Internet, find items on eBay, and even get answers to common computer related questions through the Sherlock application for a few years now. Apple's new release of Sherlock, version 3, allows users to plug other web services into this application and aggregate data from a wide variety of sources all over the Internet.
Apple provides a wide range of APIs to ease the integration of web services into native OS X applications using their CoreServices frameworks. We will be exploring these frameworks in the next few sections, and we'll build a simple tool to explore the OmniGene Analysis Engine. OAE is a middleware component that allows bioinformatics tools to be exposed as web services without having to change the underlying code. So, strap in, get comfy, grab a cup of your favorite caffeinated beverage, and read on to learn what can be done with Apple's web services APIs.