Deacon
A minimizer-based filter for nucleotide sequences in FASTA or FASTQ format, built for fast host depletion. Default behaviour removes query sequences with two or more minimizers present in the index. Capable of filtering at >200Mbp/s (Apple M1) and indexing a human genome in under 60s. Peak memory usage is ~4.5GB for the default panhuman index.
The sensitivity/specificity/memory tradeoff can be tuned using indexes built with varying k-mer length (-k), minimizer window length (-w), and match threshold (-m). Filtering speed may be increased by considering only the first -n bases per query sequence. Uses simd-minimizers for accelerated minimizer computation. This project is currently unstable. Validation and benchmarks coming soon.
Install
conda/mamba/pixi 
cargo 
Usage
The command deacon filter accepts an index path and a FASTA/FASTQ query from file or stdin. Prebuilt indexes are available for download below, and custom indexes may be created using deacon index build.
Prebuilt indexes
Use deacon index fetch panhuman-1m to fetch the default panhuman index from object storage for immediate use with deacon filter. Object storage is provided by the ModMedMicro research unit at the University of Oxford.
| Name | Composition | Parameters | Minimizers | Size | Date | Masked minimizers |
|---|---|---|---|---|---|---|
| panhuman-1m | HPRC Year 1 + CHM13v2.0 + GRCh38.p14, masked with bacteria (argos988) and viruses (rsviruses17900) |
k=31, w=15 | 409,914,298 | 3.7GB | 2025-05 | 20,741 (0.0051%) |
Filtering
Supports FASTA or FASTQ input from file or stdin and outputs to stdout or file. Paired sequences are supported as either separate files or interleaved stdin, and written interleaved to either stdout or file. Gzip (.gz) and Zstandard (.zst) compression formats are detected automatically by file extension. Since (de)compression can be rate limiting, consider using Zstandard rather than Gzip for best performance on multicore systems.
| | | | | |
Reports
Use --log results.json to save a filtering summary to a JSON file:
Building indexes
Build custom indexes usingdeacon index build. This accepts FASTA[.gz] input files and outputs to stdout or file (-o).
Composing indexes with set operations
- Use
deacon index union 1.idx 2.idx > 1+2.idxto nonredundantly combine two (or more) deacon minimizer indexes. - Use
deacon index diff 1.idx 2.idx > 1-2.idxto subtract minimizers in 2.idx from 1.idx. Useful for masking.