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)
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.
Sure, check Ant genome BLAST or the sites of some of our users.
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
SequenceServer needs to know the location of the BLAST+ binaries
BLAST+ download directory or
brew tap homebrew/science; brew install blast),
and the BLAST databases. This is accomplished by providing a
.sequenceserver.conf in the user's home directory.
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
If you you already have databases, you're ready to launch SequenceServer. If not, set up databases as below.
SequencerServer will check your config file and start up a
webserver on http://localhost:4567/. The
port number can be changed in the config file.
You're done. BLAST away.
If needed: Set up custom BLAST databases
To set up BLAST databases from a directory of FASTA sequence
$ sequenceserver format-databases
It will automatically pick up the database directory from the
configuration file. Or pass the database directory from command
$ 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
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
<db type> is either
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
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
Set up Phusion Passenger™
gem install passenger
Install passenger module for Apache/Nginx module
# for apache2
# for nginx
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
For Apache, you can do something like this:
- Create a new file called
/etc/apache2/mods-available, and add the lines there.
a2enmod passenger. This will ask you to restart apache2 with instructions on how to do the same. On my machine, I had to run
touch tmp/restart.txt may required when changing configuration.
Deploying Sequence Server
Apache Root URI (eg:antgenomes.org or localhost).
Allow from all
Apache Sub URI (e.g.: antgenomes.org/blast or
Allow from all
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.
If you are completely overwhelmed and need more support that the
mailing list can provide, we are available for consulting which can
range from custom support to server deployment and administration to
implementing specific features.
- 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
- 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
makeblastdb tool that reformats FASTA
into the optimized BLAST-friendly format. Use
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
.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
.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)
- 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
- BLAST is a heuristic, ie. 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). It is done if it finds none (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. It might not stop at the exact best place, thus ends
might not match. 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. 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. Its 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).
- 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
formatdb. The programs in BLAST+ have names like
- Also, check that your SequenceServer configuration file points at the
bin directory, e.g.:
- 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
- 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
- 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
looks something like this:
SequenceServer::App.config_file = '/absolute/path/to/configuration_file'
- How do I change the server port?
- SequenceServer will by default be accessible on port 4567
the port by editing
- 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
- 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. We provide instructions
- Should I activate hyper-threading to give BLAST more virtual cores?
- Which technologies does SequenceServer use?
- SequenceServer uses NCBI
BLAST+, Sinatra, and
- 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!
- You say SequenceServer is easy to set up. But I'm not a computer person and I don't understand a thing. This is too hard!
- We are considering offering hosted (password-protected) servers for a fee (ie you upload the data; we set things up as you need them). Please get in touch by email if you are interested or need other consulting advice.
- Can I get a support contract which guarantees rapid response?
- Yes. Get in touch by email.
- Can SequenceServer do XXX? Why doesn't YYYY work? It's ugly, it crashes!?!?
- First, run
gem update or
sudo gem update.
- Feel free
to add comments, vote, report bugs, request features
and contribute code. All contributions, patches and
pulls are welcome. Our issues
tracker logs development activities. If you're not a coder, please
consider supporting development by a
donation. Donations can dramatically increase the
speed at which new features are added!
- 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.
- 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.
- 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.
- Maybe you?
- The SequenceServer team will happily accept contributions. Please get in touch to figure out where you could fit in. Cheers!
As well as:
and many additional private installations we don't know about...
Parts of this software are © 2011 University of Lausanne.
Please cite: "Priyam A., Woodcroft B.J., Wurm Y in prep. SequenceServer: BLAST searching made easy