@@ -5,6 +5,56 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.1.0/ ) ,
66and 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
0 commit comments