Sequence search · Software
MMseqs2
Search and cluster massive protein and nucleotide sequence sets across CPUs and GPUs.
What MMseqs2 is
MMseqs2 (Many-against-Many sequence searching) is a software suite designed to search, cluster, and annotate very large protein and nucleotide datasets. It addresses the computational bottleneck of analysing high-throughput sequencing data, scaling efficiently from personal computers to high-performance computing clusters and graphics processing units.
Originally developed by Martin Steinegger and Johannes Söding, MMseqs2 provides sequence search speeds up to 10,000 times faster than BLAST, while maintaining nearly identical sensitivity at 100 times BLAST's speed. It also performs iterative sequence-profile searches with the sensitivity of PSI-BLAST at over 400 times the speed, and features clustering algorithms designed to scale linearly with input dataset size.
How it works
MMseqs2 operates either directly on FASTA and FASTQ files through simplified workflows or on its internal indexed database format. For clustering, the software offers a cascaded clustering algorithm in `easy-cluster` as well as a linear-time algorithm in `easy-linclust` that scales directly with sequence count. For searches, the software applies vectorized instruction sets—such as SSE2, SSE4.1, and AVX2—alongside optional GPU acceleration to rapidly identify and align related sequences.
Target databases can be indexed and padded in advance to minimise recurring search overhead. When target databases exceed available system memory, MMseqs2 automatically partitions the database into smaller chunks and evaluates them sequentially. Distributed execution across multiple servers is handled by assigning database splits to individual nodes using the Message Passing Interface (MPI), with each node parallelising execution across cores using OpenMP.
Key facts
- Implementation language
- C++
- Supported sequence types
- Protein and nucleotide
- Supported inputs
- FASTA, FASTQ, and MMseqs2 database formats
- Supported architectures
- x86_64 (SSE2, SSE4.1, AVX2), ARM64, PPC64LE (POWER8 or newer)
- GPU support
- NVIDIA CUDA (Turing, Ampere or newer) and AMD ROCm (CDNA2 preview)
- Parallel processing
- OpenMP (multithreading) and MPI (multi-node distributed computing)
- Memory requirement
- 1 byte per sequence residue for clustering; 1 byte per target residue for searching
What you can use it for
- Massive sequence clustering
- Cluster huge protein or nucleotide datasets using cascaded clustering or the linear-time `easy-linclust` workflow to generate non-redundant sequence representatives.
- Homology searching and profile analysis
- Search query sequences against comprehensive reference collections such as UniProt, UniRef, NR, NT, or Pfam using single queries or iterative PSI-BLAST-style profile searches.
- Metagenomic taxonomic assignment
- Assign taxonomic lineages to contigs or reads using the `easy-taxonomy` workflow, calculating the lowest common ancestor (LCA or 2bLCA) against databases like NCBI or SILVA.
- Cross-alphabet translated alignment
- Perform translated nucleotide-versus-protein (blastx), protein-versus-nucleotide (tblastn), or nucleotide-versus-nucleotide (tblastx) alignments.
Run it here
MMseqs2 is preinstalled on the machine behind every research conversation. Ask the agent in plain language, or give it the exact command — it runs it, reads the output and explains it.
Strengths and limits
Good at
- It searches sequence databases up to 10,000 times faster than BLAST and performs profile searches over 400 times faster than PSI-BLAST.
- The linear-time clustering algorithm (`easy-linclust`) prevents quadratic runtime scaling when processing massive sequence collections.
- Database indexing and automatic memory-based partitioning allow huge reference databases to be searched even on memory-constrained systems.
- It supports extensive parallel computing schemes, including multi-threading with OpenMP, multi-node clustering with MPI, and GPU acceleration.
Watch out for
- Precompiled GPU binaries do not support NVIDIA architectures older than Turing, such as Pascal or Volta.
- Building with 64-bit sequence identifiers to support more than 2^32 sequences doubles internal memory usage even for small databases.
- Windows compatibility is currently limited to a beta version operated via Cygwin.
- The default standard search command estimates sequence identity rather than calculating exact identity unless specific alignment flags are set.
Questions
Can I run MMseqs2 online without installing it?
MMseqs2 is preinstalled on the machine behind every research conversation. Ask the agent in plain language, or give it the exact command — it runs it, reads the output and explains it.
What licence is MMseqs2 under?
MMseqs2 is published under its authors' own licence; the project page at https://github.com/soedinglab/MMseqs2 states it.
How much memory does MMseqs2 require to run?
MMseqs2 requires a baseline of approximately 1 byte per sequence residue for clustering and 1 byte per target residue for sequence searching. It automatically detects system memory limits and splits target databases into smaller chunks when memory is insufficient.
Which GPUs can be used to accelerate searches?
MMseqs2 supports NVIDIA CUDA-enabled GPUs of the Turing generation or newer, achieving full performance on Ampere or newer cards. It also includes preview support for AMD ROCm GPUs of the CDNA2 generation or newer, whereas older architectures like Pascal and Volta are unsupported.
How does MMseqs2 calculate sequence identity?
The `easy-search` workflow calculates sequence identity by dividing identical residues by alignment length, whereas the core `search` command estimates identity by default. To obtain real sequence identity in the core search module, the alignment mode parameter `-a` or `--alignment-mode 3` must be enabled.
Can MMseqs2 run across multiple compute nodes in a cluster?
Yes, MMseqs2 can be compiled with MPI support to distribute database splits across multiple network-connected servers, with individual nodes further parallelising calculations across CPU cores via OpenMP.
How to cite it
Steinegger M and Soeding J. MMseqs2 enables sensitive protein sequence searching for the analysis of massive data sets. Nature Biotechnology, doi: 10.1038/nbt.3988 (2017)
Written from MMseqs2's own README and project page. Statements citing a figure that does not appear there are removed before publication. Licence and running details come from our registry.