[BioPython] BLAST application server

dgjs@acm.org dgjs@acm.org
Thu, 7 Sep 2000 14:46:18 -0700 (PDT)


Anybody interested in a BLAST "application server"?  I've written such a
thing as part of a consulting job.  The customers were tired of going to
the NCBI BLAST web site weekly to run their searches, so they asked me
to set up something that they could submit their sequences to once, that
would automatically BLAST them against the Genbank databases weekly, say, 
and inform users by e-mail if there's any new results.

So that's what I wrote for them, mostly in Python, with a Bourne shell
script or two in there, and also a C program I'd written previously and
decided to throw into the mix.  It runs on UNIX - I've tried it on Linux,
Solaris, and FreeBSD.  Users access the thing through a web browser, where 
they can view results, submit new jobs, change existing ones, and so forth.  
The "user interface" is a bunch of CGI forms, created on-the-fly by Python 
and the HTMLgen module.  (I rather shamelessly stole the HTML design from 
the NCBI BLAST web interface.)  The program stores information about users 
and their jobs in Berkeley DB.  More Python code run bv 'cron' downloads
the desired Genbank databases (configurable) weekly (frequency configurable),
formats them up, then walks through the stored jobs, re-BLAST-ing them,
comparing new results to old, storing the new results and e-mailing the 
appropriate user if there's anything new.  There's also a daemon that
watches the jobs database for anything newly submitted, BLAST-ing it
usually within an hour (again, frequency configurable).  You can also use
the program interactively, but if you're expecting results "right away" you 
need enough hardware to make BLAST go fast.

I've put the lot under the GPL, but I haven't actually "released" it,
becuse I don't know if anyone else would be interested in it, and 
because installing it is not easy.  To put a finer point on that, I haven't
made any effort towards making it easy to install.  There's a whole flock
of ducks to get in line: NCBI BLAST, Python, HTMLgen, Berkeley DB, Apache 
(or some other web server), wget, 'cron' jobs and start-up scripts ...
It doesn't use NCBI's BLAST severs via Network BLAST or anything like
that.  You need your "own" BLAST installation, though it needn't be on 
the system hosting my program.  The C progam I mentioned above is a TCP/IP 
sever to access BLAST programs on a remote host. 

The folks I wrote the program for are using it, so far without any 
complaints.  If anyone else is interested, I'd be happy to make the stuff 
available.

David S.
dgjs@acm.org