Sign inSign up

bioacc/chorus

By bioacc

Updated about 3 years ago

Chorus: Heterogeneous GPU+CPU Multiple Protein Sequences Alignment Search for Large Database

Image
0

70

bioacc/chorus repository overview

Chorus: Heterogeneous GPU+CPU Multiple Protein Sequences Alignment Search for Large Database

Chorus is an efficient protein-protein local alignment search tool for multiple query sequences and large databases. Our method is up to 300x faster than NCBI-BLASTP when inputting multiple query seqs at a time, and can stay ahead of the state-of-the-art database-index methods when there are less than 5000 input query seqs (2.2-27x faster than fastest MMseqs2, 1.1-9x than fastest DIAMOND), while maintaining a low memory footprint.

Requirements

Hardware:

A linux (ubuntu) server with a NVIDIA GPU and support nvidia-container

Software:

  • docker
  • nvidia-container-toolkit

Quick Start

1. Fetch container image
docker pull bioacc/chorus:1.0.0
2. Tantan the database and query sequences (Optional)

2.1. Download and build tantan Integrated in chorus container image now

2.2. Tantan the database

# suppose host file directory is /HOST_INPUT & /HOST_OUTPUT
docker run -i -u $(id -u):$(id -g) --gpus=all -v /HOST_INPUT:/HOST_INPUT \
    bioacc/chorus:1.0.0 tantan -p /HOST_INPUT/<protein_db.fasta> > /HOST_OUTPUT/<protein_db_tantaned.fasta>

2.3. Tantan the query sequences

docker run -i -u $(id -u):$(id -g) --gpus=all -v /HOST_INPUT:/HOST_INPUT \
    bioacc/chorus:1.0.0 tantan -p /HOST_INPUT/<query.fasta> > /HOST_OUTPUT/<query_tantaned.fasta>
3. Create database (process only once for each database)

Input: A protein database file (in fasta format).

docker run -i -u $(id -u):$(id -g) --gpus=all \
  -v /HOST_INPUT:/HOST_INPUT \
  -v /HOST_OUTPUT:/HOST_OUTPUT \
    bioacc/chorus:1.0.0 createDB /HOST_INPUT/<protein_db(_tantaned).fasta> /HOST_OUTPUT/<output db> <batch size (GB)>

Output: This step will create database files for each part, including "dbnameX.seq", "dbnameX.name", "dbnameX.sofs" and "dbnameX.nofs", to the same directory with the original db file.

E.g.

./createDB ../db/nr.fasta ../db/nr 4
4. Query the sequences

Input: The pre-processed database in step 2. And a query sequences file (in fasta format).

docker run -i -u $(id -u):$(id -g) --gpus=all \
  -v /HOST_INPUT_QR:/HOST_INPUT_QR \
  -v /HOST_INPUT_DB:/HOST_INPUT_DB \
  -v /HOST_OUTPUT:/HOST_OUTPUT \
    bioacc/chorus:1.0.0 query -q /HOST_INPUT_QR/<query(_tantaned).fasta> -d /HOST_INPUT_DB/<db1> [db2 ... (optional)] -o /HOST_OUTPUT/<output file>

Chorus will automatically detect all parts of the database created in the same directory, iteratively process them, and finally show all results in the output file.

E.g.

./query -d ../db/nr -q ../example_query -o res.out

More Arguments for Seaching

Please use

docker run -i \
    bioacc/chorus:1.0.0 query --help

to get help message.

ArgDescriptionDefault
--outfmtOutput format: 0: m8 tabular (like blast+ outfmt 6); 1: detailed alignment; 2: tabular and ref seqs (fasta); 3: Opfi format; 4: a3m format; 5: Diamond benchmark format.0
-l, --filter-levelThe filter level to pass a database sequence to smith waterman align. The smaller the value, the more sensitive the result. ("sensitivity" refers to the ability of a sequence alignment algorithm to correctly identify and align similar or homologous sequences, especially those that share low levels of similarity or are distantly related.)1
--min-scoreThe minimum score for each alignment to display.0
-e, --max-evalueThe maximum expectation value for each alignment to display1e1
--max-output-alignThe maximum number of alignments to display for each query. (0 means no limit)0
--num-threadsNumber of CPU threads.Maximum threads available
-k, --seed-lengthLength of k-mer. (3, 4, or 5)5
-w, --qit-widthWidth of query index table. (Number of indices for each row) The larger the value, the less likely the overflow occurs.4
-h, --hash-sizeVoting hash table size ratio. The larger the value, the larger the GPU voting hash table (doubly for each increment). (0: maybe OK; 1: OK for most query seqs; 2: redundancy)2
--band-widthThe bandwidth in banded smith-waterman. The larger the value, the more sensitive the result.8
--must-includeRequires the ref sequence must match a regular expression n times. (e.g. --must-include "R[A-Z]{4,7}H" 2)No limit

Tag summary

Content type

Image

Digest

sha256:86d07546a

Size

1.1 GB

Last updated

about 3 years ago

docker pull bioacc/chorus:1.0.0