vsearch(1) chimera detection, clustering, dereplication and

SYNOPSIS

Chimera detection:
vsearch --uchime_denovo fastafile (--chimeras | --nonchimeras | --uchimealns | --uchimeout) outputfile [options]

vsearch --uchime_ref fastafile (--chimeras | --nonchimeras | --uchimealns | --uchimeout) outputfile --db fastafile [options]

Clustering:
vsearch (--cluster_fast | --cluster_size | --cluster_smallmem) fastafile (--alnout | --blast6out | --centroids | --clusters | --msaout | --profile | --samout | --uc | --userout) outputfile --id real [options]

Dereplication and rereplication:
vsearch (--derep_fulllength | --derep_prefix) fastafile (--output | --uc) outputfile [options]

vsearch (--rereplicate) fastafile --output outputfile [options]

FASTA/FASTQ file processing:
vsearch --fastq_chars fastqfile [options]

vsearch --fastq_convert fastqfile --fastqout outputfile [options]

vsearch --fastq_eestats fastqfile --output outputfile [options]

vsearch --fastq_filter fastqfile (--fastaout | --fastaout_discarded | --fastqout | --fastqout_discarded) outputfile [options]

vsearch --fastq_mergepairs fastqfile --reverse fastqfile (--fastaout | --fastqout | --fastaout_notmerged_fwd | --fastaout_notmerged_rev | --fastqout_notmerged_fwd | --fastqout_notmerged_rev | --eetabbedout) outputfile [options]

vsearch --fastq_stats fastqfile [--log logfile] [options]

vsearch --fastx_revcomp fastxfile (--fastaout | --fastqout) outputfile [options]

Masking:
vsearch --fastx_mask fastxfile (--fastaout | --fastqout) outputfile [options]

vsearch --maskfasta fastafile --output outputfile [options]

Pairwise alignment:
vsearch --allpairs_global fastafile (--alnout | --blast6out | --matched | --notmatched | --samout | --uc | --userout) outputfile (--acceptall | --id real) [options]

Searching:
vsearch --search_exact fastafile --db fastafile (--alnout | --blast6out | --samout | --uc | --userout) outputfile [options]

vsearch --usearch_global fastafile --db fastafile (--alnout | --blast6out | --samout | --uc | --userout) outputfile --id real [options]

Shuffling and sorting:
vsearch (--shuffle | --sortbylength | --sortbysize) fastafile --output outputfile [options]

Subsampling:
vsearch --fastx_subsample fastafile --fastaout outputfile (--sample_pct real | --sample_size positive integer) [options]

DESCRIPTION

Environmental or clinical molecular diversity studies generate large volumes of amplicons (e.g. SSU-rRNA sequences) that need to be checked for chimeras, dereplicated, masked, sorted, searched, clustered or compared to reference sequences. The aim of vsearch is to offer a all-in-one open source tool to perform these tasks, using optimized algorithm implementations and harvesting the full potential of modern computers, thus providing fast and accurate data processing.

Comparing nucleotide sequences is at the core of vsearch. To speed up comparisons, vsearch implements an extremely fast implementation of the Needleman-Wunsch algorithm, making use of the Streaming SIMD Extensions (SSE2) of modern x86-64 CPUs. If SSE2 instructions are not available, vsearch exits with an error message. For comparisons involving sequences longer than 5,000 nucleotides, vsearch uses a slower alignment method with smaller memory requirements.

Input

vsearch input is a fasta (or fastq) file containing one or several nucleotide sequences. For each sequence, the sequence identifier is defined as the string comprised between the ">" (or "@") symbol and the first space, tab or the end of the line, whichever comes first. Additionally, if the fasta header line matches ">[;]size=integer;label", ">label;size=integer;label" or ">label;size=integer[;]", vsearch will remove the pattern [;]size=integer[;] from the header and interpret integer as the number of occurrences (or abundance) of the sequence in the study. That abundance information is used or created during chimera detection, clustering, dereplication, sorting and searching.

The nucleotide sequence is defined as a string of IUPAC symbols (ACGTURYSWKMDBHVN), starting after the end of the identifier line and ending before the next identifier line, or the file end. vsearch silently ignores ascii characters 9 to 13, and exits with an error message if ascii characters 0 to 8, 14 to 31, "." or "-" are present. All other ascii or non-ascii characters are stripped and complained about in a non-blocking warning message.

vsearch operations are case insensitive, except when soft masking is activated. Masking is performed by the commands for chimera detection, clustering, masking, pairwise alignment and searching. Soft masking is specified with the options "--dbmask soft" (for searching and chimera detection with a reference) or "--qmask soft" (for searching, de novo chimera detection, clustering and masking). When using soft masking, lower case letters indicate masked symbols, while upper case letters indicate regular symbols. Masked symbols are never included in the unique index words used for searching, otherwise they are treated as normal symbols.

When comparing sequences during chimera detection, dereplication, searching and clustering, T and U are considered identical, regardless of their case. If two symbols are not identical, their alignment will result in the negative mismatch score (default -4), except if one or both of the symbols are ambiguous (RYSWKMDBHVN) in which case the score is zero. Alignment of two identical ambiguous symbols (e.g. R vs R) also receives a score of zero.

Input files compressed with gzip or bzip2 are automatically detected and decompressed if vsearch was compiled with the appropriate libraries. Input from pipes is supported, but then compressed input must be indicated using the --gzip_decompress or --bzip2_decompress options. For input files the name '-' represents standard input (/dev/stdin). Multiple FASTA or FASTQ files may be piped into vsearch for dereplication or other operations. When reading from a pipe, the progress indicator is not updated. For output files the name '-' represents standard output (/dev/stdout).

Options

vsearch recognizes a large number of command-line options. For easier navigation, options are grouped below by theme (chimera detection, clustering, dereplication and rereplication, FASTA/FASTQ file processing, masking, pairwise alignment, searching, shuffling, sorting, and subsampling). We start with the general options that apply to all themes. Options may start with a single (-) or double dash (--). Option names may be shortened as long as they are not ambiguous (e.g. --derep_f).

General options:

--bzip2_decompress
Decompress input using bzip2. The option is required only when reading from a pipe, otherwise compression is automatically detected.
--fasta_width~positive integer
Fasta files produced by vsearch are wrapped (sequences are written on lines of integer nucleotides, 80 by default). Set that value to 0 to eliminate the wrapping.
--gzip_decompress
Decompress input using gzip. The option is required only when reading from a pipe, otherwise compression is automatically detected.
--help | --h
Display help text and exit.
--log filename
Write messages to the specified log file. Information written includes program version, amount of memory available, number of cores and command line options. The start and finish times are also recorded as well as the elapsed time. The maximum amount of memory consumed is included. The different commands will usually also write some information about their results. Both fatal, warning and informational messages are written.
--maxseqlength~positive integer
All vsearch operations will discard sequences of length equal or greater than integer (50,000 nucleotides by default).
--minseqlength~positive integer
All vsearch operations will discard sequences of length smaller than integer (1 nucleotide by default for sorting or shuffling, 32 nucleotides for clustering, dereplication or searching).
--notrunclabels
Do not truncate sequence labels at first space or tab, use the full header in output files.
--quiet
Suppress all output to stdout and stdout except for warnings and fatal error messages.
--threads~positive integer
Number of computation threads to use (1 to 256). The number of threads should be lesser or equal to the number of available CPU cores. The default is to use all available resources and to launch one thread per logical core. The following commands are multi-threaded: uchime_ref, cluster_fast, cluster_size, cluster_smallmem, maskfasta, allpairs_global, usearch_global. Only one thread is used for the other commands.
--version | --v
Output version information and exit.

Chimera detection options:

Chimera detection is based on a scoring function controlled by five options (--dn, --mindiffs, --mindiv, --minh, --xn). Sequences are first sorted by decreasing abundance (if available), and compared on their plus strand only (case insensitive).

Input sequences are masked as specified with the --qmask and --hardmask options. Masking of the database for reference based chimera detection is specified with the --dbmask option.

In de novo mode, input fasta file should present abundance annotations (pattern [;]size=integer[;] in the fasta header). The input order influences the chimera detection, so we recommend to sort sequences by decreasing abundance (default of --derep_fulllength command). If your sequence set needs to be sorted, please see the --sortbysize command in the sorting section.

--abskew real
When using --uchime_denovo, the abundance skew is used to distinguish in a 3-way alignment which sequence is the chimera and which are the parents. The assumption is that chimeras appear later in the PCR amplification process and are therefore less abundant than their parents. The default value is 2.0, which means that the parents should be at least 2 times more abundant than their chimera. Any positive value greater than 1.0 can be used.
--alignwidth~positive integer
Width of the 3-way alignments in --uchimealns output. The default value is 80. Set to 0 to eliminate wrapping.
--borderline filename
Output borderline chimeric sequences to filename, in fasta format. Borderline chimeric sequences are sequences that have a high enough score but which are not sufficiently diverged from their closest parent.
--chimeras filename
Output chimeric sequences to filename, in fasta format. Output order may vary when using multiple threads.
--db filename
When using --uchime_ref, detect chimeras using the fasta-formatted reference sequences contained in filename. Reference sequences are assumed to be chimera-free. Chimeras will not be detected if their parents (or sufficiently close relatives) are not present in the database.
--dn real
No vote pseudo-count (parameter n in the chimera scoring function) (default value is 1.4).
--fasta_score
Add the chimera score to the headers in the fasta output files for chimeras, non-chimeras and borderline sequences. A string similar to ";uchime_denovo=0.1234;" or ";uchime_ref=5.6789;" will be added.
--mindiffs~positive integer
Minimum number of differences per segment (default value is 3).
--mindiv real
Minimum divergence from closest parent (default value is 0.8).
--minh real
Minimum score (h). Increasing this value tends to reduce the number of false positives and to decrease sensitivity. Default value is 0.28, and values ranging from 0.0 to 1.0 included are accepted.
--nonchimeras filename
Output non-chimeric sequences to filename, in fasta format. Output order may vary when using multiple threads.
--relabel string
Relabel sequences using the prefix string and a ticker (1, 2, 3, etc.) to construct the new headers. Use --sizeout to conserve the abundance annotations.
--relabel_keep
When relabelling, keep the old identifier in the header after a space.
--relabel_md5
Relabel sequences using the MD5 message digest algorithm applied to the sequence to replace the header. The sequence is converted to upper case and U is replaced by T before the digest is computed. The MD5 digest is a cryptographic hash function designed to minimize the probability that two different inputs will give the same output, even for very similar, but non-identical inputs. Still, there will always be a small, but non-zero, probability that two different inputs will give the same result. The MD5 digest generates a 128 bit (16 byte) result that is represented by 32 hexadecimal digits (0123456789abcdef). Use --sizeout to conserve the abundance annotations.
--relabel_sha1
Relabel sequences using the SHA1 message digest algorithm applied to the sequence to replace the header. It is similar to the --relabel_md5 option but uses the SHA1 algorithm instead of the MD5 algorithm. The SHA1 digest generates a 160 bit (20 byte) result that is represented by 40 hexadecimal digits. The probability of a collision (two non-identical sequences having the same digest) is smaller for the SHA1 algorithm than for the MD5 algorithm.
--self
When using --uchime_ref, ignore a reference sequence when its label matches the label of the query sequence (useful to estimate false-positive rate in reference sequences).
--selfid
When using --uchime_ref, ignore a reference sequence when its nucleotide sequence is strictly identical with the query sequence.
--sizeout
Add abundance annotations to the output fasta file (with the pattern ";size=integer;" to sequence headers) when relabelling.
--uchime_denovo filename
Detect chimeras present in the fasta-formatted filename, without external references (i.e. de novo). Automatically sort the sequences in filename by decreasing abundance beforehand (see the sorting section for details). Multithreading is not supported.
--uchime_ref filename
Detect chimeras present in the fasta-formatted filename by comparing them with reference sequences (option --db). Multithreading is supported.
--uchimealns filename
Write the 3-way global alignments (parentA, parentB, chimera) to filename using a human-readable format. Use --alignwidth to modify alignment length. Output order may vary when using multiple threads. All sequences are converted to upper case before alignment. Lower case letters indicate disagreement in the alignment.
--uchimeout filename
Write chimera detection results to filename using the uchime tab-separated format of 18 fields (see the list below). Use --uchimeout5 to use a format compatible with usearch v5 and earlier versions. Rows output order may vary when using multiple threads.
step].
score: higher score means a more likely chimeric alignment.
step].
Q: query sequence label.
step].
A: parent A sequence label.
step].
B: parent B sequence label.
step].
T: top parent sequence label (i.e. parent most similar to the query). That field is removed when using --uchimeout5.
step].
idQM: percentage of similarity of query (Q) and model (M) constructed as a part of parent A and a part of parent B.
step].
idQA: percentage of similarity of query (Q) and parent A.
step].
idQB: percentage of similarity of query (Q) and parent B.
step].
idAB: percentage of similarity of parent A and parent B.
step].
idQT: percentage of similarity of query (Q) and top parent (T).
step].
LY: yes votes in the left part of the model.
step].
LN: no votes in the left part of the model.
step].
LA: abstain votes in the left part of the model.
step].
RY: yes votes in the right part of the model.
step].
RN: no votes in the right part of the model.
step].
RA: abstain votes in the right part of the model.
step].
div: divergence, defined as (idQM - idQT).
step].
YN: query is chimeric (Y), or not (N), or is a borderline case (?).
--uchimeout5
When using --uchimeout, write chimera detection results using a tab-separated format of 17 fields (drop the 5th field of --uchimeout), compatible with usearch version 5 and earlier versions.
--xn real
No vote weight (parameter beta in the scoring function) (default value is 8.0).
--xsize
Strip abundance information from the headers when writing the output file.

Clustering options:

vsearch implements a single-pass, greedy star-clustering algorithm, similar to the algorithms implemented in usearch, DNAclust and sumaclust for example. Important parameters are the global clustering threshold (--id) and the pairwise identity definition (--iddef).

Input sequences are masked as specified with the --qmask and --hardmask options.

--centroids filename
Output cluster centroid sequences to filename, in fasta format. The centroid is the sequence that seeded the cluster (i.e. the first sequence of the cluster).
--clusterout_id
Add cluster identifier information to the output files when using the --consout and --profile options.
--clusterout_sort
Sort output files by decreasing abundance when using the --consout, --msaout and --profile options.
--cluster_fast filename
Clusterize the fasta sequences in filename, automatically perform a sorting by decreasing sequence length beforehand.
--cluster_size filename
Clusterize the fasta sequences in filename, automatically perform a sorting by decreasing sequence abundance beforehand.
--cluster_smallmem filename
Clusterize the fasta sequences in filename without automatically modifying their order beforehand. Sequence are expected to be sorted by decreasing sequence length, unless --usersort is used.
--clusters string
Output each cluster to a separate fasta file using the prefix string and a ticker (0, 1, 2, etc.) to construct the path and filenames.
--consout filename
Output cluster consensus sequences to filename. For each cluster, a multiple alignment is computed, and a consensus sequence is constructed by taking the majority symbol (nucleotide or gap) from each column of the alignment. Columns containing a majority of gaps are skipped, except for terminal gaps.
--cons_truncate
This command is ignored. A warning is issued.
--id real
Do not add the target to the cluster if the pairwise identity with the centroid is lower than real (value ranging from 0.0 to 1.0 included). The pairwise identity is defined as the number of (matching columns) / (alignment length - terminal gaps). That definition can be modified by --iddef.
--iddef~0|1|2|3|4
Change the pairwise identity definition used in --id. Values accepted are:
step].
CD-HIT definition: (matching columns) / (shortest sequence length).
step].
edit distance: (matching columns) / (alignment length).
step].
edit distance excluding terminal gaps (same as --id).
step].
Marine Biological Lab definition counting each extended gap (internal or terminal) as a single difference: 1.0 - [(mismatches + gaps)/(longest sequence length)]
step].
BLAST definition, equivalent to --iddef 2 in a context of global pairwise alignment.
--msaout filename
Output a multiple sequence alignment and a consensus sequence for each cluster to filename, in fasta format. The consensus sequence is constructed by taking the majority symbol (nucleotide or gap) from each column of the alignment. Columns containing a majority of gaps are skipped, except for terminal gaps.
--profile filename
Output a sequence profile to a text file with the frequency of each nucleotide in each position in the multiple alignment for each cluster. There is a FASTA-like header line for each cluster, followed by the profile information in a tab-separated format. The columns are: position (1-based), consensus nucleotide, number of A's, number of C's, number of G's, number of Ts or Us, and finally the number of gaps. If ambiguous nucleotide symbols are present, the numbers may be floating point numbers, otherwise they are integers. For instance, an 'R' will count 0.5 towards an A and 0.5 towards a G.
--qmask~none|dust|soft
Mask regions in sequences using the dust or the soft methods, or do not mask (none). Warning, when using soft masking, clustering becomes case sensitive. The default is to mask using dust.
--relabel string
Relabel sequence identifiers in the output files produced by --consout, --profile and --centroids options. Please see the description of the same option under Chimera detection for details.
--relabel_keep
When relabelling, keep the old identifier in the header after a space.
--relabel_md5
Relabel sequence identifiers in the output files produced by --consout, --profile and --centroids options. Please see the description of the same option under Chimera detection for details.
--relabel_sha1
Relabel sequence identifiers in the output files produced by --consout, --profile and --centroids options. Please see the description of the same option under Chimera detection for details.
--sizein
Take into account the abundance annotations present in the input fasta file (search for the pattern "[>;]size=integer[;]" in sequence headers).
--sizeorder
When an amplicon is close to 2 or more centroids, both within the distance specified with the --id option, resolve the ambiguity by clustering it with the centroid having the highest abundance, not necessarily the closest one. The option only has effect when the value specified with --maxaccepts is higher than one. The --sizeorder option turns on what is sometimes referred to as abundance-based greedy clustering (AGC), in contrast to the default distance-based greedy clustering (DGC).
--sizeout
Add abundance annotations to the output fasta files (add the pattern ";size=integer;" to sequence headers). If --sizein is specified, abundance annotations are reported to output files, and each cluster centroid receives a new abundance value corresponding to the total abundance of the amplicons included in the cluster (--centroids option). If --sizein is not specified, input abundances are set to 1 for amplicons, and to the number of amplicons per cluster for centroids.
--strand~plus|both
When comparing sequences with the cluster seed, check the plus strand only (default) or check both strands.
--uc filename
Output clustering results in filename using a uclust-like format. For a description of the format, see <http://www.drive5.com/usearch/manual/ucout.html>.
--usersort
When using --cluster_smallmem, allow any sequence input order, not just a decreasing length ordering.
--xsize
Strip abundance information from the headers when writing the output file.
Most searching options as well as score filtering, gap penalties and masking also apply to clustering (see the Searching section):

--alnout, --blast6out, --fastapairs, --matched, --notmatched, --maxaccept, --maxreject, --samout, --userout, --userfields

Dereplication and rereplication options:

--derep_fulllength filename
Merge strictly identical sequences contained in filename. Identical sequences are defined as having the same length and the same string of nucleotides (case insensitive, T and U are considered the same).
--derep_prefix filename
Merge sequences with identical prefixes contained in filename. A short sequence identical to an initial segment (prefix) of another sequence is considered a replicate of the longer sequence. If a sequence is identical to the prefix of two or more longer sequences it is undefined which of the longer sequences it will be considered a replicate of. This has consequences regarding the total abundance reported with --sizeout. When considering whether two sequence are identical, the comparison is case insensitive, and T and U are considered identical.
--maxuniquesize~positive integer
Discard sequences with an abundance value greater than integer.
--minuniquesize~positive integer
Discard sequences with an abundance value smaller than integer.
--output filename
Write the dereplicated sequences to filename, in fasta format and sorted by decreasing abundance. Identical sequences receive the header of the first sequence of their group. If --sizeout is used, the number of occurrences (i.e. abundance) of each sequence is indicated at the end of their fasta header using the pattern ";size=integer;".
--relabel string
Please see the description of the same option under Chimera detection for details.
--relabel_keep
When relabelling, keep the old identifier in the header after a space.
--relabel_md5
Please see the description of the same option under Chimera detection for details.
--relabel_sha1
Please see the description of the same option under Chimera detection for details.
--rereplicate filename
Duplicate each sequence the number of times indicated by the abundance of each sequence in the specified file. The sequence labels will be identical for the same sequence, unless --relabel, --relabel_sha1 or --relabel_md5 is used to create unique labels. Output will be written to the file specified with the --output option, in FASTA format. The output file will not contain abundance information unless --sizeout is specified, in which case an abundance of 1 is used.
--sizein
Take into account the abundance annotations present in the input fasta file (search for the pattern "[>;]size=integer[;]" in sequence headers).
--sizeout
Add abundance annotations to the output fasta file (add the pattern ";size=integer;" to sequence headers). If --sizein is specified, each unique sequence receives a new abundance value corresponding to its total abundance (sum of the abundances of its occurrences). If --sizein is not specified, input abundances are set to 1, and each unique sequence receives a new abundance value corresponding to its number of occurrences in the input file.
--strand~plus|both
When searching for strictly identical sequences, check the plus strand only (default) or check both strands.
--topn~positive integer
Output only the top integer sequences (i.e. the most abundant).
--uc filename
Output dereplication results in filename using a uclust-like format. For a description of the format, see <http://www.drive5.com/usearch/manual/ucout.html>. In the context of dereplication, the option --uc_allhits has no effect on the --uc output.
--xsize
Strip abundance information from the headers when writing the output file.

FASTA/FASTQ file processing options:

Analyse, shorten, filter, convert or merge sequences in FASTQ files, or reverse complement sequences in FASTA or FASTQ files. The --fastq_chars command can be used to analyse FASTQ files to identify the type of FASTQ file and the range of quality score values used. To convert between different FASTQ file variants, use the --fastq_convert command. Statistical analysis of the quality and length of the sequences in a FASTQ file may be performed with the --fastq_stats and --fastq_eestats commands. Sequences may be shortened, filtered and converted by the --fastq_filter command. Paired-end reads can be merged using the --fastq_mergepairs command. Finally, the --fastx_revcomp command will reverse complement sequences.

--eeout
For --fastq_filter or --fastq_mergepairs, include the number of expected errors (ee) in the sequence header of FASTQ and FASTA files. This option is a synonym of the --fastq_eeout option.
--eetabbedout filename
When specified with the --fastq_mergepairs command, write statistics with expected errors of each merged read to the given file. The file is a tab separated file with four columns: The number of errors expected in the forward read, the number of expected errors in the reverse read, the number of observed errors in the forward read, and the number of observed errors in the reverse read. The observed number of errors are the number of differences in the overlap region of the merged sequence relative to each of the reads in the pair.
--fastaout filename
Write to the given FASTA-formatted file the sequences that passes the filter of the --fastq_filter command, or the merged sequences from the --fastq_mergepairs command.
--fastaout_notmerged_fwd filename
For --fastq_mergepairs, write forward reads not merged to the specified FASTA file.
--fastaout_notmerged_rev filename
For --fastq_mergepairs, write reverse reads not merged to the specified FASTA file.
--fastaout_discarded filename
Write sequences that does not pass the filter of the --fastq_filter command to the given FASTA-formatted file.
--fastq_allowmergestagger
Allow the --fastq_mergepairs command to merge staggered read pairs. Staggered pairs are pairs where the 3' end of the reverse read has an overhang to the left of the 5' end of the forward read. This situation can occur when a very short fragment is sequenced. The 3' overhang of the reverse read is not included in the merged sequence. The opposite option is the --fastq_nostagger option. The default is to discard staggered pairs.
--fastq_ascii~positive integer
The ASCII character number used as the basis for the FASTQ quality score. The default is 33, which is used by the Sanger / Illumina 1.8+ FASTQ format (phred+33). The value 64 is used by the Solexa, Illumina 1.3+ and Illumina 1.5+ format (phred+64).
--fastq_asciiout~positive integer
The ASCII character number used as the basis for the FASTQ quality score when writing FASTQ output files. The default is 33. Applies only to --fastq_convert.
--fastq_chars filename
Try to automatically detect the type of FASTQ file given (Solexa, Illumina 1.3+, Illumina 1.5+ or Illumina 1.8+/Sanger) by analysing the range of quality score values used. Summarize the composition of sequence and quality strings contained in the input FASTQ file. For each of the four DNA letters, --fastq_chars gives the number of occurrences of the letter, its relative frequency and the length of the longest run of that letter. For each character present in the quality strings, --fastq_chars gives the ASCII value of the character, its relative frequency, and the number of times a k-mer of that character appears at the end of quality strings. The length of the k-mer can be set using --fastq_tail (4 by default). The command will suggest values for the --fastq_ascii, --fastq_qmin and --fastq_qmax options to be used with the other commands that require a FASTQ input file.
--fastq_convert filename
Convert between the different variants of the FASTQ file format. The type of input file must be specified with the --fastq_ascii option (either 33 or 64, the default is 33), and the type of output file must be specified with the --fastq_asciiout option (default 33). The mimimum and maximum output quality scores may be limited using the --fastq_qminout and --fastq_qmaxout options. The output file is specified with the --fastqout option.
--fastq_eeout
For --fastq_filter or --fastq_mergepairs, include the number of expected errors (ee) in the sequence header of FASTQ and FASTA files. This option is a synonym of the --eeout option.
--fastq_eestats filename
Analyse a FASTQ file and report statistics on the sequence lengths, distribution of quality scores, error probabilities and expected accumulated errors. The output is a file of tab-separated values with one line for each position. The values included are the 1-based position, number of sequences that includes the position, percentage of sequences that include the position, followed by columns that includes information about the distribution of quality scores in each position, error probabilities in each position, and finally the expected number of accumulated errors from the beginning of the sequence and until the current position. For each of these distributions, the following statistics are included: minimum value, lower quartile, median, mean, upper quartile, and maximum value. The type of FASTQ file may be specified with --fastq_ascii --fastq_qmin and --fastq_qmax. The output is written to the output file specified with the --output option.
--fastq_filter filename
Shorten and/or filter the sequences in the given FASTQ file and output the remaining sequences to the FASTQ file specified with the --fastqout option and, after conversion, to the FASTA file specified with the --fastaout option. The discarded sequences will be written to the files specified with the --fastaout_discarded and --fastqout_discarded options. Sequences may be shortened using the options --fastq_stripleft, --fastq_trunclen, and --fastq_truncqual. The sequences may be filtered using the options --fastq_maxee, --fastq_maxee_rate, --fastq_maxns, --fastq_minlen and --fastq_trunclen. If shortening results in an empty sequence, it will be discarded. The sequences are first shortened and then filtered based on the remaining bases. If no shortening or filtering options are givem, all sequences will be written to the output files, possibly after conversion from FASTQ to FASTA format. The --relabel option may be used to relabel the output sequences. The --eeout may be used to output the expected number of errors in each sequence.
--fastq_maxdiffs~positive integer
Specify the maximum number of non-matching nucleotides allowed in the overlap region with the --fastq_mergepairs command. The default limit is 5.
--fastq_maxee~real
With the --fastq_filter and --fastq_mergepairs commands, discard sequences with more than the specified number of expected errors.
--fastq_maxee_rate~real
With the --fastq_filter command, discard sequences with more than the specified number of expected errors per base.
--fastq_maxmergelen~positive integer
Specify the maximum length of the merged sequence with the --fastq_mergepairs command. By default there is no limit.
--fastq_maxns~positive integer
With the --fastq_filter and --fastq_mergepairs commands, discard sequences with more than the specified number of N's.
--fastq_mergepairs filename
Merge paired-end sequence reads into one sequence. The method has some similarities to the PEAR algorithm (Zhang, Kobert, Flouri & Stamatakis, 2014). The forward reads are specified as the argument to this option and the reverse reads are specified with the --reverse option. The merged sequences are output to the file(s) specified with the --fastaout or --fastqout options. The non-merged reads can be output to the files specified with the --fastaout_notmerged_fwd, --fastaout_notmerged_rev, --fastqout_notmerged_fwd and --fastqout_notmerged_rev options. Statistics may be output to the file specified with the --eetabbedout option. Sequences will be truncated as specified with the --fastq_truncqual option to remove low-quality bases in the 3' end. Sequences shorter than specified with --fastq_minlen (after truncation) will be discarded (1 by default). Sequences with too many ambiguous bases (N's), as specified with the --fastq_maxns will also be discarded (no limit by default). Staggered reads will not be merged unless the --fastq_allowmergestagger option is specified. The minimum length of the overlap region between the reads may be specified with the --minovlen option (default 10), and the overlap region may not include more mismatches than specified with the --maxdiffs option (5 by default), otherwise the read pair will be discarded. The mimimum and maximum length of the merged sequence may be specified with the --fastq_minmergelen and --fastq_maxmergelen options, respectively. Other relevant options are: --fastq_ascii, --fastq_maxee, --fastq_nostagger, --fastq_qmax, --fastq_qmin, and --label_suffix.
--fastq_minlen~positive integer
With the --fastq_filter and --fastq_mergepairs commands, discard sequences with less than the specified number of bases (default 1).
--fastq_minmergelen~positive integer
Specifity the minimum length of the merged sequence with the --fastq_mergepairs command. The default is 1.
--fastq_minovlen~positive integer
Specifify the minimum overlap between the merged reads with the --fastq_mergepairs command. The default is 10.
--fastq_nostagger
Disallow the --fastq_mergepairs command to merge staggered read pairs. This is the default, so this option is ignored. See the --fastq_allowmergestagger option for details.
--fastq_qmax~positive integer
Specify the maximum quality score accepted when reading FASTQ files. The default is 41, which is usual for recent Sanger/Illumina 1.8+ files.
--fastq_qmaxout~positive integer
Specify the maximum quality score used when writing FASTQ files. The default is 41, which is usual for recent Sanger/Illumina 1.8+ files. Older formats may use a maximum quality score of 40. Applies only to --fastq_convert.
--fastq_qmin~positive integer
Specify the minimum quality score accepted for FASTQ files. The default is 0, which is usual for recent Sanger/Illumina 1.8+ files. Older formats may use scores between -5 and 2.
--fastq_qminout~positive integer
Specify the minimum quality score used when writing FASTQ files. The default is 0, which is usual for Sanger/Illumina 1.8+ files. Older versions of the format may use values between -5 and 2. Applies only to --fastq_convert.
--fastq_stats filename
Analyse a FASTQ file and report various statistics on the sequence length and quality score distribution. The type of FASTQ file may be specified with --fastq_ascii --fastq_qmin and --fastq_qmax. The output is written to the log file specified with the --log option.
--fastq_stripleft~positive integer
The specified number of bases on the left are deleted when using the --fastq_filter command.
--fastq_tail~positive integer
For the --fastq_chars command, the length of the sequence tails with the identical quality score to count (default 4).
--fastq_trunclen~positive integer
Truncate sequences to the specified length when using --fastq_filter. Sequences that are shorter will be discarded.
--fastq_truncqual~positive integer
Truncate sequences starting from the first base with the specified base quality score value or lower. Empty sequences will be discarded.
--fastqout filename
Write to the given FASTQ-formatted file the sequences that passes the filter of the --fastq_filter command, or the merged sequences from the --fastq_mergepairs command.
--fastqout_discarded filename
Write sequences that does not pass the filter of the --fastq_filter command to the given FASTQ-formatted file.
--fastqout_notmerged_fwd filename
For --fastq_mergepairs, write forward reads not merged to the specified FASTQ file.
--fastqout_notmerged_rev filename
For --fastq_mergepairs, write reverse reads not merged to the specified FASTQ file.
--fastx_revcomp filename
Reverse-complement the sequences in the given FASTA or FASTQ file to a files specified with the --fastaout and/or --fastqout options. If the input file is in FASTA format, the output can not be written back to a FASTQ file due to missing base quality scores.
--label_suffix~string
Label to add as a suffix to the header in the output from --fastx_revcomp and --fastq_mergepairs.
--relabel_keep
When relabelling, keep the old identifier in the header after a space.
--relabel string
Please see the description of the same option under Chimera detection for details.
--relabel_md5
Please see the description of the same option under Chimera detection for details.
--relabel_sha1
Please see the description of the same option under Chimera detection for details.
--reverse filename
Specify the FASTQ file containing containing the reverse reads for the --fastq_mergepairs command.
--xsize
Strip abundance information from the headers when writing the output file.

Masking options:

An input sequence can be composed of lower- or uppercase letters. When soft masking is specified, lower case letters are treated as symbols that should be masked. Otherwise the case of the input sequences is ignored.

Masking is performed by the commands for chimera detection (uchime_denovo, uchime_ref), clustering (cluster_fast, cluster_smallmem, cluster_size), masking (maskfasta, fastx_mask), pairwise alignment (allpairs_global) and searching (search_exact, usearch_global).

Masking is usually specified with the --qmask option, while the --dbmask option is used for the database sequences specified with the --db option with the --usearch_global, --search_exact and --uchime_ref commands.

The argument to the --qmask and --dbmask option may be none, soft or dust. If the argument is none, the no masking is performed. If the argument is soft the lower case symbols will be masked. Finally, if the argument is dust, the sequence will be masked using the DUST algorithm by Tatusov and Lipman to mask low-complexity regions.

If the --hardmask option is specified, all masked regions will be converted to N's, otherwise masked regions will be indicated by lower case letters.

If any sequence is masked, the masked version of the sequence (with lower case letters or N's) will be used in all output files. Otherwise the sequence will be unmodified. The exception is the sequences in the output file specified with the --uchimealns option, where the input sequences are converted to upper case first and lower case letters indicate disagreement between the aligned sequences.

When a sequence region is masked, words in the region will not be included in the indicies used in the heuristic search algorithm. In all other aspects the region is treated as other regions.

Regions in sequences that are hardmasked (with N's) will have a zero alignment score and do not contribute to an alignment.

Here are the results of combined masking options --qmask (or --dbmask for database sequences) and --hardmask, assuming each input sequence contains both lower and uppercase nucleotides:

qmaskhardmaskaction

noneoffno masking, all symbols used, no change
noneonno masking, all symbols used, no change
dustoffmasked symbols lowercased, rest uppercased
dustonmasked symbols changed to Ns, rest unchanged
softofflowercase symbols masked, no case changes
softonlowercase symbols masked and changed to Ns

--fastaout filename
Write the masked sequences to filename, in fasta format. Applies only to the --fastx_mask command.
--fastqout filename
Write the masked sequences to filename, in fastq format. Applies only to the --fastx_mask command.
--fastx_mask filename
Mask regions in sequences contained in the specified fasta or fastq file. The default is to mask using DUST (use --qmask to modify that behavior). The output files are specified with the --fastaout and --fastqout options. The minimum and maximum percentage of unmasked residues may be specified with the --min_unmasked_pct and --max_unmasked_pct options, respectively.
--hardmask
Symbols in masked regions are replaced by N's. The default is to replace the masked regions by lower case letters.
--maskfasta filename
Mask regions in sequences contained in the fasta file filename. The default is to mask using dust (use --qmask to modify that behavior). The output file is specified with the --output option. This command is depreciated, please use --fastx_mask instead.
--max_unmasked_pct real
Discard sequences with more than the specified maximum percentage of unmasked residues. Works only with --fastx_mask.
--min_unmasked_pct real
Discard sequences with less than the specified minimum percentage of unmasked residues. Works only with --fastx_mask.
--output filename
Write the masked sequences to filename, in fasta format. Applies only to the --mask_fasta command.
--qmask~none|dust|soft
If the argument is dust, mask regions in sequences using the DUST algorithm that detects simple repeats and low-complexity regions. This is the default. If the argument is soft, mask the lower case letters in the input sequence. If the argument is none, do not mask.

Pairwise alignment options:

The results of the n * (n - 1) / 2 pairwise alignments are written to the result files specified with --alnout, --blast6out, --fastapairs --matched, --notmatched, --samout, --uc or --userout (see Searching section below). Specify either the --acceptall option to output all pairwise alignments, or specify an identity level with --id to discard weak alignments. Most other accept/reject options (see Searching options below) may also be used. Sequences are aligned on their plus strand only. Masking is performed as usual and specified with --qmask and --hardmask.

--acceptall
Write the results of all alignments to output files. This option overrides all other accept/reject options (including --id).
--allpairs_global filename
Perform optimal global pairwise alignments of all vs. all fasta sequences contained in filename. This command is multi-threaded.
--id real
Reject the sequence match if the pairwise identity is lower than real (value ranging from 0.0 to 1.0 included).
--threads~positive integer
Number of computation threads to use (1 to 256). The number of threads should be lesser or equal to the number of available CPU cores. The default is to use all available resources and to launch one thread per logical core.

Searching options:

--alnout filename
Write pairwise global alignments to filename using a human-readable format. Use --rowlen to modify alignment length. Output order may vary when using multiple threads.
--blast6out filename
Write search results to filename using a blast-like tab-separated format of twelve fields (listed below), with one line per query-target matching (or lack of matching if --output_no_hits is used). Warning, vsearch uses global pairwise alignments, not blast's seed-and-extend algorithm. Therefore, some common blast output values (alignment start and end, evalue, bit score) are reported differently. Output order may vary when using multiple threads. A similar output can be obtain with --userout filename and --userfields query+target+id+alnlen+mism+opens+qlo+qhi+tlo+thi+evalue+bits. A complete list and description is available in the section "Userfields" of this manual.
step].
query: query label.
step].
target: target (database sequence) label. The field is set to "*" if there is no alignment.
step].
id: percentage of identity (real value ranging from 0.0 to 100.0). The percentage identity is defined as 100 * (matching columns) / (alignment length - terminal gaps). See fields id0 to id4 for other definitions.
step].
alnlen: length of the query-target alignment (number of columns). The field is set to 0 if there is no alignment.
step].
mism: number of mismatches in the alignment (zero or positive integer value).
step].
opens: number of columns containing a gap opening (zero or positive integer value).
step].
qlo: first nucleotide of the query aligned with the target. Always equal to 1 if there is an alignment, 0 otherwise (see qilo to ignore initial gaps).
step].
qhi: last nucleotide of the query aligned with the target. Always equal to the length of the pairwise alignment, 0 otherwise (see qihi to ignore terminal gaps).
step].
tlo: irst nucleotide of the target aligned with the query. Always equal to 1 if there is an alignment, 0 otherwise (see tilo to ignore initial gaps).
step].
thi: last nucleotide of the target aligned with the query. Always equal to the length of the pairwise alignment, 0 otherwise (see tihi to ignore terminal gaps).
step].
evalue: expectancy-value (not computed for nucleotide alignments). Always set to -1.
step].
bits: bit score (not computed for nucleotide alignments). Always set to 0.
--db filename
Compare query sequences (specified with --usearch_global) to the fasta-formatted target sequences contained in filename, using global pairwise alignment.
--dbmask~none|dust|soft
Mask regions in the target database sequences using the dust method or the soft method, or do not mask (none). Warning, when using soft masking search commands become case sensitive. The default is to mask using dust.
--dbmatched filename
Write database target sequences matching at least one query sequence to filename, in fasta format. If the option --sizeout is used, the number of queries that matched each target sequence is indicated using the pattern ";size=integer;".
--dbnotmatched filename
Write database target sequences not matching query sequences to filename, in fasta format.
--fastapairs filename
Write pairwise alignments of query and target sequences to filename, in fasta format.
--fulldp
Dummy option for compatibility with usearch. To maximize search sensitivity, vsearch uses a 8-way 16-bit SIMD vectorized full dynamic programming algorithm (Needleman-Wunsch), whether or not --fulldp is specified.
--gapext string
Set penalties for a gap extension. See --gapopen for a complete description of the penalty declaration system. The default is to initialize the six gap extending penalties using a penalty of 2 for extending internal gaps and a penalty of 1 for extending terminal gaps, in both query and target sequences (i.e. 2I/1E).
--gapopen string
Set penalties for a gap opening. A gap opening can occur in six different contexts: in the query (Q) or in the target (T) sequence, at the left (L) or right (R) extremity of the sequence, or inside the sequence (I). Sequence symbols (Q and T) can be combined with location symbols (L, I, and R), and numerical values to declare penalties for all possible contexts: aQL/bQI/cQR/dTL/eTI/fTR, where abcdef are zero or positive integers, and "/" is used as a separator.
To simplify declarations, the location symbols (L, I, and R) can be combined, the symbol (E) can be used to treat both extremities (L and R) equally, and the symbols Q and T can be omitted to treat query and target sequences equally. For instance, the default is to declare a penalty of 20 for opening internal gaps and a penalty of 2 for opening terminal gaps (left or right), in both query and target sequences (i.e. 20I/2E). If only a numerical value is given, without any sequence or location symbol, then the penalty applies to all gap openings. To forbid gap-opening, an infinite penalty value can be declared with the symbol "*". To use vsearch as a semi-global aligner, a null-penalty can be applied to the left (L) or right (R) gaps.
vsearch always initializes the six gap opening penalties using the default parameters (20I/2E). The user is then free to declare only the values he/she wants to modify. The string is scanned from left to right, accepted symbols are (0123456789/LIREQT*), and later values override previous values.
Please note that vsearch, in contrast to usearch, only allows integer gap penalties. Because the lowest gap penalties are 0.5 by default in usearch, all default scores and gap penalties in vsearch have been doubled to maintain equivalent penalties and to produce identical alignments.
--hardmask
Mask sequence regions by replacing them with Ns instead of setting them to lower case as is the default. For more information, please see the Masking section.
--id real
Reject the sequence match if the pairwise identity is lower than real (value ranging from 0.0 to 1.0 included). The search process sorts target sequences by decreasing number of k-mers they have in common with the query sequence, using that information as a proxy for sequence similarity. That efficient pre-filtering will also prevent pairwise alignments with weakly matching targets, as there needs to be at least 6 shared k-mers to start the pairwise alignment, and at least one out of every 16 k-mers from the query needs to match the target. Consequently, using values lower than --id 0.5 is not likely to capture more weakly matching targets. The pairwise identity is by default defined as the number of (matching columns) / (alignment length - terminal gaps). That definition can be modified by --iddef.
--iddef~0|1|2|3|4
Change the pairwise identity definition used in --id. Values accepted are:
step].
CD-HIT definition: (matching columns) / (shortest sequence length).
step].
edit distance: (matching columns) / (alignment length).
step].
edit distance excluding terminal gaps (same as --id).
step].
Marine Biological Lab definition counting each extended gap (internal or terminal) as a single difference: 1.0 - [(mismatches + gaps)/(longest sequence length)]
step].
BLAST definition, equivalent to --iddef 2 in a context of global pairwise alignment.

The option --userfields accepts the fields id0 to id4, in addition to the field id, to report the pairwise identity values corresponding to the different definitions.

--idprefix~positive integer
Reject the sequence match if the first integer nucleotides of the target do not match the query.
--idsuffix~positive integer
Reject the sequence match if the last integer nucleotides of the target do not match the query.
--leftjust
Reject the sequence match if the pairwise alignment begins with gaps.
--match~integer
Score assigned to a match (i.e. identical nucleotides) in the pairwise alignment. The default value is 2.
--matched filename
Write query sequences matching database target sequences to filename, in fasta format.
--maxaccepts~positive integer
Maximum number of hits to accept before stopping the search. The default value is 1. This option works in pair with --maxrejects. The search process sorts target sequences by decreasing number of k-mers they have in common with the query sequence, using that information as a proxy for sequence similarity. After pairwise alignments, if the first target sequence passes the acceptation criteria, it is accepted as best hit and the search process stops for that query. If --maxaccepts is set to a higher value, more hits are accepted. If --maxaccepts and --maxrejects are both set to 0, the complete database is searched.
--maxdiffs~positive integer
Reject the sequence match if the alignment contains at least integer substitutions, insertions or deletions.
--maxgaps~positive integer
Reject the sequence match if the alignment contains at least integer insertions or deletions.
--maxhits~positive integer
Maximum number of hits to show once the search is terminated (hits are sorted by decreasing identity). Unlimited by default. That option applies to --alnout, --blast6out, --fastapairs, --samout, --uc, or --userout output files.
--maxid real
Reject the sequence match if the percentage of identity between the two sequences is greater than real.
--maxqsize~positive integer
Reject query sequences with an abundance greater than integer.
--maxqt real
Reject if the query/target sequence length ratio is greater than real.
--maxrejects~positive integer
Maximum number of non-matching target sequences to consider before stopping the search. The default value is 32. This option works in pair with --maxaccepts. The search process sorts target sequences by decreasing number of k-mers they have in common with the query sequence, using that information as a proxy for sequence similarity. After pairwise alignments, if none of the first 32 examined target sequences pass the acceptation criteria, the search process stops for that query (no hit). If --maxrejects is set to a higher value, more target sequences are considered. If --maxaccepts and --maxrejects are both set to 0, the complete database is searched.
--maxsizeratio real
Reject if the query/target abundance ratio is greater than real.
--maxsl real
Reject if the shorter/longer sequence length ratio is greater than real.
--maxsubs~positive integer
Reject the sequence match if the pairwise alignment contains more than integer substitutions.
--mid real
Reject the sequence match if the percentage of identity is lower than real (ignoring all gaps, internal and terminal).
--mincols~positive integer
Reject the sequence match if the alignment length is shorter than integer.
--minqt real
Reject if the query/target sequence length ratio is lower than real.
--minsizeratio real
Reject if the query/target abundance ratio is lower than real.
--minsl real
Reject if the shorter/longer sequence length ratio is lower than real.
--mintsize~positive integer
Reject target sequences with an abundance lower than integer.
--minwordmatches~non-negative integer
Minimum number of word matches required for a sequence to be considered further. Default value is 10 for the default word length 8. For word lengths 7-15, the default minimum word matches is 14, 10, 9, 8, 6, 5, 4, 3 and 2, respectively. If the query sequence has fewer unique words than the number specified, all words must match.
--mismatch~integer
Score assigned to a mismatch (i.e. different nucleotides) in the pairwise alignment. The default value is -4.
--notmatched filename
Write query sequences not matching database target sequences to filename, in fasta format.
--output_no_hits
Write both matching and non-matching queries to --alnout, --blast6out, --samout or --userout output files (--uc and --uc_allhits output files always feature non-matching queries). Non-matching queries are labelled "No hits" in --alnout files.
--pattern string
This option is ignored. It is provided for compatibility with usearch.
--qmask~none|dust|soft
Mask regions in the query sequences using the dust or the soft algorithms, or do not mask (none). Warning, when using soft masking search commands become case sensitive. The default is to mask using dust.
--query_cov real
Reject if the fraction of the query aligned to the target sequence is lower than real. The query coverage is computed as (matches + mismatches) / query sequence length. Internal or terminal gaps are not taken into account.
--rightjust
Reject the sequence match if the pairwise alignment ends with gaps.
--rowlen~positive integer
Width of alignment lines in --alnout output. The default value is 64. Set to 0 to eliminate wrapping.
--samheader
Include header lines to the sam file when --samout is specified. The header will include @HD, @SQ and @PG lines, but no read group (@RG) information. By default no header lines are written.
--samout filename
Write alignment results to filename in the SAM format. For a description of the format, see <https://github.com/samtools/hts-specs>. Output order may vary when using multiple threads.
--search_exact filename
Search for exact full-length matches to the query sequences contained in filename in the database of target sequences (--db). Only 100% exact matches are reported and this command is much faster than --usearch_global. The --id, --maxaccepts and --maxrejects options are ignored, but the rest of the searching options may be specified.
--self
Reject the sequence match if the query and target labels are identical.
--selfid
Reject the sequence match if the query and target sequences are strictly identical.
--sizeout
Add abundance annotations to the output of the option --dbmatched (using the pattern ";size=integer;"), to report the number of queries that matched each target.
--strand~plus|both
When searching for similar sequences, check the plus strand only (default) or check both strands.
--target_cov real
Reject the sequence match if the fraction of the target sequence aligned to the query sequence is lower than real. The target coverage is computed as (matches + mismatches) / target sequence length. Internal or terminal gaps are not taken into account.
--top_hits_only
Output only the hits with the highest percentage of identity with the query.
--uc filename
Output searching results in filename using a uclust-like format. For a description of the format, see <http://www.drive5.com/usearch/manual/ucout.html>. Output order may vary when using multiple threads.
--uc_allhits
When using the --uc option, show all hits, not just the top hit for each query.
--usearch_global filename
Compare target sequences (--db) to the fasta-formatted query sequences contained in filename, using global pairwise alignment.
--userfields string
When using --userout, select and order the fields written to the output file. Fields are separated by "+" (e.g. query+target+id). See the "Userfields" section for a complete list of fields.
--userout filename
Write user-defined tab-separated output to filename. Select the fields with the option --userfields. Output order may vary when using multiple threads. If --userfields is empty or not present, filename is empty.
--weak_id real
Show hits with percentage of identity of at least real, without terminating the search. A normal search stops as soon as enough hits are found (as defined by --maxaccepts, --maxrejects, and --id). As --weak_id reports weak hits that are not deduced from --maxaccepts, high --id values can be used, hence preserving both speed and sensitivity. Logically, real must be smaller than the value indicated by --id.
--wordlength~positive integer
Length of words (i.e. k-mers) for database indexing. The range of possible values goes from 7 to 15, but values near 8 or 9 are generally recommended. Longer words may reduce the sensitivity/recall for weak similarities, but can increase precision. On the other hand, shorter words may increase sensitivity or recall, but may reduce precision. Computation time will generally increase with shorter words and decrease with longer words, but will increase again for very long words. Memory requirements for a part of the index increase with a factor of 4 each time word length increases by one nucleotide, and this generally becomes significant for long words (12 or more). The default value is 8.

Shuffling options:

--output filename
Write the shuffled sequences to filename, in fasta format.
--randseed~positive integer
When shuffling sequence order, use integer as seed. A given seed will always produce the same output order (useful for replicability). Set to 0 to use a pseudo-random seed (default behavior).
--shuffle filename
Pseudo-randomly shuffle the order of sequences contained in filename.
--topn~positive integer
Output only the top integer sequences.
--xsize
Strip abundance information from the headers when writing the output file.

Sorting options:

Fasta entries are sorted by decreasing abundance (--sortbysize) or sequence length (--sortbylength). To obtain a stable sorting order, ties are sorted by decreasing abundance and label increasing alpha-numerical order (--sortbylength), or just by label increasing alpha-numerical order (--sortbysize). Label sorting assumes that all sequences have unique labels. The same applies to the automatic sorting performed during chimera checking (--uchime_denovo), dereplication (--derep_fulllength), and clustering (--cluster_fast and --cluster_size).

--maxsize~positive integer
When using --sortbysize, discard sequences with an abundance value greater than integer.
--minsize~positive integer
When using --sortbysize, discard sequences with an abundance value smaller than integer.
--output filename
Write the sorted sequences to filename, in fasta format.
--relabel string
Please see the description of the same option under Chimera detection for details.
--relabel_keep
When relabelling, keep the old identifier in the header after a space.
--relabel_md5
Please see the description of the same option under Chimera detection for details.
--relabel_sha1
Please see the description of the same option under Chimera detection for details.
--sizeout
When using --relabel, report abundance annotations to the output fasta file (using the pattern ";size=integer;").
--sortbylength filename
Sort by decreasing length the sequences contained in filename. See the general options --minseqlength and --maxseqlength to eliminate short and long sequences.
--sortbysize filename
Sort by decreasing abundance the sequences contained in filename (the pattern "[>;]size=integer[;]" has to be present). See the options --minsize and --maxsize to eliminate rare and dominant sequences.
--topn~positive integer
Output only the top integer sequences (i.e. the longest or the most abundant).
--xsize
Strip abundance information from the headers when writing the output file.

Subsampling options:

Subsampling will randomly extract a certain number or a certain percentage of the sequences in the input file. If the --sizein option is in effect, the abundances of the input sequences will be taken into account and the sampling will be performed from the input sequences as if they had not be dereplicated. The extraction is performed as a random sampling with a uniform distribution among the input sequences and is performed without replacement. The input file is specified with --fastx_subsample option, the output file is specified with the --fastaout option and the amount of sequences to be sampled is specified with the --sample_pct or --sample_size options.

--fastaout filename
Write the sampled sequences to filename, in fasta format.
--fastx_subsample filename
Perform subsampling from the sequences in the specified input file that is in FASTA format.
--randseed~positive integer
Use integer as a seed for the pseudo-random generator. A given seed will always produce the same output, which is useful for replicability. Set to 0 to use a pseudo-random seed (default behavior).
--sample_pct~real
Subsample the given percentage of the input sequences.
--sample_size~positive integer
Extract the given number of sequences.
--sizein
Take the abundance information of the input file into account, otherwise the abundance of each sequence is considered to be 1.
--sizeout
Write abundance information to the output file.
--xsize
Strip abundance information from the headers when writing the output file.

Userfields (fields accepted by the --userfields option):

aln
Print a string of M (match), D (delete, i.e. a gap in the query) and I (insert, i.e. a gap in the target) representing the pairwise alignment. Empty field if there is no alignment.
alnlen
Print the length of the query-target alignment (number of columns). The field is set to 0 if there is no alignment.
bits
Bit score (not computed for nucleotide alignments). Always set to 0.
caln
Compact representation of the pairwise alignment using the CIGAR format (Compact Idiosyncratic Gapped Alignment Report): M (match), D (deletion) and I (insertion). Empty field if there is no alignment.
evalue
E-value (not computed for nucleotide alignments). Always set to -1.
exts
Number of columns containing a gap extension (zero or positive integer value).
gaps
Number of columns containing a gap (zero or positive integer value).
id
Percentage of identity (real value ranging from 0.0 to 100.0). The percentage identity is defined as 100 * (matching columns) / (alignment length - terminal gaps).
id0
CD-HIT definition of the percentage of identity (real value ranging from 0.0 to 100.0) using the length of the shortest sequence in the pairwise alignment as denominator: 100 * (matching columns) / (shortest sequence length).
id1
The percentage of identity (real value ranging from 0.0 to 100.0) is defined as the edit distance: 100 * (matching columns) / (alignment length).
id2
The percentage of identity (real value ranging from 0.0 to 100.0) is defined as the edit distance, excluding terminal gaps. The field id2 is an alias for the field id.
id3
Marine Biological Lab definition of the percentage of identity (real value ranging from 0.0 to 100.0), counting each extended gap (internal or terminal) as a single difference and using the length of the longest sequence in the pairwise alignment as denominator: 100 * (1.0 - [(mismatches + gaps) / (longest sequence length)]).
id4
BLAST definition of the percentage of identity (real value ranging from 0.0 to 100.0), equivalent to --iddef 2 in a context of global pairwise alignment.
ids
Number of matches in the alignment (zero or positive integer value).
mism
Number of mismatches in the alignment (zero or positive integer value).
opens
Number of columns containing a gap opening (zero or positive integer value).
pairs
Number of columns containing only nucleotides. That value corresponds to the length of the alignment minus the gap-containing columns (zero or positive integer value).
pctgaps
Number of columns containing gaps expressed as a percentage of the alignment length (real value ranging from 0.0 to 100.0).
pctpv
Percentage of positive columns. When working with nucleotide sequences, this is equivalent to the percentage of matches (real value ranging from 0.0 to 100.0).
pv
Number of positive columns. When working with nucleotide sequences, this is equivalent to the number of matches (zero or positive integer value).
qcov
Fraction of the query sequence that is aligned with the target sequence (real value ranging from 0.0 to 100.0). The query coverage is computed as 100.0 * (matches + mismatches) / query sequence length. Internal or terminal gaps are not taken into account. The field is set to 0.0 if there is no alignment.
qframe
Query frame (-3 to +3). That field only concerns coding sequences and is not computed by vsearch. Always set to +0.
qhi
Last nucleotide of the query aligned with the target. Always equal to the length of the pairwise alignment, 0 otherwise (see qihi to ignore terminal gaps).
qihi
Last nucleotide of the query aligned with the target (ignoring terminal gaps). Nucleotide numbering starts from 1. The field is set to 0 if there is no alignment.
qilo
First nucleotide of the query aligned with the target (ignoring initial gaps). Nucleotide numbering starts from 1. The field is set to 0 if there is no alignment.
ql
Query sequence length (positive integer value). The field is set to 0 if there is no alignment.
qlo
First nucleotide of the query aligned with the target. Always equal to 1 if there is an alignment, 0 otherwise (see qilo to ignore initial gaps).
qrow
Print the sequence of the query segment as seen in the pairwise alignment (i.e. with gap insertions if need be). Empty field if there is no alignment.
qs
Query segment length. Always equal to query sequence length.
qstrand
Query strand orientation (+ or - for nucleotide sequences). Empty field if there is no alignment.
query
Query label.
raw
Raw alignment score (negative, null or positive integer value). The score is the sum of match rewards minus mismatch penalties, gap openings and gap extensions. The field is set to 0 if there is no alignment.
target
Target label. The field is set to "*" if there is no alignment.
tcov
Fraction of the target sequence that is aligned with the query sequence (real value ranging from 0.0 to 100.0). The target coverage is computed as 100.0 * (matches + mismatches) / target sequence length. Internal or terminal gaps are not taken into account. The field is set to 0.0 if there is no alignment.
tframe
Target frame (-3 to +3). That field only concerns coding sequences and is not computed by vsearch. Always set to +0.
thi
Last nucleotide of the target aligned with the query. Always equal to the length of the pairwise alignment, 0 otherwise (see tihi to ignore terminal gaps).
tihi
Last nucleotide of the target aligned with the query (ignoring terminal gaps). Nucleotide numbering starts from 1. The field is set to 0 if there is no alignment.
tilo
First nucleotide of the target aligned with the query (ignoring initial gaps). Nucleotide numbering starts from 1. The field is set to 0 if there is no alignment.
tl
Target sequence length (positive integer value). The field is set to 0 if there is no alignment.
tlo
First nucleotide of the target aligned with the query. Always equal to 1 if there is an alignment, 0 otherwise (see tilo to ignore initial gaps).
trow
Print the sequence of the target segment as seen in the pairwise alignment (i.e. with gap insertions if need be). Empty field if there is no alignment.
ts
Target segment length. Always equal to target sequence length. The field is set to 0 if there is no alignment.
tstrand
Target strand orientation (+ or - for nucleotide sequences). Always set to "+", so reverse strand matches have tstrand "+" and qstrand "-". Empty field if there is no alignment.

DELIBERATE CHANGES

If you are a usearch user, our objective is to make you feel at home. That's why 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, to document here the deliberate changes we made.

During a search with usearch, when using the options --blast6out and --output_no_hits, for queries with no match the number of fields reported is 13, where it should be 12. This is corrected in vsearch.

The field raw of the --userfields option is not informative in usearch. This is corrected in vsearch.

The fields qlo, qhi, tlo, thi now have counterparts (qilo, qihi, tilo, tihi) reporting alignment coordinates ignoring terminal gaps.

In usearch, when using the option --output_no_hits, queries that receive no match are reported in blast6out file, but not in the alignment output file. This is corrected in vsearch.

vsearch introduces a new --cluster_size command that sorts sequences by decreasing abundance before clustering.

vsearch reintroduces --iddef alternative pairwise identity definitions that were removed from usearch.

vsearch extends the --topn option to sorting commands.

vsearch extends the --sizein option to dereplication (--derep_fulllength) and clustering (--cluster_fast).

vsearch treats T and U as identical nucleotides during dereplication.

vsearch sorting is stabilized by using sequence abundances or sequences labels as secondary or tertiary keys.

vsearch by default uses the DUST algorithm for masking low-complexity regions. Masking behavior is also slightly changed to be more consistent.

NOVELTIES

vsearch introduces new options not present in usearch 7. They are described in the "Options" section of this manual. Here is a short list:
-
alignwidth (chimera checking)
-
borderline (chimera checking)
-
cluster_size (clustering)
-
clusterout_id (clustering)
-
clusterout_sort (clustering)
-
fasta_width (general option)
-
iddef (clustering, pairwise alignment, searching)
-
maxuniquesize (dereplication)
-
profile (clustering)
-
relabel_md5
-
relabel_sha1
-
shuffle (shuffling)

EXAMPLES

Align all sequences in a database with each other and output all pairwise alignments:

vsearch --allpairs_global database.fas --alnout results.aln --acceptall

Check for the presence of chimeras (de novo); parents should be at least 1.5 times more abundant than chimeras. Output non-chimeric sequences in fasta format (no wrapping):

vsearch --uchime_denovo queries.fas --nonchimeras results.fas --fasta_width 0 --abskew 1.5

Cluster with a 97% similarity threshold, collect cluster centroids, and write cluster descriptions using a uclust-like format:

vsearch --cluster_fast queries.fas --id 0.97 --centroids centroids.fas --uc clusters.uc

Dereplicate the sequences contained in queries.fas, take into account the abundance information already present, write unwrapped sequences to output with the new abundance information, discard all sequences with an abundance of 1:

vsearch --derep_fulllength queries.fas --output queries_masked.fas --sizein --sizeout --fasta_width 0 --minuniquesize 2

Mask simple repeats and low complexity regions in the input fasta file (masked regions are lowercased), and write the results to the output file:

vsearch --maskfasta queries.fas --output queries_masked.fas --qmask dust

Search queries in a reference database, with a 80%-similarity threshold, take terminal gaps into account when calculating pairwise similarities:

vsearch --usearch_global queries.fas --db references.fas --alnout results.aln --id 0.8 --iddef 1

Search a sequence dataset against itself (ignore self hits), get all matches with at least 60% identity, and collect results in a blast-like tab-separated format:

vsearch --usearch_global queries.fas --db queries.fas --id 0.6 --self --blast6out results.blast6 --maxaccepts 0 --maxrejects 0

Shuffle the input fasta file (change the order of sequences) in a repeatable fashion (fixed seed), and write unwrapped fasta sequences to the output file:

vsearch --shuffle queries.fas --output queries_shuffled.fas --randseed 13 --fasta_width 0

Sort by decreasing abundance the sequences contained in queries.fas (using the "size=integer" information), relabel the sequences while preserving the abundance information (with --sizeout), keep only sequences with an abundance equal to or greater than 2:

vsearch --sortbysize queries.fas --output queries_sorted.fas --relabel sampleA_ --sizeout --minsize 2

AUTHORS

Implementation by Torbjørn Rognes and Tomás Flouri, documentation by Frédéric Mahé.

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 <[email protected]>.

AVAILABILITY

Source code and binaries are available at <https://github.com/torognes/vsearch>.

COPYRIGHT

Copyright (C) 2014-2016, Torbjørn Rognes, Frédéric Mahé and Tomás Flouri

All rights reserved.

Contact: Torbjørn Rognes <[email protected]>, 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.

vsearch includes code from several other projects. We thank the authors 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 includes statistical data from PEAR <https://github.com/xflouris/PEAR> by Zhang, Kobert, Flouri and Stamatakis. Used with permission.

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.

VERSION HISTORY

New features and important modifications of vsearch (short lived or minor bug releases may not be mentioned):
v1.0.0~released November 28th, 2014
First public release.
v1.0.1~released December 1st, 2014
Bug fixes (sortbysize, semicolon after size annotation in headers) and minor changes (labels as secondary sort key for most sorts, treat T and U as identical for dereplication, only output size in dbmatched file if sizeout specified).
v1.0.2~released December 6th, 2014
Bug fixes (ssse3/sse4.1 requirement, memory leak).
v1.0.3~released December 6th, 2014
Bug fix (now writes help to stdout instead of stderr).
v1.0.4~released December 8th, 2014
Added --allpairs_global option. Reduced memory requirements slightly. Removed memory leaks.
v1.0.5~released December 9th, 2014
Fixes a minor bug with --allpairs_global and --acceptall options.
v1.0.6~released December 14th, 2014
Fixes a memory allocation bug in chimera detection (--uchime_ref option).
v1.0.7~released December 19th, 2014
Fixes a bug in the output from chimera detection with the --uchimeout option.
v1.0.8~released January 22nd, 2015
Introduces several changes and bug fixes:
-
a new linear memory aligner for alignment of sequences longer than 5,000 nucleotides,
-
a new --cluster_size command that sorts sequences by decreasing abundance before clustering,
-
meaning of userfields qlo, qhi, tlo, thi changed for compatibility with usearch,
-
new userfields qilo, qihi, tilo, tihi gives alignment coordinates ignoring terminal gaps,
-
in --uc output files, a perfect alignment is indicated with a "=" sign,
-
the option --cluster_fast will now sort sequences by decreasing length, then by decreasing abundance and finally by sequence identifier,
-
default --maxseqlength value set to 50,000 nucleotides,
-
fix for bug in alignment in rare cases,
-
fix for lack of detection of under- or overflow in SIMD aligner.
v1.0.9~released January 22nd, 2015
Fixes a bug in the function sorting sequences by decreasing abundance (--sortbysize).
v1.0.10~released January 23rd, 2015
Fixes a bug where the sizein option was ignored and always treated as on, affecting clustering and dereplication commands.
v1.0.11~released February 5th, 2015
Introduces the possibility to output results in SAM format (for clustering, pairwise alignment and searching).
v1.0.12~released February 6th, 2015
Temporarily fixes a problem with long headers in FASTA files.
v1.0.13~released February 17th, 2015
Fix a memory allocation problem when computing multiple sequence alignments with the --msaout and --consout options, as well as a memory leak. Also increased line buffer for reading FASTA files to 4MB.
v1.0.14~released February 17th, 2015
Fix a bug where the multiple alignment and consensus sequence computed after clustering ignored the strand of the sequences. Also decreased size of line buffer for reading FASTA files to 1MB again due to excessive stack memory usage.
v1.0.15~released February 18th, 2015
Fix bug in calculation of identity metric between sequences when using the MBL definition (--iddef 3).
v1.0.16~released February 19th, 2015
Integrated patches from Debian for increased compatibility with various architectures.
v1.1.0~released February 20th, 2015
Added the --quiet option to suppress all output to stdout and stdout except for warnings and fatal errors. Added the --log option to write messages to a log file.
v1.1.1~released February 20th, 2015
Added info about --log and --quiet options to help text.
v1.1.2~released March 18th, 2015
Fix bug with large datasets. Fix format of help info.
v1.1.3~released March 18th, 2015
Fix more bugs with large datasets.
v1.2.0-1.2.19~released July 6th to September 8th, 2015
Several new commands and options added. Bugs fixed. Documentation updated.
v1.3.0~released September 9th, 2015
Changed to autotools build system.
v1.3.1~released September 14th, 2015
Several new commands and options. Bug fixes.
v1.3.2~released September 15th, 2015
Fixed memory leaks. Added "-h" shortcut for help. Removed extra "v" in version number.
v1.3.3~released September 15th, 2015
Fixed bug in hexadecimal digits of MD5 and SHA1 digests. Added --samheader option.
v1.3.4~released September 16th, 2015
Fixed compilation problems with zlib and bzip2lib.
v1.3.5~released September 17th, 2015
Minor configuration/makefile changes to compile to native cpu and simplify makefile.
v1.4.0~released September 25th, 2015
Added --sizeorder option.
v1.4.1~released September 29th, 2015
Inserted public domain MD5 and SHA1 code to eliminate dependency on crypto and openssl libraries and their licensing issues.
v1.4.2~released October 2nd, 2015
Dynamic loading of libraries for reading gzip and bzip2 compressed files if available. Circumvention of missing gzoffset function in zlib 1.2.3 and earlier.
v1.4.3~released October 3rd, 2015
Fix a bug with determining amount of memory on some versions of Apple OS X.
v1.4.4~released October 3rd, 2015
Remove debug message.
v1.4.5~released October 6rd, 2015
Fix memory allocation bug when reading long FASTA sequences.
v1.4.6~released October 6rd, 2015
Fix subtle bug in SIMD alignment code that reduced accuracy.
v1.4.7~released October 7th, 2015
Fixes a problem with searching for or clustering sequences with repeats. In this new version, vsearch will look at all words occurring at least once in the sequences in the initial step. Previously only words occurring exactly once were considered. In addition, vsearch now requires at least 10 words to be shared by the sequences, previously only 6 were required. If the query contains less than 10 words, all words must be present for a match. This change seems to lead to slightly reduced recall, but somewhat increased precision, ending up with slightly improved overall accuracy.
v1.5.0~released October 7th, 2015
This version introduces the new option --minwordmatches that allows the user to specify the minimum number of matching unique words before a sequence is considered further. New default values for different word lengths are also set. The minimum word length is increased to 7.
v1.6.0~released October 9th, 2015
This version adds the relabeling options (--relabel, --relabel_md5 and --relabel_sha1) to the shuffle command. It also adds the --xsize option to the clustering, dereplication, shuffling and sorting commands.
v1.6.1~released October 14th, 2015
Fix bugs and update manual and help text regarding relabelling. Add all relabelling options to the subsampling command. Add the --xsize option to chimera detection, dereplication and fastq filtering commands. Refactoring of code.
v1.7.0~released October 14th, 2015
Add --relabel_keep option.
v1.8.0~released October 19th, 2015
Added --search_exact, --fastx_mask and --fastq_convert commands. Changed most commands to read FASTQ input files as well as FASTA files. Modified --fastx_revcomp and --fastx_subsample to write FASTQ files.
v1.8.1~released November 2nd, 2015
Fixes for compatibility with QIIME and older OS X versions.
v1.9.0~released November 12th, 2015
Added the --fastq_mergepairs command and associated options. This command has not been tested well yet. Included additional files to avoid dependency of autoconf for compilation. Fixed an error where identifiers in fasta headers where not truncated at tabs, just spaces. Fixed a bug in detection of the file format (FASTA/FASTQ) of a gzip compressed input file.
v1.9.1~released November 13th, 2015
Fixed memory leak and a bug in score computation in fastq_mergepairs, and improved speed.
v1.9.2~released November 17th, 2015
Fixed a bug in the computation of some values with --fastq_stats.
v1.9.3~released November 19th, 2015
Workaround for missing x86intrin.h with old compilers.
v1.9.4~released December 3rd, 2015
Fixed incrementation of counter when relabeling dereplicated sequences.
v1.9.5~released December 3rd, 2015
Fixed bug resulting in inferior chimera detection performance.
v1.9.6~released January 8th, 2016
Fixed bug in aligned sequences produced with --fastapairs and --userout (qrow, trow) options.
v1.9.7~released January 12th, 2016
Masking behavior is changed somewhat to keep the letter case of the input sequences unchanged when no masking is performed. Masking is now performed also during chimera detection. Documentation updated.
v1.9.8~released January 22nd, 2016
Fixed bug causing segfault when chimera detection is performed on extremely short sequences.
v1.9.9~released January 22nd, 2016
Adjusted default minimum number of word matches during searches for improved performance.
v1.9.10~released January 25nd, 2016
Fixed bug related to masking and lower case database sequences.
v1.10.0~released February 11th, 2016
Parallelized and improved merging of paired-end reads and adjusted some defaults. Removed progress indicator when stderr is not a terminal. Added --fasta_score option to report chimera scores in FASTA files. Added rereplicate and fastq_eestats commands. Fixed typos. Added relabelling to files produced with --consout and --profile options.
v1.10.1~released February 23, 2016
Fixed a bug affecting the fastq_mergepairs command causing FASTQ headers to be truncated at first space. Full headers are now included in the output (no matter if --notrunclabels is in effect or not).
v1.10.2~released March 18, 2016
Fixed a bug causing a segmentation fault when running usearch_global with an empty query sequence. Also fixed a bug causing imperfect alignments to be reported with an alignment string of "=" in uc output files. Fixed typos in man file. Fixed fasta/fastq processing code regarding presence or absence of compression library header files.
v1.11.1~released April 13, 2016
Added strand information in UC file for derep_fulllength and derep_prefix. Added expected errors (ee) to header of FASTA files specified with --fastaout and --fastaout_discarded when --eeout or --fastq_eeout option is in effect for fastq_filter and fastq_mergepairs. The options --eeout and --fastq_eeout are now equivalent.
v1.11.2~released June 21, 2016
Two bugs were fixed. The first issue was related to the --query_cov option that used a different coverage definition than the qcov userfield. The coverage is now defined as the fraction of the whole query sequence length that is aligned with matching or mismatching residues in the target. All gaps are ignored. The other issue was related to the consensus sequences produced during clustering when only N's were present in some positions. Previously these would be converted to A's in the consensus. The behaviour is changed so that N's are produced in the consensus, and it should now be more compatible with usearch.
v2.0.0~released June 24, 2016
This major new version supports reading from pipes. Two new options are added: --gzip_decompress and --bzip2_decompress. One of these options must be specified if reading compressed input from a pipe, but are not required when reading from ordinary files. The vsearch header that was previously written to stdout is now written to stderr. This enables piping of results for further processing. The file name '-' now represent standard input (/dev/stdin) or standard outout (/dev/stdout) when reading or writing files, respectively. Code for reading FASTA and FASTQ files have been refactored.