rsomics-rereplicate 0.1.0

Expand abundance-annotated FASTA back into individual reads — port of vsearch --rereplicate
Documentation

rsomics-rereplicate

Expand ;size=N abundance annotations back into N individual FASTA records. The inverse of dereplication (rsomics-derep / vsearch --derep_fulllength).

Usage

rsomics-rereplicate <INPUT> -o <OUTPUT> [OPTIONS]

Arguments:
  <INPUT>   Input FASTA file (use `-` for stdin)

Options:
  -o, --output <OUTPUT>       Output FASTA file (use `-` for stdout)
  --sizeout                   Append `;size=1` to each emitted copy
  --fasta-width <N>           Sequence line wrap width; 0 = no wrap [default: 80]
  -t, --threads <N>           Thread count (currently single-threaded; flag accepted)
  -q, --quiet                 Suppress progress messages
  --json                      Machine-readable JSON output on stderr

Behaviour

Matches vsearch --rereplicate v2.31.0 byte-for-byte:

  • Each record with ;size=N emits N copies in input order.
  • The ;size=N annotation is stripped from output headers by default.
  • With --sizeout, each copy receives ;size=1 appended.
  • Records with no ;size= annotation are treated as abundance 1 (warned on stderr).
  • No minseqlength or maxseqlength filtering (vsearch does not apply these here).
  • Sequence bytes preserved exactly — case and U characters unchanged.
  • FASTA output wraps at 80 columns (configurable via --fasta-width).

Performance

On 50 000 amplicons / 8.7 MB input (aarch64 macOS, Apple M2, hyperfine 15 runs):

Tool Mean Ratio
vsearch 2.31.0 141.3 ms ± 5.9 ms 1.00×
rsomics-rereplicate 0.1.0 38.8 ms ± 0.7 ms 3.65×

Output: 88 MB (50 500 reads, byte-exact vs vsearch).

Origin

This crate is an independent Rust reimplementation of vsearch --rereplicate based on:

  • The vsearch source code (BSD-2-Clause) — src/rereplicate.cc and src/fasta.cc from https://github.com/torognes/vsearch
  • Black-box behaviour testing against the upstream binary (vsearch 2.31.0)

The vsearch source is dual-licensed (GPL-3 or BSD-2-Clause). We read the BSD-2-Clause copy; our Rust implementation is MIT OR Apache-2.0.

License: MIT OR Apache-2.0
Upstream credit: vsearch https://github.com/torognes/vsearch (BSD-2-Clause / GPL-3)