Skip to content

Commit c2345d9

Browse files
committed
chore: release v0.3.0
Major release with FASTQ support and several new features: - support FASTQ file format with automatic detection from extension - filter k-mers by base quality score with --min-quality - output k-mer frequency histogram with --format histogram - save k-mer counts to binary index and query them later
1 parent 5880525 commit c2345d9

3 files changed

Lines changed: 55 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,56 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.3.0] - 2026-01-27
9+
10+
### Added
11+
12+
#### FASTQ Support
13+
14+
- Full FASTQ file format support with automatic detection from file extension (`.fq`, `.fastq`, `.fq.gz`, `.fastq.gz`)
15+
- `--input-format` / `-i` CLI flag for explicit format specification (required for stdin FASTQ)
16+
- `SequenceFormat` enum (`Auto`, `Fasta`, `Fastq`) for programmatic format selection
17+
- FASTQ support in streaming APIs (`count_kmers_streaming`, `count_kmers_sequential`)
18+
- Gzip-compressed FASTQ support (`.fq.gz`)
19+
20+
#### Quality-Based Filtering
21+
22+
- `--min-quality` / `-Q` CLI flag to filter k-mers by base quality scores (Phred 0-93)
23+
- K-mers containing bases below the quality threshold are skipped
24+
- Smart skip optimization: jumps past low-quality bases rather than checking overlapping windows
25+
- `count_kmers_with_quality` function for programmatic quality filtering
26+
- Appropriate warnings when quality filtering is used with FASTA or stdin
27+
28+
#### Histogram Output
29+
30+
- `--format histogram` output mode for k-mer frequency spectrum (count of counts)
31+
- Tab-separated output: `count<TAB>frequency`, sorted by count ascending
32+
- `KmerHistogram` type alias (`BTreeMap<u64, u64>`) for histogram data
33+
- `compute_histogram` and `compute_histogram_packed` functions
34+
- `histogram_stats` function returning `HistogramStats` (total, distinct, mode, mean)
35+
- `KmerCounter::histogram()` builder method
36+
37+
#### K-mer Index Serialization
38+
39+
- `--save <PATH>` flag to save k-mer counts to binary index file (`.kmix`)
40+
- `kmerust query <INDEX> <KMER>` subcommand to look up k-mer counts from saved index
41+
- Compact binary format with versioned header and CRC32 integrity checking
42+
- Automatic gzip compression when saving to `.kmix.gz`
43+
- `KmerIndex` struct with `save_index` and `load_index` functions
44+
- Query support: case-insensitive, canonicalized lookups
45+
46+
### Changed
47+
48+
- Package description updated to mention FASTQ support
49+
- Error types renamed for format neutrality: `FastaRead``SequenceRead`, `FastaParse``SequenceParse`
50+
- Consolidated duplicate output code in main.rs for better error handling
51+
- `output_counts` function is now public in the `run` module
52+
53+
### Fixed
54+
55+
- Quality filtering correctly warns when used with stdin (not yet supported there)
56+
- Quality filtering correctly warns when used with FASTA input (no quality data available)
57+
858
## [0.2.1] - 2026-01-23
959

1060
### Added
@@ -104,7 +154,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
104154
- K-mer lengths from 1 to 32
105155
- Jellyfish-compatible output format
106156

107-
[Unreleased]: https://github.com/suchapalaver/kmerust/compare/v0.2.1...HEAD
157+
[Unreleased]: https://github.com/suchapalaver/kmerust/compare/v0.3.0...HEAD
158+
[0.3.0]: https://github.com/suchapalaver/kmerust/compare/v0.2.1...v0.3.0
108159
[0.2.1]: https://github.com/suchapalaver/kmerust/compare/v0.2.0...v0.2.1
109160
[0.2.0]: https://github.com/suchapalaver/kmerust/compare/v0.1.0...v0.2.0
110161
[0.1.0]: https://github.com/suchapalaver/kmerust/releases/tag/v0.1.0

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
authors = ["Joseph Livesey <jlivesey@gmail.com>"]
33
categories = ["command-line-utilities", "science"]
4-
description = "A fast, parallel k-mer counter for DNA sequences in FASTA files"
4+
description = "A fast, parallel k-mer counter for DNA sequences in FASTA and FASTQ files"
55
edition = "2021"
66
homepage = "https://github.com/suchapalaver/kmerust"
77
include = ["src/*", "LICENSE", "README.md", "CHANGELOG.md", "tests/**/*"]
@@ -11,7 +11,7 @@ name = "kmerust"
1111
readme = "./README.md"
1212
repository = "https://github.com/suchapalaver/kmerust"
1313
rust-version = "1.75"
14-
version = "0.2.1"
14+
version = "0.3.0"
1515

1616
[dependencies]
1717
bio = "3.0.0"

0 commit comments

Comments
 (0)