SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user interface for personal or group use.
If you use SequenceServer, please cite our paper: Sequenceserver: A modern graphical user interface for custom BLAST databases. Molecular Biology and Evolution (2019).
For installation instructions and how to use SequenceServer please see https://sequenceserver.com/ - instructions for independently installing open-source sequenceserver are linked from the footer.
If you want to run SequenceServer directly from source code, please see 'Develop and contribute' section below.
We also offer a hosted cloud blast service for those who prefer fully point-and-click installation and want to avoid the complexities and costs of running a server. Running the cloud service enables us to further support the development of SequenceServer.
Refer friends or colleagues to SequenceServer Cloud and earn up to $400 per person who signs up (as of 2023-10; exact terms may change).
New releases are announced on GitHub release page and on our Support Page.
Please report any issues here: https://github.com/wurmlab/sequenceserver/issues or on the community support forum
To develop and contribute, you will need to run SequenceServer from source (see below).
You will need Ruby and RubyGems:
# Install bundler gem to install Ruby dependencies
gem install bundler
# Move to where you downloaded or cloned seqserv
cd sequenceserver
# Use bundler to install Ruby dependencies
bundle install
# Use bundler to run SequenceServer
bundle exec bin/sequenceserver
If you do not plan to develop, you can skip installing development dependencies
by running bundle install --without=development
.
Having installed Docker, to run SequenceServer locally as a Docker container, using the example database from the ncbi-blast+ debian package:
from final
at the end of the Dockerfile
to from dev
.docker build -t sequenceserver .
docker run --rm -it -p 4567:4567 sequenceserver
Otherwise, a database will need to be copied to the db
volume.
During development, you should use -D
option to run SequenceServer in development mode. In this mode, SequenceServer will log verbosely.
# Run SequenceServer in development mode
bundle exec bin/sequenceserver -D
If you want to modify and build frontend code, you will additionally need Node and npm. You can then run a watch server that will automatically build any changes you make the frontend code:
# Install frontend dependencies
npm install
# Run watch server to automatically build changes to the frontend code
npm run-script watch
Alternatively, you can manually build the frontend code after you have made your changes:
# Build minified JS and CSS bundles
npm run-script build
If you are using docker, you can build the frontend code and include it in the image by specifying '--target=minify' to the docker build command:
docker build . -t seqserv-with-customisations --target=minify
We use RSpec and Capybara for testing. Our test suite covers 87% of the codebase. Tests are run automatically when you open a pull-request (see Getting code merged section below) but it may be desirable sometimes to run a single test, whole file, or all tests locally:
To run a single test (a.k.a, scenario):
bundle exec rspec spec/foo_spec.rb -e 'bar'
To run all tests in a single file:
bundle exec rspec spec/foo_spec.rb
To run all tests:
bundle exec rspec
Unit tests for the React frontend are written using React Testing Library and jest.
One option for installing jest: npm install --save-dev jest
To run a single test :
npm run test -e "test name"
To run all tests in a single file:
npm run test file_name
To run all tests:
npm run test
We use CodeClimate for static code analysis. CodeClimate is run automatically when you open a pull-request (see Getting code merged section below) but it may be desirable sometimes to run it locally.
For this, first install CodeClimate following the instructions at https://github.com/codeclimate/codeclimate.
Once CodeClimate is installed, install the required codeclimate 'engines':
codeclimate engines:install
To run all the style checkers:
codeclimate analyze
To run eslint:
codeclimate analyze -e eslint
To run rubocop:
codeclimate analyze -e rubocop
stylelint is used for CSS:
codeclimate analyze -e stylelint
The above commands respect the respective style checker's config files, e.g., .rubocopy.yml for Rubocop and so on.
To run workflows locally, ensure nektos/act is installed as a GitHub CLI extension.
Then, for instance, .github/workflows/test.yml
would be run by:
gh act -j test
action-validator is claimed as a yaml validator for GitHub workflows.
Please open a pull-request on GitHub to get code merged. Our test suite and the CodeClimate static code analysis system will be automatically run on your pull-request. These should pass for your code to be merged. If you want to add a new feature to SequenceServer, please also add tests. In addition, code should be rubocop
and eslint
compliant, and hard-wrapped to 80 chars per line.
If you change frontend code (JavaScript and CSS), please build (i.e., minify and compress) and commit the resulting JS and CSS bundles before opening a pull-request. This is because SequenceServer is run in production mode by the test suite.