sabreur
July 29, 2025 ยท View on GitHub
๐ About
sabreur is a command-line tool designed to demultiplex barcoded sequencing reads into separate files. It supports:
- FASTA and FASTQ formats
- Compressed inputs and outputs:
gzip,bzip2,xz, andzstd - Paired-end and Single-end reads
It uses a barcode file to match reads and dispatches each to the corresponding output. Reads with unknown barcodes go into a separate file.
Powered by niffler for seamless compression support.
๐ Usage
โถ๏ธ Paired-end mode
sabreur barcode.txt input_R1.fq.gz input_R2.fq.gz
โถ๏ธ Single-end mode
sabreur barcode.txt input.fq
sabreur automatically detects the format and compression. Just provide the inputs!
โ๏ธ Command-Line Options
USAGE:
sabreur [options] <BARCODE> <FORWARD FILE> [<REVERSE FILE>]
ARGS:
<BARCODE> input barcode file
<FORWARD> input forward fastx file
<REVERSE> input reverse fastx file
OPTIONS:
-m, --mismatch <INT> maximum number of mismatches [default: 0]
-o, --out <DIR> ouput directory [default: sabreur_out]
-f, --format <STR> output files compression format
-l, --level <INT> compression level [default: 1]
--force force reuse of output directory
-q, --quiet decrease program verbosity
-h, --help Print help information
-V, --version Print version information
๐ฆ Installation
Requirements
- Rust in stable channel
- libgz for gz file support
- liblzma for xz file support
- libbzip2 for bzip2 file support
- zstd for zstd file support
๐ ๏ธ From Source (via Cargo)
git clone https://github.com/Ebedthan/sabreur.git
cd sabreur
cargo install --path . --root ~/.cargo
sabreur --help
๐ Prebuilt Binaries
Download binaries for your platform from the releases page:
- macOS (Apple Silicon): Download โข Checksum
- macOS (Intel): Download โข Checksum
- Linux (x86_64): Download โข Checksum
- Windows (x86_64): Download โข Checksum
Benchmark
Benchmarked with hyperfine dataset.
| Tool | Single-end uncompressed output | Single-end compressed output | Paired-end uncompressed output | Paired-end compressed output |
|---|---|---|---|---|
| idemp | - | 211.571 ยฑ 3.718 | - | 366.247 ยฑ 10.482 |
| sabre | 32.911 ยฑ 2.411 | - | 109.470 ยฑ 49.909 | - |
| sabreur | 10.843 ยฑ 0.531 | 93.840 ยฑ 0.446 | 40.878 ยฑ 13.743 | 187.533 ยฑ 0.572 |
๐๏ธ Compression format performance
A simple benchmark of the different compression format (sabreur tests/bc_pe_fq.txt tests/input_R1.fastq.gz tests/input_R2.fastq.gz), zst being the fastest.
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
--format zst | 43.096 ยฑ 1.547 | 41.179 | 46.878 | 1.00 |
--format bz2 | 94.049 ยฑ 4.762 | 87.984 | 101.140 | 2.18 ยฑ 0.14 |
--format gz | 123.107 ยฑ 1.748 | 120.529 | 125.166 | 2.86 ยฑ 0.11 |
--format xz | 285.692 ยฑ 18.625 | 264.960 | 325.750 | 6.63 ยฑ 0.49 |
๐ Barcode File Format
The barcode file must be tab-delimited in the format:
barcode1 barcode1_file1.fq barcode1_file2.fq
barcode2 barcode2_file1.fq barcode2_file2.fq
...
Output filenames must be unique. You can use .fq, .fastq, .fa, or .fasta as extensions.
Minimum supported Rust version
sabreur minimum Rust version is 1.78.0.
๐ค Contributing
- Contributions are welcome under the Contributor Code of Conduct.
- Please open an issue or pull request on GitHub.
๐ Bugs & Support
Found a bug or have a feature request? โ Open an issue.
๐ License
This project is licensed under the MIT License.