Skip to content

Commit 242ba3a

Browse files
Update README.md
1 parent 16c3559 commit 242ba3a

1 file changed

Lines changed: 42 additions & 87 deletions

File tree

README.md

Lines changed: 42 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ MMseqs2 (Many-against-Many sequence searching) is a software suite to search and
77

88
[Steinegger M and Soeding J. Clustering huge protein sequence sets in linear time. Nature Communications, doi: 10.1038/s41467-018-04964-5 (2018)](https://www.nature.com/articles/s41467-018-04964-5).
99

10+
[Mirdita M, Steinegger M and Soeding J. MMseqs2 desktop and local web server app for fast, interactive sequence searches. Bioinformatics, doi: 10.1093/bioinformatics/bty1057 (2019)](https://academic.oup.com/bioinformatics/article/35/16/2856/5280135)
11+
1012
[![BioConda Install](https://img.shields.io/conda/dn/bioconda/mmseqs2.svg?style=flag&label=BioConda%20install)](https://anaconda.org/bioconda/mmseqs2)
1113
[![Github All Releases](https://img.shields.io/github/downloads/soedinglab/mmseqs2/total.svg)](https://github.com/soedinglab/mmseqs2/releases/latest)
1214
[![Docker Pulls](https://img.shields.io/docker/pulls/soedinglab/mmseqs2.svg)](https://hub.docker.com/r/soedinglab/mmseqs2)
@@ -17,25 +19,18 @@ MMseqs2 (Many-against-Many sequence searching) is a software suite to search and
1719
<p align="center"><img src="https://raw.githubusercontent.com/soedinglab/mmseqs2/master/.github/mmseqs2_logo.png" height="256" /></p>
1820

1921

20-
## Documentation
22+
## Documentation
2123
The MMseqs2 user guide is available in our [GitHub Wiki](https://github.com/soedinglab/mmseqs2/wiki) or as a [PDF file](https://mmseqs.com/latest/userguide.pdf) (Thanks to [pandoc](https://github.com/jgm/pandoc)!). We provide a tutorial of MMseqs2 [here](https://github.com/soedinglab/metaG-ECCB18-partII).
2224

23-
## News
2425
Keep posted about MMseqs2/Linclust updates by following Martin on [Twitter](https://twitter.com/thesteinegger).
2526

26-
08/10/2018 ECCB18 tutorial of MMseqs2 is available [here](https://github.com/soedinglab/metaG-ECCB18-partII).
27-
28-
07/07/2018 Linclust has just been published at [Nature Communications](https://www.nature.com/articles/s41467-018-04964-5).
29-
30-
17/10/2017 MMseqs2 has just been published at [Nature Biotechnology](https://www.nature.com/nbt/journal/vaop/ncurrent/full/nbt.3988.html).
31-
3227
## Installation
3328
MMseqs2 can be used by compiling from source, downloading a statically compiled version, using [Homebrew](https://github.com/Homebrew/brew), [conda](https://github.com/conda/conda) or [Docker](https://github.com/moby/moby). MMseqs2 requires a 64-bit system (check with `uname -a | grep x86_64`) with at least the SSE4.1 instruction set (check by executing `cat /proc/cpuinfo | grep sse4_1` on Linux or `sysctl -a | grep machdep.cpu.features | grep SSE4.1` on MacOS).
3429

3530
# install by brew
3631
brew install mmseqs2
3732
# install via conda
38-
conda install -c bioconda mmseqs2
33+
conda install -c bioconda mmseqs2
3934
# install docker
4035
docker pull soedinglab/mmseqs2
4136
# static build with SSE4.1
@@ -55,130 +50,88 @@ MMseqs2 comes with a bash command and parameter auto completion, which can be ac
5550
</pre>
5651
5752
### Compilation from source
58-
Compiling MMseqs2 from source has the advantage that it will be optimized to the specific system, which should improve its performance. To compile MMseqs2 `git`, `g++` (4.8 or later) and `cmake` (3.0 or later) are needed. Afterwards, the MMseqs2 binary will be located in the `build/bin/` directory.
53+
Compiling MMseqs2 from source has the advantage that it will be optimized to the specific system, which should improve its performance. To compile MMseqs2 `git`, `g++` (4.8 or later) and `cmake` (2.8.12 or later) are needed. Afterwards, the MMseqs2 binary will be located in the `build/bin/` directory.
5954

6055
git clone https://github.com/soedinglab/MMseqs2.git
6156
cd MMseqs2
6257
mkdir build
6358
cd build
6459
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=. ..
6560
make -j 4
66-
make install
61+
make install
6762
export PATH=$(pwd)/bin/:$PATH
6863

6964
:exclamation: To compile MMseqs2 on MacOS, first install the `gcc` compiler from Homebrew. The default MacOS `clang` compiler does not support OpenMP and MMseqs2 will only be able to use a single thread. Then use the following `cmake` call:
7065

7166
CC="$(brew --prefix)/bin/gcc-9" CXX="$(brew --prefix)/bin/g++-9" cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=. ..
7267
73-
74-
## Easy workflows
75-
We provide `easy` workflows to search, taxonomy and cluster. The `easy-search` searches directly with a FASTA/FASTQ files against a either another FASTA/FASTQ file or an already existing MMseqs2 database.
76-
77-
mmseqs easy-search examples/QUERY.fasta DB.fasta alnRes tmp
78-
79-
It is also possible to precompute the index for the target database:
8068

81-
mmseqs createdb examples/DB.fasta targetDB
82-
mmseqs createindex targetDB tmp
83-
mmseqs easy-search examples/QUERY.fasta targetDB alnRes tmp
69+
## Getting started
70+
We provide `easy` workflows to cluster, search and assign taxonomy. These `easy` workflows are a shorthand to deal directly with FASTA/FASTQ files as input and output. MMseqs2 provides many modules to transform, filter, execute external programs and search. However, these modules use the MMseqs2 database formats, instead of the FASTA/FASTQ format. For maximum flexibility, we recommend using MMseqs2 workflows and modules directly. Please read more about this in the [documentation](https://github.com/soedinglab/mmseqs2/wiki).
71+
72+
### Cluster
8473

8574
For clustering, MMseqs2 `easy-cluster` and `easy-linclust` are available.
8675

8776
`easy-cluster` by default clusters the entries of a FASTA/FASTQ file using a cascaded clustering algorithm.
8877

89-
mmseqs easy-cluster examples/DB.fasta clusterRes tmp
78+
mmseqs easy-cluster examples/DB.fasta clusterRes tmp --min-seq-id 0.5 -c 0.8 --cov-mode 1
9079

9180
`easy-linclust` clusters the entries of a FASTA/FASTQ file. The runtime scales linearly with input size. This mode is recommended for huge datasets.
9281

9382
mmseqs easy-linclust examples/DB.fasta clusterRes tmp
94-
95-
These `easy` workflows are a shorthand to deal directly with FASTA/FASTQ files as input and output. MMseqs2 provides many modules to transform, filter, execute external programs and search. However, these modules use the MMseqs2 database formats, instead of the FASTA/FASTQ format. For maximum flexibility, we recommend using MMseqs2 workflows and modules directly.
96-
97-
## How to search
98-
You can use the query database "QUERY.fasta" and target database "DB.fasta" in the examples folder to test the search workflow. First, you need to convert the FASTA files into the MMseqs2 database format.
83+
84+
Sequence identity is in default [estimated](https://github.com/soedinglab/MMseqs2/wiki#how-does-mmseqs2-compute-the-sequence-identity) to output real sequence identity use `--alignment-mode 3`.
85+
Read more about the [clustering format](https://github.com/soedinglab/mmseqs2/wiki#clustering-format) in our user guide.
86+
87+
Please adjust the [clustering criteria](https://github.com/soedinglab/MMseqs2/wiki#clustering-criteria) and check if temporary directory provides enough free space. For disk space requirements, see the user guide.
9988

100-
mmseqs createdb examples/QUERY.fasta queryDB
101-
mmseqs createdb examples/DB.fasta targetDB
89+
### Search
90+
91+
The `easy-search` searches directly with a FASTA/FASTQ files against either another FASTA/FASTQ file or an already existing MMseqs2 database.
10292

103-
If the target database is going to be used several times, we recommend precomputing an index of `targetDB` as this saves overhead computations.
93+
mmseqs easy-search examples/QUERY.fasta DB.fasta alnRes tmp
94+
95+
It is also possible to pre-compute the index for the target database:
10496

97+
mmseqs createdb examples/DB.fasta targetDB
10598
mmseqs createindex targetDB tmp
99+
mmseqs easy-search examples/QUERY.fasta targetDB alnRes tmp
100+
101+
The speed and sensitivity of the `search` can be adjusted with `-s` parameter and should be adapted based on your use case (see [setting sensitivity -s parameter](https://github.com/soedinglab/mmseqs2/wiki#set-sensitivity--s-parameter)). A very fast search would use a sensitivity of `-s 1.0`, while a very sensitive search would use a sensitivity of up to `-s 7.0`. A detailed guide how to speed up searches is [here](https://github.com/soedinglab/MMseqs2/wiki#how-to-control-the-speed-of-the-search).
106102

107-
MMseqs2 stores intermediate results in `tmp`. Using a fast local drive can reduce load on a shared filesystem and increase speed.
108-
109-
To run the search, execute:
110-
111-
mmseqs search queryDB targetDB resultDB tmp
112-
113-
The speed and sensitivity of the `search` can be adjusted with `-s` parameter and should be adapted based on your use case (see [setting sensitivity -s parameter](https://github.com/soedinglab/mmseqs2/wiki#set-sensitivity--s-parameter)). A very fast search would use a sensitivity of `-s 1.0`, while a very sensitive search would use a sensitivity of up to `-s 7.0`.
114-
115-
If you require the exact alignment information (Sequence identity, alignment string, ...) in later steps add the option `-a` parameter, without this parameter MMseqs2 will automatically decide if only the score needs to be computed or the exact alignment to optimize computation time.
116-
117-
Please ensure that, in case of large input databases, the `tmp` directory provides enough free space.
118-
Our user guide provides information on [disk space requirements](https://github.com/soedinglab/mmseqs2/wiki#prefiltering-module).
103+
The output can be customized with the `--format-output` option e.g. `--format-output "query,target,qaln,taln"` returns the query and target accession and the pairwise alignments in tab separated format. You can choose many different [output columns](https://github.com/soedinglab/mmseqs2/wiki#custom-alignment-format-with-convertalis).
119104

120-
Then convert the result database into a BLAST-tab formatted database (format: qId, tId, seqIdentity, alnLen, mismatchCnt, gapOpenCnt, qStart, qEnd, tStart, tEnd, eVal, bitScore).
105+
### Taxonomy
106+
The `easy-taxonomy` workflow can be used assign sequences taxonomical labels. It performs a search against a target sequence databases and computes the lowest common ancestor of all equal scoring top hits (default). Other assignment options are available through `--lca-mode`.
121107

122-
mmseqs convertalis queryDB targetDB resultDB resultDB.m8
108+
mmseqs createdb examples/DB.fasta targetDB
109+
mmseqs createtaxdb targetDB tmp
110+
mmseqs createindex targetDB tmp
111+
mmseqs easy-taxonomy examples/QUERY.fasta targetDB alnRes tmp
123112

124-
The output can be customized with the `--format-output` option e.g. `--format-output "query,target,qaln,taln"` returns the query and target accession and the pairwise alignments in tab separated format. You can choose many different [output columns](https://github.com/soedinglab/mmseqs2/wiki#custom-alignment-format-with-convertalis) in the `convertalis` module. Make sure that you used the option `-a` during the search (`mmseqs search ... -a`).
113+
In default `createtaxdb` assigns every sequence with a Uniprot accession to a taxonomical identifier and downloads the NCBI taxonomy. We also support [BLAST](https://github.com/soedinglab/MMseqs2/wiki#create-a-sequence-database-with-taxonomic-information-from-an-existing-blast-database), [SILVA](https://github.com/soedinglab/MMseqs2/wiki#create-a-sequence-database-with-taxonomic-information-for-silva) or [custom taxonomical](https://github.com/soedinglab/MMseqs2/wiki#manually-annotate-a-sequence-database-with-taxonomic-information) databases.
125114

126-
mmseqs convertalis queryDB targetDB resultDB resultDB.pair --format-output "query,target,qaln,taln"
115+
Read more about the [taxonomy format](https://github.com/soedinglab/MMseqs2/wiki#taxonomy-format) and the [classification](https://github.com/soedinglab/MMseqs2/wiki#taxonomy-assignment-using-mmseqs-taxonomy) in our user guide.
127116

128-
### Other search modes
117+
### Supported search modes
129118

130119
MMseqs2 provides many additional search modes:
131120
* Iterative sequences-profile searches (like PSI-BLAST) with the `--num-iterations` parameter
132121
* [Translated searches](https://github.com/soedinglab/MMseqs2/wiki#translated-sequence-searching) of nucleotides against proteins (blastx), proteins against nucleotides (tblastn) or nucleotide against nucleotide (tblastx)
133122
* [Iterative increasing sensitivity searches](https://github.com/soedinglab/MMseqs2/wiki#how-to-find-the-best-hit-the-fastest-way) to find only the best hits faster
134123
* [Taxonomic assignment](https://github.com/soedinglab/MMseqs2/wiki#taxonomy-assignment-using-mmseqs-taxonomy) using 2bLCA or LCA
135124
* Fast ungapped alignment searches to find [very similar sequence matches](https://github.com/soedinglab/MMseqs2/wiki#mapping-very-similar-sequences-using-mmseqs-map)
136-
* Very fast and sensitive Searches against [profile databases such as the PFAM](https://github.com/soedinglab/MMseqs2/wiki#how-to-create-a-target-profile-database-from-pfam)
125+
* Very fast and sensitive searches against [profile databases such as the PFAM](https://github.com/soedinglab/MMseqs2/wiki#how-to-create-a-target-profile-database-from-pfam)
137126
* [Reciprocal best hits search](https://github.com/soedinglab/MMseqs2/wiki#reciprocal-best-hit-using-mmseqs-rbh)
138127
* [Web search API and user interface](https://github.com/soedinglab/MMseqs2-App)
139128

140-
141129
Many modes can also be combined. You can, for example, do a translated nucleotide against protein profile search.
142130

143-
## How to cluster
144-
Before clustering, convert your database into the MMseqs2 database format:
145-
146-
mmseqs createdb examples/DB.fasta DB
147-
148-
Then execute the clustering:
149-
150-
mmseqs cluster DB clu tmp
151-
152-
or linear time clustering (faster but less sensitive):
153-
154-
mmseqs linclust DB clu tmp
155-
156-
Please adjust the [clustering criteria](https://github.com/soedinglab/MMseqs2/wiki#clustering-criteria) and check if temporary directory provides enough free space. For disk space requirements, see the user guide.
157-
158-
To generate a FASTA-style formatted output file from our MMseqs2 databases, type:
159-
160-
mmseqs createseqfiledb DB clu clu_seq
161-
mmseqs result2flat DB DB clu_seq clu_seq.fasta
162-
163-
To generate a TSV-style formatted output file from our MMseqs2 databases, type:
164-
165-
mmseqs createtsv DB DB clu clu.tsv
166-
167-
To extract the representative sequences from the clustering result call:
168-
169-
mmseqs result2repseq DB clu DB_clu_rep
170-
mmseqs result2flat DB DB DB_clu_rep DB_clu_rep.fasta --use-fasta-header
171-
172-
Read more about the [clustering format](https://github.com/soedinglab/mmseqs2/wiki#clustering-format) in our user guide.
173-
174131
### Memory Requirements
175-
MMseqs2 checks the available system memory and automatically divides the target database in parts that fit into memory. Splitting the database will increase the runtime slightly.
176-
177-
The memory consumption grows linearly with the number of residues in the database. The following formula can be used to estimate the index size.
178-
179-
M = (7 × N × L) byte + (8 × a^k) byte
180-
181-
Where `L` is the average sequence length and `N` is the database size.
132+
MMseqs2 minimum memory requirements for `cluster` or `linclust` is 1 byte per sequence residue, `search` needs 1 byte per target residue. Sequence databases can be compressed using the `--compress` flag, DNA sequences can be reduced by a factor of `~3.5` and proteins by `~1.7`.
133+
134+
MMseqs2 checks the available system memory and automatically divides the target database in parts that fit into memory. Splitting the database will increase the runtime slightly. It is possible to control the memory usage using `--split-memory-limit`.
182135

183136
### How to run MMseqs2 on multiple servers using MPI
184137
MMseqs2 can run on multiple cores and servers using OpenMP and Message Passing Interface (MPI).
@@ -189,3 +142,5 @@ Make sure that MMseqs2 was compiled with MPI by using the `-DHAVE_MPI=1` flag (`
189142
To search with multiple servers, call the `search` or `cluster` workflow with the MPI command exported in the RUNNER environment variable. The databases and temporary folder have to be shared between all nodes (e.g. through NFS):
190143

191144
RUNNER="mpirun -pernode -np 42" mmseqs search queryDB targetDB resultDB tmp
145+
146+

0 commit comments

Comments
 (0)