From 5313788f7ca988522656646139c85ccce936966d Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Sat, 12 Sep 2026 13:58:41 +0200 Subject: [PATCH] Update indexing constraints and CLI options This commit introduces new constraints for kmer size and minimizer selection, defines super-kmers, and adds extensive new command-line options for filtering, conversion, merging, and packing indices. Documentation across the codebase has also been updated. --- Home.md | 6 +++--- formats-index_layout.md | 38 ++++++++++++++++----------------- theory-encoding.md | 10 ++++----- theory-entropy_filter.md | 2 +- theory-indexing_architecture.md | 14 ++++++------ theory-kmers_and_superkmers.md | 8 +++---- theory-minimizer_selection.md | 34 ++++++++++++++--------------- usage-annotate.md | 4 ++-- usage-convert.md | 4 ++-- usage-dump.md | 4 ++-- usage-estimate.md | 2 +- usage-filter.md | 6 +++--- usage-index_command.md | 6 +++--- usage-merge.md | 4 ++-- usage-pack.md | 4 ++-- usage-phylo.md | 33 ++++++++++++++-------------- usage-predicates.md | 8 +++---- usage-query.md | 4 ++-- usage-select.md | 4 ++-- usage-superkmer.md | 6 +++--- usage-unitig.md | 2 +- usage-utils.md | 4 ++-- 22 files changed, 100 insertions(+), 107 deletions(-) diff --git a/Home.md b/Home.md index a2a725b..2ef75f1 100644 --- a/Home.md +++ b/Home.md @@ -15,7 +15,7 @@ All functionality is exposed through a single binary, `obikmer`, organized as su ## Commands | Command | Purpose | -|---|---| +| --- | --- | | [`superkmer`](usage-superkmer) | Extract super-kmers from a sequence file and write them to stdout | | [`index`](usage-index_command) | Build a genome index | | [`merge`](usage-merge) | Merge multiple indexes into one | @@ -48,7 +48,7 @@ See [Genome predicates and taxonomy paths](usage-predicates) for the selection l These constraints are checked at startup; an invalid value exits immediately with an error. | Parameter | Constraint | Reason | -|---|---|---| +| --- | --- | --- | | $k$ (`--kmer-size`) | odd, $k \in [11, 31]$ | odd length guarantees the canonical form is always well defined; the range keeps a kmer within a 64-bit word while retaining specificity | | $m$ (`--minimizer-size`) | odd, $3 \le m \le k-1$ | same palindrome argument as $k$; must be strictly shorter than the kmer | | $z$ (`-z`, approximate evidence only) | $z \le k-1$ | the effective indexed kmer size is $k-z+1$ | @@ -58,7 +58,7 @@ These constraints are checked at startup; an invalid value exits immediately wit Genome labels are arbitrary Unicode strings, with the following restrictions: | Character | Forbidden | Reason | -|---|---|---| +| --- | --- | --- | | `/` | yes | filesystem path separator | | `=` | yes | separator used by `--new-label` | | `\0` | yes | null byte | diff --git a/formats-index_layout.md b/formats-index_layout.md index 0960f0d..3da36d6 100644 --- a/formats-index_layout.md +++ b/formats-index_layout.md @@ -26,26 +26,24 @@ Two verification modes are available, selected at build time (`index --approx`) ## On-disk layout -``` -/ - index.meta global configuration (k, minimizer size, partition count, - evidence mode, whether counts are stored) and genome list/metadata - scatter.done / count.done / index.done build-progress sentinels - spectrums/