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 0 compares 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; --cut cuts at a restriction pattern, which is a different operation (see vsearch-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_subsample subsamples sequences, not table columns (see vsearch-fastx_subsample(1)).
otutab_octave
Not implemented.
sintax_summary
Not implemented. --sintax writes per-query classifications; summing them per rank is left to downstream tools (see vsearch-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 evalue field of --userfields exists, and always reports -1 (see vsearch-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 the query field of --userfields.

DELIBERATE DIFFERENCES

Corrections and extensions vsearch applies on purpose. They are differences in output or in accepted input, not accidents.

  • With --blast6out and --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 --blast6out file but not in the alignment output. vsearch lists them in both, as No hits.
  • The raw field of --userfields is not informative in usearch. vsearch reports the alignment score.
  • The fields qlo, qhi, tlo and thi have counterparts qilo, qihi, tilo and tihi reporting alignment coordinates that ignore terminal gaps.
  • --iddef, and with it the alternative pairwise identity definitions that usearch removed, is available in vsearch.
  • --topn extends to the sorting commands.
  • --sizein extends 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:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. 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.

This site uses Just the Docs, a documentation theme for Jekyll.