Repository navigation
References
z-fastq is written from scratch in Zig, but it does not invent its own rules where people already rely on established ones. This page lists the tools it follows, the tools it is compared with, and the public data it is checked on, with versions, sources, and citations. If you use z-fastq's trimming or QC in published work, please cite the tools whose rules it follows as well.
z-fastq follows these tools' rules and file formats for the parts listed. It does not run them, and it is not a replacement for any of them: each does much more than the part z-fastq follows.
-
fastp 1.1.0 [1, 2]: the trimming and filtering rules of
process, insert sizes, the pair duplication rate, and the layout of the QC summary. Results are also checked against fastp 1.4.0. - FastQC 0.13.0 [3]: the definitions of the QC modules, their statuses at the default limits, and the layout of the QC tables.
- FastQC-Rust 1.1.0: the QC tables are checked byte for byte against its output.
- MultiQC 1.33 [4]: reads the QC tables with its FastQC module and the QC summary with its fastp module.
z-fastq itself is built with Zig 0.16.0 and zipir 0.3.0 for gzip.
These tools are run beside z-fastq to check that results agree and to measure speed and memory on the same inputs. The comparisons are development evidence, not a ranking: every tool here was built for its own set of jobs. The pinned versions live in tools/versions.sh.
| Tool | Version | Compared on | Cite |
|---|---|---|---|
| BBTools | 40.05 | sampling, pairs, layout | |
| Fasten | 0.9.0 | interleaved sampling | [5] |
| fastp | 1.4.0 | processing | [1, 2] |
| FastQC | 0.13.0 | QC modules | [3] |
| FastQC-Rust | 1.1.0 | QC modules and tables | |
| FastQValidator | 0.1.1a | validation | |
| fq | 0.12.0 | validation, paired sampling | |
| fqkit | 0.4.14 | stats, sampling, layout | |
| fqtools | 2.3 | counting, validation | [6] |
| Helicase | 0.2.0 | counting, stats | |
| IRMA Core | 0.11.0 | sampling, layout | |
| Needletail | 0.7.3 | counting, stats | |
| Rasusa | 5.1.0 | sampling | [7] |
| SeqFu | 1.29.0 | counting, stats, validation, layout | [8] |
| SeqKit | 2.14.0 | stats, sampling, pairs | [9, 10] |
| seqtk | 1.5-r133 | counting, sampling, layout |
- "Layout" means interleaving and deinterleaving.
- Helicase and Needletail are Rust parsing libraries; a small wrapper around each counts records and bases so they can be compared as commands.
- A blank citation means the tool has no paper to cite; cite its repository and version.
Eleven public runs from the European Nucleotide Archive cover short and long reads, single and paired layouts, fixed and variable lengths, and several instruments.
| Accession | Platform | Instrument | Sample | Layout | Read length |
|---|---|---|---|---|---|
| DRR018439 | Illumina | MiSeq | E. coli | paired | 35 to 151 |
| DRR018447 | Illumina | MiSeq | E. coli | paired | 151 |
| DRR1001190 | Illumina | NovaSeq 6000 | feces metagenome | paired | 150 |
| DRR147610 | Illumina | HiSeq 3000 | quail miRNA | single | 36 |
| ERR4686103 | Illumina | NovaSeq 6000 | human | paired | variable |
| SRR19571648 | Illumina | NovaSeq 6000 | mouse single-cell | paired | 28 and 150 |
| ERR10448913 | MGI | BGISEQ-500 | mouse | paired | 100 |
| ERR10496769 | ONT | GridION | E. coli | single | 110 to 92,287 |
| ERR14758576 | ONT | PromethION | human | single | 30,000 to 291,910 |
| ERR10472470 | PacBio | Sequel II CCS | K. oxytoca | single | 403 to 31,646 |
| SRR29396856 | PacBio | Revio HiFi | human | single | about 16 kb |
Each run is cut into nested prefixes of whole records, sized by plain bytes with both mates counted: tiny (1 MiB), xsmall (10 MiB), and small (100 MiB) for every run, medium (1 GiB) for seven of them, and large (10 GiB) for five. Each original download's size and MD5 checksum are pinned in bench/lib/corpus/real-data.json, and bench/lib/corpus/make.sh downloads and cuts them.
-
bench/lib/shapes/generates synthetic reads in six shapes (dense, variable, endings, paired, long, and long-read) for timing across sizes. -
tests/data/synthetic/holds small hand-made files, valid and malformed, that the tests check record by record.
- Chen S, Zhou Y, Chen Y, Gu J. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics. 2018;34(17):i884–i890. doi:10.1093/bioinformatics/bty560
- Chen S. Ultrafast one-pass FASTQ data preprocessing, quality control, and deduplication using fastp. iMeta. 2023;2(2):e107. doi:10.1002/imt2.107
- Andrews S. FastQC: a quality control tool for high throughput sequence data. 2010. bioinformatics.babraham.ac.uk/projects/fastqc
- Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016;32(19):3047–3048. doi:10.1093/bioinformatics/btw354
- Katz LS, Phan J, den Bakker HC. Fasten: a toolkit for streaming operations on fastq files. Journal of Open Source Software. 2024;9(94):6030. doi:10.21105/joss.06030
- Droop AP. fqtools: an efficient software suite for modern FASTQ file manipulation. Bioinformatics. 2016;32(12):1883–1884. doi:10.1093/bioinformatics/btw088
- Hall M. Rasusa: Randomly subsample sequencing reads to a specified coverage. Journal of Open Source Software. 2022;7(69):3941. doi:10.21105/joss.03941
- Telatin A, Fariselli P, Birolo G. SeqFu: a suite of utilities for the robust and reproducible manipulation of sequence files. Bioengineering. 2021;8(5):59. doi:10.3390/bioengineering8050059
- Shen W, Le S, Li Y, Hu F. SeqKit: a cross-platform and ultrafast toolkit for FASTA/Q file manipulation. PLOS ONE. 2016;11(10):e0163962. doi:10.1371/journal.pone.0163962
- Shen W, Sipos B, Zhao L. SeqKit2: a Swiss army knife for sequence and alignment processing. iMeta. 2024;3(3):e191. doi:10.1002/imt2.191
- Choosing a FASTQ tool: when to use one of these tools instead.
- Processing paired reads and Quality control: the parts that follow fastp and FastQC.
z-fastq v0.2.1 | Home | Getting started | Command cheat sheet | Troubleshooting | Source | Releases
z-fastq Wiki
Start
Use it
- Counting and statistics
- Validation
- Paired reads
- Sampling
- Interleaving
- Processing paired reads
- Quality control
Look things up
Decide and solve
Build on it