Chorus: Heterogeneous GPU+CPU Multiple Protein Sequences Alignment Search for Large Database
70
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.
Hardware:
A linux (ubuntu) server with a NVIDIA GPU and support nvidia-container
Software:
docker pull bioacc/chorus:1.0.0
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>
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
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
Please use
docker run -i \
bioacc/chorus:1.0.0 query --help
to get help message.
| Arg | Description | Default |
|---|---|---|
| --outfmt | Output 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-level | The 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-score | The minimum score for each alignment to display. | 0 |
| -e, --max-evalue | The maximum expectation value for each alignment to display | 1e1 |
| --max-output-align | The maximum number of alignments to display for each query. (0 means no limit) | 0 |
| --num-threads | Number of CPU threads. | Maximum threads available |
| -k, --seed-length | Length of k-mer. (3, 4, or 5) | 5 |
| -w, --qit-width | Width of query index table. (Number of indices for each row) The larger the value, the less likely the overflow occurs. | 4 |
| -h, --hash-size | Voting 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-width | The bandwidth in banded smith-waterman. The larger the value, the more sensitive the result. | 8 |
| --must-include | Requires the ref sequence must match a regular expression n times. (e.g. --must-include "R[A-Z]{4,7}H" 2) | No limit |
Content type
Image
Digest
sha256:86d07546a…
Size
1.1 GB
Last updated
about 3 years ago
docker pull bioacc/chorus:1.0.0