Manual for vsearch 2.32.0, the current release. Changes that are not released yet are described in the development manual.
NAME
usearch compatibility — the commands, options and behaviours vsearch shares with usearch, and those it does not
DESCRIPTION
If you are a usearch user, our objective is to make you feel at home: vsearch was designed to behave like usearch, to some extent. Like any complex software, usearch is not free from quirks and inconsistencies. We decided not to reproduce some of them, and, for complete transparency, this page documents the differences that matter when a usearch command line is ported to vsearch: commands vsearch does not implement, options it spells differently, options it accepts and ignores, options it rejects, and behaviours it changed on purpose.
Two differences are broad enough to state first. vsearch works with nucleotide sequences only; amino acid sequences are not supported (see vsearch-nucleotides(7)). And vsearch always aligns globally, with full dynamic programming, so the options by which usearch tunes or bounds its alignment stage have nothing to act on (see vsearch-pairwise_alignment_parameters(7)).
COMMANDS NOT IMPLEMENTED
search_global- usearch’s exhaustive database search, as opposed to the heuristic
usearch_global. vsearch has no separate command for it because the heuristics can be switched off:--usearch_global --maxaccepts 0 --maxrejects 0 --minwordmatches 0compares every query to every target. The first two remove the early stop, the third removes the word pre-filter that selects candidates, and the alignment itself is always a full dynamic programming alignment. Expect the runtime that implies. cluster_otus- Not implemented, and there is no exact equivalent. It combines greedy clustering with chimera filtering (the UPARSE-OTU algorithm), so the closest vsearch route is a clustering command followed by a chimera-detection command, run separately.
search_pcr,search_oligodb- Not implemented. Extracting the region between two primers is not something vsearch does;
--cutcuts at a restriction pattern, which is a different operation (seevsearch-cut(1)). otutab_rare,otutab_norm- Not implemented. Rarefying or normalising an OTU table to a common number of reads is left to downstream tools.
--fastx_subsamplesubsamples sequences, not table columns (seevsearch-fastx_subsample(1)). otutab_octave- Not implemented.
sintax_summary- Not implemented.
--sintaxwrites per-query classifications; summing them per rank is left to downstream tools (seevsearch-sintax(1)).
OPTIONS SPELLED DIFFERENTLY
Same quantity, different name, and in one case a different direction.
| usearch | vsearch |
|---|---|
--fastq_pctid x | --fastq_maxdiffpct 100 - x |
--nowordcountreject | --minwordmatches 0 |
--queryalnfract | --query_cov |
--targetalnfract | --target_cov |
--fastq_pctid bounds the identity of the overlap from below, where --fastq_maxdiffpct bounds the percentage of mismatches from above, so the two arguments are complements. Older usearch versions had --fastq_maxdiffpct itself, under that name.
OPTIONS ACCEPTED AND IGNORED
These options are recognised so that an existing command line still runs, but they have no effect. --band, --fulldp, --hspw, --minhsp, --pattern, --slots and --xdrop_nw all describe usearch’s alignment or seeding stage, which vsearch does not share: vsearch always performs a full dynamic programming alignment, so there is no band to widen and no heuristic to relax.
--cons_truncate is also accepted and ignored, with a warning.
--strand plus is accepted by --uchime_ref for compatibility, and is the only value it takes; --strand both is a fatal error there.
OPTIONS NOT RECOGNISED
Some options of usearch 5, 6 and 7, used by pipelines of that era such as QIIME 1, are rejected outright rather than ignored:
--global- vsearch always aligns globally, so the option would assert the only behaviour there is. Remove it.
--evalue- vsearch does not compute E-values for nucleotide alignments. The
evaluefield of--userfieldsexists, and always reports -1 (seevsearch-userfields(7)). --query- Not an option in vsearch. The query file is the argument to the search command itself, as in
--usearch_global queries.fasta. The name survives as thequeryfield of--userfields.
DELIBERATE DIFFERENCES
Corrections and extensions vsearch applies on purpose. They are differences in output or in accepted input, not accidents.
- With
--blast6outand--output_no_hits, usearch reports 13 fields for a query with no match, where the format has 12. vsearch reports the 12 the format calls for. - With
--output_no_hits, usearch lists queries without a match in the--blast6outfile but not in the alignment output. vsearch lists them in both, asNo hits. - The
rawfield of--userfieldsis not informative in usearch. vsearch reports the alignment score. - The fields
qlo,qhi,tloandthihave counterpartsqilo,qihi,tiloandtihireporting alignment coordinates that ignore terminal gaps. --iddef, and with it the alternative pairwise identity definitions that usearch removed, is available in vsearch.--topnextends to the sorting commands.--sizeinextends to dereplication and clustering.- T and U count as the same nucleotide during dereplication, so an RNA and a DNA spelling of one sequence collapse into a single entry.
- Sorting is stabilised, using sequence abundances or labels as secondary and tertiary keys, so equal keys do not come out in an arbitrary order.
- Low-complexity regions are masked with the DUST algorithm by default, and masking behaviour is more consistent (see
vsearch-fastx_mask(1)). - vsearch adds the command
--cluster_size, which sorts sequences by decreasing abundance before clustering.
vsearch also provides commands and options that usearch does not; they are listed in vsearch(1) and described one page per command.
SEE ALSO
vsearch(1), vsearch-nucleotides(7), vsearch-pairwise_alignment_parameters(7), vsearch-userfields(7), vsearch-usearch_global(1)
CITATION
Rognes T, Flouri T, Nichols B, Quince C, Mahé F. (2016) VSEARCH: a versatile open source tool for metagenomics. PeerJ 4:e2584 doi: 10.7717/peerj.2584
REPORTING BUGS
Submit suggestions and bug-reports at https://github.com/torognes/vsearch/issues, send a pull request on https://github.com/torognes/vsearch, or compose a friendly or curmudgeont e-mail to Torbjørn Rognes (torognes@ifi.uio.no).
AVAILABILITY
Source code and binaries are available at https://github.com/torognes/vsearch.
These manual pages are also published online at https://torognes.github.io/vsearch/.
COPYRIGHT
Copyright (C) 2014-2026, Torbjørn Rognes, Frédéric Mahé and Tomás Flouri
All rights reserved.
Contact: Torbjørn Rognes torognes@ifi.uio.no, Department of Informatics, University of Oslo, PO Box 1080 Blindern, NO-0316 Oslo, Norway
This software is dual-licensed and available under a choice of one of two licenses, either under the terms of the GNU General Public License version 3 or the BSD 2-Clause License.
GNU General Public License version 3
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
The BSD 2-Clause License
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ACKNOWLEDGMENTS
We would like to thank the authors of the following projects for making their source code available:
- vsearch includes code from Google’s CityHash project by Geoff Pike and Jyrki Alakuijala, providing some excellent hash functions available under a MIT license.
- vsearch includes code derived from Tatusov and Lipman’s DUST program that is in the public domain.
- vsearch includes public domain code written by Alexander Peslyak for the MD5 message digest algorithm.
- vsearch includes public domain code written by Steve Reid and others for the SHA1 message digest algorithm.
- vsearch binaries may include code from the zlib library, copyright Jean-Loup Gailly and Mark Adler.
- vsearch binaries may include code from the bzip2 library, copyright Julian R. Seward.