Bild eines Drachen Homepage von Jörg Rüdenauer Bild eines Raben

Studium Software Worte Ich
Zurück Home

How to perform local BLAST searches with Biojava

During my latest work I came upon the problem of how to perform BLAST searches using Biojava and a locally installed version of BLAST. I'll not describe here what either BLAST or Biojava are; if you don't know already, this page is probably of no interest to you.
I found out that, while it's possible, one needs considerable effort (e.g. compared to Bioperl) to use BLAST - possibly because of the platform-independency of Java ;-). Judging from the mailing list, the problem occurs fairly often; nevertheless, I've found neither an faq nor a website that describes how to solve it, or even code examples. So I decided to write one myself.

General info: this is by no means a perfect solution (or I would propose to include it into Biojava). I've only used it with a version of BLAST installed on a linux machine, and I've not tested it thoroughly. But it should give a hint on how to solve the problem, I hope it helps to avoid some of the snares, and I've mentioned many places where it could be improved. Comments are always welcome, just send me a mail.

You can download the whole code described on these pages. The archive also includes a sample program that shows how to use the Blast class.

The general idea

There are three major parts to the solution: the first one is the actual execution of BLAST, which is done by Runtime.exec() and doesn't present too many problems. The second one is the parsing of the results to have a nice data structure (a SeqSimilaritySearchResult), which can be achieved by plugging several tools together in the right way. The third one is the inclusion of all that into the Biojava framework, i.e., to write a class implementing SeqSimilaritySearcher. Strangely, this is also the toughest problem - here I present only a quickly written solution that has major performance problems. I recommend reading the following documents in the order in which I've listed them, but you don't have to :-).

Part 1: Implementing a SequenceDB
Part 2: Executing a BLAST search
Part 3: Parsing the search results

URL dieser Seite:
Autor dieser Seite: Jörg Rüdenauer
Letzte Änderung am: 14.07.2002

L-Space now!     Valid XHTML 1.0!     Valid CSS!