Riboseek enables fast and sensitive search of large RNA sequence sets. It uses a dinucleotide-based alphabet for prefiltering, and supports GPU acceleration for searching nucleotide databases at the scale of the NT database. Beyond search, Riboseek generates multiple sequence alignments and covariance models for downstream RNA analysis.
- Riboseek
- Table of Contents
# Linux AVX2 build (check using: cat /proc/cpuinfo | grep avx2)
wget https://mmseqs.com/riboseek/riboseek-linux-avx2.tar.gz; tar xvzf riboseek-linux-avx2.tar.gz; export PATH=$(pwd)/riboseek/bin/:$PATH
# Linux AVX2 & GPU build (req. glibc >= 2.17 and nvidia driver >= 525.60.13)
wget https://mmseqs.com/riboseek/riboseek-linux-gpu.tar.gz; tar xvzf riboseek-linux-gpu.tar.gz; export PATH=$(pwd)/riboseek/bin/:$PATH
# Conda installer (Linux and macOS)
conda install -c conda-forge -c bioconda riboseek
Note
GPU-accelerated search requires an NVIDIA GPU of the Ampere generation or newer for full speed, and runs at reduced speed on Turing-generation GPUs. The precompiled and bioconda binaries do not support older generations (e.g. Volta or Pascal).
The easy-search module searches one or more RNA sequences in FASTA/FASTQ format (flat or gzipped) against a target database, a folder, or individual FASTA files. It creates the databases internally and writes a tab-separated alignment file.
riboseek easy-search example/QUERY.fasta example/DB.fasta aln.m8 tmp
The default output fields are query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits. They can be customized with --format-output, e.g. --format-output "query,target,qaln,taln" returns the accessions and the pairwise alignments.
| Code | Description |
|---|---|
| query | Query sequence identifier |
| target | Target sequence identifier |
| evalue | E-value of the match |
| bits | Bit score of the match |
See the MMseqs2 documentation for the full list of output codes.
| Option | Category | Description |
|---|---|---|
| -s | Sensitivity | Sensitivity/speed trade-off; lower is faster, higher is more sensitive (default: TBD) |
| --max-seqs | Sensitivity | Number of prefilter hits passed to alignment; increasing it can yield more hits (default: 1000) |
| -e | Sensitivity | Report matches below this E-value (default: 0.001) |
| --gpu | Performance | Enable the GPU-accelerated ungapped prefilter (default: off). Use --gpu 1. |
| --threads | Performance | Number of CPU threads (default: all available) |
Pre-processing the target database with createdb avoids repeating the conversion when searching multiple times against the same target set.
riboseek createdb example/DB.fasta targetDB
riboseek createindex targetDB tmp # OPTIONAL, stores the index on disk
# Create a query database
riboseek createdb example/QUERY.fasta queryDB
# Now search the query database against the target database and write the results to aln.m8
riboseek search queryDB targetDB aln tmp
riboseek convertalis queryDB targetDB aln aln.m8
GPU searches require a padded database layout, created with makepaddedseqdb. The padded database also works for CPU searches.
riboseek makepaddedseqdb targetDB targetDB_gpu
riboseek search queryDB targetDB_gpu aln tmp --gpu 1
Add --gpu 1 to any search to run the ungapped prefilter on the GPU:
riboseek search queryDB targetDB_gpu aln tmp --gpu 1
- Use
CUDA_VISIBLE_DEVICESto select the device(s).CUDA_VISIBLE_DEVICES=0uses GPU 0.CUDA_VISIBLE_DEVICES=0,1uses GPUs 0 and 1.
For databases larger than GPU memory, Riboseek loads the padded database in chunks.
Riboseek can write query-centered MSAs in a3m format:
riboseek createdb example/QUERY.fasta queryDB
riboseek createdb example/DB.fasta targetDB
riboseek search queryDB targetDB aln tmp -a
riboseek result2msa queryDB targetDB aln msa --msa-format-mode 6
riboseek unpackdb msa msa_out --unpack-suffix a3m --unpack-name-mode 0
To convert a3m to FASTA, use reformat.pl (reformat.pl in.a3m out.fas).
Riboseek embeds an Infernal-backed bridge to build covariance models from the alignments it produces, so an MSA can be turned into a CM without a separate Infernal installation.
You can generate CM and realign the hits with CM by:
riboseek cmbuild queryDB targetDB aln cm
riboseek cmsearch cm targetDB aln aln_cm
You can also use multiple targetDBs and alnDBs to build a CM from multiple alignments:
riboseek cmbuild queryDB targetDB1,targetDB2 aln1,aln2 cm
riboseek cmsearch cm cm_target_merged cm_result_merged aln_cm
You can use aln_cm instead of aln as input to result2msa to generate a CM-based MSA or convertalis to generate a CM-based tabular alignment file.
| Option | Category | Description |
|---|---|---|
| --cmlite-msa-eval | Sensitivity | Include only hits with <= this E-value when building the cmbuild seed CM |
| --cm-region | Sensitivity | CM alignment window: flanking pad on each side of the prefilter region, as a fraction of the model max hit length W |
| --threads | Performance | Number of CPU threads (default: all available) |
easy-searchfast RNA sequence search (all-in-one workflow)searchsearch a query database against a target databasecreatedbcreate a database from FASTA/FASTQ filescreateindexprecompute and store the search indexmakepaddedseqdbconvert a database into the padded layout used for GPU searchresult2msabuild multiple sequence alignments from search resultsconvertalisconvert alignment results to a tab-separated filecmbuildbuild a covariance model from an alignmentcmsearchrealign hits with a covariance model
Many of Riboseek's modules (subprograms) come from MMseqs2. For those, refer to the MMseqs2 wiki.
Riboseek bundles the following under lib/:
