From 4fc786082572b295385f5b92b0d4d9a0d6176ff2 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Tue, 7 Jul 2026 10:47:47 +0200 Subject: [PATCH] feat: filter zero-valued entries from kmer strict matches output Optimize query serialization by conditionally excluding genomes with zero total matches. This reduces JSON payload size while preserving the label-to-count mapping structure. Updates architecture documentation and bumps version to 1.1.36. --- docmd/architecture/query.md | 2 +- src/Cargo.lock | 2 +- src/obikmer/Cargo.toml | 2 +- src/obikmer/src/cmd/query.rs | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docmd/architecture/query.md b/docmd/architecture/query.md index db37c6c..fb377a0 100644 --- a/docmd/architecture/query.md +++ b/docmd/architecture/query.md @@ -153,7 +153,7 @@ Genome keys follow the iteration order of `meta.genomes`. |---|---|---|---| | `kmer_count` | int | always | k-mers confirmed (post-Findere) with at least one genome match | | `kmer_missing` | int | `--count-missing` | k-mers absent from the index entirely (pre-Findere None) | -| `kmer_strict_matches` | object | always | per-genome accumulated value (label → count or 0/1) | +| `kmer_strict_matches` | object | always | per-genome accumulated value, non-zero entries only (label → count or 0/1) | | `coverage` | object | `--detail` | per-genome array of per-position contributions (label → [u32]) | `kmer_count + kmer_missing` ≤ total k_user-mers in the sequence. The gap corresponds to k_user-mers whose z-window was not fully confirmed (at least one s-mer absent or zero for all genomes) but whose first s-mer was present in the index. diff --git a/src/Cargo.lock b/src/Cargo.lock index 0664684..da8654f 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -1704,7 +1704,7 @@ dependencies = [ [[package]] name = "obikmer" -version = "1.1.35" +version = "1.1.36" dependencies = [ "clap", "csv", diff --git a/src/obikmer/Cargo.toml b/src/obikmer/Cargo.toml index a38559e..c5a3208 100644 --- a/src/obikmer/Cargo.toml +++ b/src/obikmer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "obikmer" -version = "1.1.35" +version = "1.1.36" edition = "2024" [[bin]] diff --git a/src/obikmer/src/cmd/query.rs b/src/obikmer/src/cmd/query.rs index f5172f7..b0fe090 100644 --- a/src/obikmer/src/cmd/query.rs +++ b/src/obikmer/src/cmd/query.rs @@ -501,7 +501,9 @@ fn emit_batch( let mut match_map = serde_json::Map::new(); for (g, genome) in meta.genomes.iter().enumerate() { - match_map.insert(genome.label.clone(), acc.genome_totals[g].into()); + if acc.genome_totals[g] != 0 { + match_map.insert(genome.label.clone(), acc.genome_totals[g].into()); + } } ann.insert("kmer_strict_matches".into(), match_map.into()); -- 2.54.0