SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user interface for use on your local machine and for sharing with colleagues locally or over the web. We designed SequenceServer to do this more elegantly and efficiently than other solutions (e.g., GMOD, Galaxy) or traditional publicly available BLAST front ends.

Sequenceserver is still young but has already been deployed in many institutions. SequenceServer is free to use and modify under GNU AGPL v3; its source code is freely available on GitHub.

Easy to use:
  • Minimalistic, clutter-free design so you can focus on the biology.
  • Smart user interface automagically figures out the appropriate BLAST method to use based on your input and selected databases.
  • Common mistakes prevented. For example, SequenceServer warns if you mix nucleotide and protein sequences.
  • Use advanced parameters (e.g. -task blastn-short -evalue 1.0e-20) as you would in the command line.
  • Simple and intuitive overview of results.
  • Elegant, streamlined BLAST report.
  • View sequence and download FASTA of up to 30 hits.
  • Download tab-delimited reports (standard 12 column or all 44 possible columns) or XML BLAST report.
  • Input query sequences by pasting FASTA sequence or drag-and-dropping a FASTA file.
Rapidly deployed:
  • Guided interactive setup in very few steps — only requires your sequence files.
  • Automatic detection of BLAST software; if absent the correct version is automatically downloaded.
  • Automatical detection of existing BLAST databases.
  • Automatic detection of FASTA files not yet BLAST-formatted. SequenceServer detects sequence type helps and interactively helps to create BLAST databases.
  • Web server is built in. Apache or Nginx are unnecessary (but can be used for specifc uses).
  • Use on your personal computer; share with colleagues locally or worldwide.
  • Easily customizable hyperlinks to search hits (e.g. to your a genome browser or custom database).
Search interface.

Screenshot: Search interface


Results overview.

Screenshot: Results interface

Download

To get the latest release of SequenceServer, run the following from a command line.

 $ gem install sequenceserver

If that doesn't work, try sudo gem instead of gem.

And launch

To configure and launch SequenceServer, run the following from a command line.

$ sequenceserver

SequenceServer will automatically guide you through an interactive setup process to help locate or download BLAST+ binaries, ask for the location of FASTA files (or BLAST+ databases), and offer to create BLAST+ databases from FASTA files.

That's it! Open http://localhost:4567/ and start BLAST-ing!

  • Linux or Mac OSX. 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. It should be possible to run SequenceServer on Windows using Cygwin. Note that you can connect to SequenceServer running on other machines from your browser in Windows.

  • Ruby (≥ 1.8.7) with RubyGems (≥ 1.3.6).
    NCBI BLAST+ (≥ 2.2.30+) is interactively downloaded if absent.

  • Google Chrome or Mozilla Firefox or Safari 7+ or Internet Explorer 9+


Please cite
Priyam A, Woodcroft BJ, Rai V & Wurm Y (in prep) SequenceServer: BLAST search made easy http://sequenceserver.com

SequenceServer provides commands to find unformatted FASTA files and guide you through a formatting process. The program detects whether they are protien or nucleotide and suggests appropriate names.

To set up BLAST databases from a directory of FASTA sequence files, use:

$ sequenceserver -m

By default this will use the database directory from the configuration file. An alternative directory can be explictly provided:

$ sequenceserver -m -d=path/to/directory_with_fasta_files

Alternatively, use BLAST's makeblastdb on a single FASTA sequence files. For example:

$ 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.

To see the current list of BLAST databases found by SequenceServer, run

$ sequenceserver -l 

Sequenceserver provides a powerful yet flexible plugin system to create custom hyperlinks for your BLAST hits. You can leverage the comprehensive information, for example, database details, which database a hit came from, to generate more complex and highly specific links. Not only that, but you can also personalize your interface by controlling the order or appearance of links. Please have a look at our source file to understand how to write your own plugin. Once you are done writing the code, load your plugin using the -r=require_file command line switch.

Your methods will be loaded automatically and used to generate appropriate links for each hit. The source file includes extensive inline documentation which explains how to do this.

In most cases, it is sufficient to run SequenceServer using parameters specified in its single configuration file.

For other scenarios, SequenceServer provides an advanced command line interface through which you can not only customize the startup of program but also use specific utilities provided by it.

Below we give a complete list of commands with brief description of each one.

Commands/Switches Description
-c=config_file Provide path location of your custom configuration file
-b=bin Provide path to your BLAST+ binaries*
-d=database_dir Provide path to your BLAST+ databases*
-n=num_threads Number of threads to run BLAST search*
-H=host Host to run SequenceServer on*
-p=port Port to run SequenceServer on*
-r=require_file Load extension from this file
-s Set configuration value in default or given config file
-m Create BLAST databases
-l List found BLAST databases
-u List unformatted FASTA files
-i Run SequenceServer in interactive mode
-D Run SequenceServer in development (debug) mode
-v or --version Print version number of SequenceServer that will be loaded
-h or --help Display this help message
* Command line values take precedence over configuration file

An example startup command will look like:

$ sequenceserver -d ~/home/biodb -n 4 -p 7777

Most of the time running the SequenceServer as above is more than enough. But if you need to use SequenceServer as part of a standard website, SequenceServer can be deployed on Apache with Phusion Passenger™ (a.k.a mod_rails or mod_rack).

Set up Phusion Passenger™

Install passenger gem:

gem install passenger

Install passenger module for Apache

$ passenger-install-apache2-module

Follow instructions on screen. The installer will let you know if any software that is still required to setup passenger, and how to install it. After the installer has finished building modules corresponding to your webserver, it will ask you to edit your webserver configuration files 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. Running touch tmp/restart.txt may required when changing configuration.
Deploying SequenceServer

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.

We are also available for consulting which can range from custom support to server deployment and administration to implementing specific features. Get in touch.

Q. How do I cite SequenceServer?
A manuscript describing SequenceServer is in preparation. In the mean time, please cite:
Priyam A, Woodcroft BJ, Rai V & Wurm Y (in prep)
SequenceServer: BLAST searching made easy http://sequenceserver.com
This has already been done several times.
Q. What are the alternatives to SequenceServer?
There are several. They can look and behave a bit too vintage, and their installation and configuration is challenging.
Q. 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 such as makeblastdb, blastn, tblastx etc.,
Also, check that your SequenceServer configuration file points at the bin directory, e.g.: /Users/stevejobs/software/ncbi-blast-2.2.30+/bin/
Q. How can I add custom links to hits?
Easily. See the details in plugin system.
Q. What is an interactive mode? How do I use it?
SequenceServer's interactive mode ( sequenceserver -i) is handy when you are debugging SequenceServer or writing a custom module such as a custom link generator. Interactive mode lets you access all methods, call them and inspect their output.
Q. How do I tell SequenceServer to read a different configuration file?
By using -c command line switch. For example:
$ sequenceserver -c sequenceserver_ants.conf
Q. 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. Also, have a look at our CLI.
Q. Can my colleagues access the server I set up on my computer?
Yes, if they can access your machine. This usually requires being in the same subnetwork, or asking IT services to open your machine to the outside world. You'll have to tell your colleagues your IP address (find it in the Network or Sharing section of System Preferences) and the port. The complete URL they will have to use might be http://192.168.134.13:4567/ or http://myblastserver.local:4567/. It will be easier for everyone if you can get a fixed IP.
Q. Do I need to install Apache or Nginx?
SequenceServer includes the Thin web server. There is no need of installing Apache or Nginx. Nevertheless, we provide Apache instructions as part of advanced setup guidelines.
Q. Can I integrate SequenceServer into Apache?
Yes. We provide instructions above .
Q. Can I use multiple cores/threads?
Yes either in the configuration file or via the CLI. You should. Everything will go much faster if you do.
Q. Should I activate hyper-threading to give BLAST more virtual cores?
Yes.
Q. View sequence link is disable for some hits.
A. SequenceServer disables view sequence link if the length of the hit exceeds 10,000 residues - ok if target sequences are proteins or contigs. We feel this mode of analysing sequences is not optimal for very long sequences (e.g: scaffolds).
Q. Download FASTA of all hits is disabled.
A. Download FASTA of all hits or bulk FASTA download of selected hits works only for 30 or less hits at a time. This is due to a technical limitation that length of URLs should not exceed 2083 characters. We are trying to remove this limitation.
Q. Where is the documentation for the old and "stable" sequenceserver accessible via `gem install sequenceserver`?
Here you go.
Q. 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!
Q. What is a BLAST database? Can I make a custom BLAST database?
The BLAST search algorithms don't directly understand FASTA files. But BLAST includes the makeblastdb tool that reformats FASTA into the optimized BLAST-friendly format.
SequenceServer additionally provides the sequenceserver -m command to facilitate the conversion from FASTA to BLAST database.
Q. Can I use a preformatted BLAST database? Can I use alias?
Preformatted BLAST databases can also be used with SequenceServer (e.g., nr...). Most preformatted database ar split between multiple files (like .00, .01, ..). Thanks to Mark Anthony Gibbins' contributions, SequenceServer can correctly understand these.

If a custom .nal or .pal BLAST database alias file as well as the linked databases are in SequenceServer's db directory, SequenceServer will display both the alias and the linked databases. To display only the alias, move the linked databases from db to a different place, then edit the DBLIST line in the .pal or .nal file so that it contains the complete path of each of the database files. For example,

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
Q. How does BLAST identify similar regions? Why don't the ends match? What is the bitscore? What is the e-value that BLAST returns? What do these numbers mean?
Many detailed explanations exist egarding such questions, including at NCBI and in the original BLAST articles. Here's our executive summary:
BLAST is a heuristic, i.e., it is fast and approximate instead of being slow and perfect. It starts by looking for a minimal 100% match (e.g., 11 consecutive nucleotides with 100% identity between your query and the database sequence). If it finds none its over (thus if exactly every 10th base is different, BLAST finds no results). If it does find a match, it extends that in both directions: identical (or similar) bases add points; differences are negative points. If too many points are lost, it stops aligning. BLAST might not stop at the exact best place, alignment ends might be wrong.
The bitscore is the total number of points for the aligning region. The bigger it is, the stronger the alignment. But the bitscore doesn't take into account sequence length nor database size. The E-value does take these into account. It is better to look at E-values than bitscores. The E-value represents the number of times the observed alignment would be expected to occur by chance (it is not a p-value!); depends on the bitscore, the length of the query sequence, and the cumulative length of all sequences in the database. It is easier to talk about strong E-values (e.g. 1e-100 = 10-100 = almost zero; impossible to obtain by chance) vs weak E-evalues (e.g 0.1; for similarity that may be due to chance) that small vs large (which is always a bit confusing).
Q. What is the difference between BLAST and BLAST+? What about WU-BLAST or AB-BLAST?
BLAST was 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 and faster than the old legacy BLAST. WU-BLAST is now commerical and called AB-BLAST. There is probably no good reason to use either alternative. 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+.

SequenceServer is distributed under the GNU AGPL version 3. SequenceServer is free to use by any individual or organization for all purposes. If you modify SequenceServer's source code or use it for custom application development, you must release the source code of the derivative product under AGPL license to comply with AGPL. You are obligated to release source code of the derivative product even if you are distributing it over a network.

Custom licensing is also possible if AGPL doesn't suit your needs. Get in touch. Please see Razuna's licensing information page if in doubt. Our licensing model is same as theirs.

Anurag Priyam
is Bioinformatics Software Developer at Dr. Wurm's Lab, Queen Mary, University of London. He is the lead developer and mantainer of SequenceServer.
Ben J Woodcroft
is researching microbial responses to permafrost thaw (climate change induced), and the bioinformatics of metagenomics. He is a post-doctoral fellow at the Australia Centre for Ecogenomics.
Vivek Rai
is an undergraduate student in Department of Biotechnology at Indian Institute Of Technology, Kharagpur. Besides programming, he is fascinated by Proteins, Computational Biology, and Bioinformatics.
Yannick Wurm
is an evolutionary biologist using genomics tools to study the evolution of social insect societies (eg: antgenomes.org, fire ant genome, competing fire ant queens). He is a Senior Lecturer in Bioinformatics at Queen Mary University London.
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

and many additional private installations we don't know about...