SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user interface for use locally or over the web.

Sequence data is generated at increasing rates. However it is challenging to effectively share and query such data. Deploying complex solutions such as GMOD is often overkill and publicly available front ends for BLAST are difficult to use or install.

SequenceServer is an efficient and elegant alternative. Sequenceserver is still being developed yet is fully functional and has already been deployed for multiple databases.

SequenceServer is free for academics. Its source code is available on GitHub.

Easy for biologists

  • Minimalistic, clutter-free design, so you can focus on the biology
  • The smart user interface automagically figures out the appropriate BLAST method to use based on your input and selected databases
  • Common mistakes prevented. E.g., SequenceServer warns if you mix nucleotide and protein sequences
  • Advanced users: use advanced parameters (e.g. -task blastn-short -evalue 1.0e-20) like you would in the command line.
  • Simple overview of results
  • Download links for hits

Rapidly deployed by admins

  • very little configuration required: only a directory containing formatted or un-formatted sequence databases
  • SequenceServer scans the database directory during startup. And will interactively help you create BLAST databases from FASTA files
  • Comes with a built-in web server. No need to deal with Apache or Nginx to run SequenceServer.
  • Easily customizable hyperlinks to search hits (e.g. to your local genome browser or custom database)

Requirements

Ruby (>= 1.8.7), RubyGems (>= 1.3.6), and NCBI BLAST+ (>= 2.2.25+). That's it!

Linux and MacOS are officially supported. While we would like to also support Windows, our resources are limited and we prefer to first concentrate on making SequenceServer great on fewer platforms.

Demo server

Sure, check Ant genome BLAST or the sites of some of our users.

Installation

Run the following from a command line to get the latest release of SequenceServer.

 $ gem install sequenceserver

If that doesn't work, try sudo gem instead of gem. And subsequently follow the instructions on screen.

Configuration

SequenceServer needs to know the location of the BLAST+ binaries, and the BLAST database. This is accomplished by providing a .sequenceserver.conf in the user's home directory.

# .sequenceserver.conf
bin: ~/ncbi-blast-2.2.25+/bin/
database: /Users/me/blast_databases/
      

SequenceServer automatically generates a fully commented configuration file (.sequenceserver.conf) in the user's home directory if it can't find one. Uncomment the relevant lines (i.e remove the # signs), edit the values, and run SequenceServer.

If you you already have databases, jump ahead to launch SequenceServer. If not, set up databases as follows.

Setting up BLAST databases

To set up BLAST databases from a directory of FASTA sequence files, use sequenceserver's format-databases subcommand:

$ sequenceserver format-databases

It will automatically pick up the database directory from the configuration file. Or pass the database directory from command line:

$ sequenceserver format-databases directory_with_fasta_files

The script will assist you by:

  • finding FASTA files in directory_with_fasta_files (and in subdirectories too)
  • detecting the sequence type of each file
  • asking you to name each database
  • subsequently running the appropriate makeblastdb commands.

Alternatively, manually set up BLAST databases from single FASTA sequence files. In the directory containing the FASTA file, run:

$ makeblastdb -dbtype <db type> -title <db title> -in <db> -parse_seqids

Where,

  • <db type> is either prot, or nucl depending on the type of sequence
  • <db title> is what users will see
  • <db> is the path to the FASTA file
  • -parse_seqids is required to generate links for downloading search hits (yes, it's a bit slow on large files).
  • Additional options at makeblastdb -help.

Launch SequenceServer

Simply execute:

$ sequenceserver 

SequenceServer will start up a webserver on http://localhost:4567/ (by default). Port number can be changed in the config file.

Optional: SequenceServer on Apache or Nginx with Phusion Passenger

For most people, simply running the SequenceServer as above is more than enough. But if you need to deploy SequenceServer BLAST as part of a standard website, and have it show up as a normal webdirectory, SequenceServer can be deployed on Apache or Nginx with Phusion Passengerâ„¢ (a.k.a mod_rails or mod_rack).

Setting up Phusion Passengerâ„¢

Install passenger gem:

gem install passenger

Install passenger module for Apache/Nginx module

# for apache2
passenger-install-apache2-module

# for nginx
passenger-install-nginx-module
      

Follow instructions on screen. The installer will let you know of any missing software that is required to setup passenger, and also how to install them. Towards the end of installation, after the installer has finished building modules corresponding to your webserver, it will ask you to edit your webserver configuration files and some lines, so that your webserver knows how to load passenger.

For Apache, you can do something like this:

  1. Create a new file called passenger.load in /etc/apache2/mods-available, and add the lines there.
  2. Run a2enmod passenger. This will ask you to restart apache2 with instructions on how to do the same. On my machine, I had to run /etc/init.d/apache2 restart

Deploying Sequence Server

Apache Root URI (eg:antgenomes.org or localhost).

<VirtualHost *:80>
ServerName localhost
DocumentRoot /home/yeban/src/sequenceserver/public
<Directory /home/yeban/src/sequenceserver/public>
        Allow from all
        Options -MultiViews
</Directory>
</VirtualHost>
        

Apache Sub URI (e.g.: antgenomes.org/blast or localhost/sequenceserver).

<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/
<Directory /var/www>
Allow from all
</Directory>

RackBaseURI /sequenceserver
<Directory /var/www/sequenceserver>
Options -MultiViews
</Directory>
</VirtualHost>

Have an issue in deploying SequenceServer? Something is not working as expected? Have a tip? A feature request? Or just want to encourage further development? Post it to SequenceServer Google Group and we will work something out.

How do I cite SequenceServer?
A manuscript describing SequenceServer is in prep. In the mean time, please cite the following reference: "Priyam A., Woodcroft B.J., Wurm Y in prep. SequenceServer: BLAST searching made easy". This has already been done several times.
What are the alternatives to SequenceServer?
There are several. But they are suboptimal because they look like they're from the last millenium. And installing them is challenging.
Is there a demo server?
SequenceServer provides BLAST for ant genomes. Some of our users also provide publicly accessible servers.
What is a BLAST database? Can I make a custom BLAST database?
The BLAST program doesn't understand FASTA files. But BLAST includes the makeblastdb tool that reformats FASTA into the optimized BLAST-friendly format. Use makeblastdb or sequenceserver format-databases to create a custom BLAST database.
Can I use a preformatted BLAST database? Can I use alias?
Preformatted BLAST databases can also be used with SequenceServer. Most preformatted database ar split between multiple files (like .00, .01...). Thanks to Mark Anthony Gibbins' contributions, SequenceServer can correctly understand these.
If you use a custom .nal or .pal BLAST database alias file, and copy this alias file as well as the linked databases into SequenceServer's db directory, SequenceServer will display both the alias and the linked databases. If you want to display only the alias, remove the linked databases from db, then edit the DBLIST line in the .pal or .nal file so that it contains the complete path of each of the database files (e.g: DBLIST species1_custom_blast_db species2_custom_blast_database may become: DBLIST /Users/blastuser/mydbs/species1_custom_blast_db /Users/blastuser/mydbs/species2_custom_blast_database)
What is the difference between BLAST and BLAST+? What about WU-BLAST or AB-BLAST?
The initial BLAST has been rewritten several times - most recently by NCBI as BLAST+. NCBI now use and recommend using BLAST+. The BLAST+ publication explains why BLAST+ is easier to use & faster than the old "legacy" BLAST. WU-BLAST is now commerical and called AB-BLAST. There is probably no good reason to use either. Note that the output formats change slightly from one BLAST implementation to the next.
NCBI's BLAST+ is most actively developed, just use it. SequenceServer only supports BLAST+.
I swear I installed BLAST but SequenceServer can't find it!
Make sure you downloaded NCBI's Blast+ (Blast Plus!) and not legacy BLAST. The old legacy BLAST had programs such as blastall and formatdb. The programs in BLAST+ have names like makeblastdb, blastn, tblastx...
Also, check that your SequenceServer configuration file points at the bin directory, e.g.: /Users/stevejobs/software/ncbi-blast-2.2.25+/bin/
Why doesn't sequence retrieval work?
Probably because you forgot the -parse_seqids argument when running makeblastdb (or they were formatted using legacy formatdb). Blast+ 2.2.24 and later indicate that when -parse_seqids was not used by leaving a space between > and hit identifiers (eg: > db_sequence001 instead of >db_sequence001).
How can I add custom links to hits?
Easy. Edit the customisation.rb file and read the examples it provides. To add a single link, uncomment and edit the construct_custom_sequence_hyperlink method; to add multiple links edit the construct_custom_sequence_hyperlinking_line method.
How do I tell SequenceServer to read a different configuration file?
By using --config command line switch. For example:

$ sequenceserver --config sequenceserver_ants.conf
You will need to set it in config.ru for Rack based deployment:

SequenceServer::App.config_file = 'sequenceserver_ants.conf'
The above line should be added before SequenceServer::App.init, so the config.ru looks something like this:

require 'rubygems'
require 'bundler/setup'
require 'sequenceserver'

SequenceServer::App.config_file = '/absolute/path/to/configuration_file'
SequenceServer::App.init
run SequenceServer::App
How do I change the server port?
SequenceServer will by default be accessible on port 4567 at http://localhost:4567/ . Change the port by editing ~/.sequenceserver.conf.
Do I need to install Apache?
SequenceServer automatically uses ruby's internal web servers. No need for Apache. By default it uses Webrick. Installling Thin (gem install thin), or Mongrel (gem install mongrel) can improve performance. SequenceServer will automatically use these if installed.
Can I integrate SequenceServer into an Apache or Nginx server?
Yes. See above
Should I activate hyper-threading to give BLAST more virtual cores?
Yes.
Which technologies does SequenceServer use?
SequenceServer uses NCBI BLAST+, Sinatra, and jQuery.
Is SequenceServer free? Can I redistribute it?
Check our LICENSE.txt file. Basically, it's free if you're an academic or a non-for-profit organization. Get in touch if you're a for-profit.
Can I have the source code? Can I contribute?
SequenceServer's source code is on GitHub. Downloading, forking, pulling, filing issues and contributing is most welcome!
Can SequenceServer do XXX? Why doesn't YYYY work? It's ugly, it crashes!?!?
First, run gem update or sudo gem update.
If things are still weird, please keep in mind that SequenceServer is still in beta. We're just developing this in our free time. Our issues tracker logs development activities. Feel free to add comments, vote, report bugs, request features and contribute code. All contributions, patches and pulls are welcome. If you're not a coder, please consider supporting development by a donation.
Yannick Wurm
is an evolutionary biologist using genomics tools to study the evolution of ant societies (eg: antgenomes.org, fire ant genome, competing fire ant queens). He is a lecturer at Queen Mary University London.
Anurag Priyam
is a software developer primarily interested in applied computing and web infrastructure development. He is currently pursuing his undergraduate studies at the Indian Institute of Technology, Kharagpur.
Cedric Wurm
Ben J Woodcroft
is a PhD student in Melbourne studying protein trafficking in apicomplexan parasites including malaria (e.g. ApiLoc), as well as maintaining a general interest in protein and genome evolution. From February 2012 he will be at the Australian Centre for Ecogenomics.
Maybe you?
The SequenceServer team will happily accept contributions. Please get in touch to figure out where you could fit in. Cheers!
SequenceServer has satisfied users at U Melbourne, Centre for Organismal Studies Heidelberg, Swiss Institute of Bioinformatics, IIT Karagpur, Natural History Museum London, Queen Mary University London, Benaroya Research Institute, University of Lausanne

As well as:

Citations

Parts of this software are © 2011 University of Lausanne