refactor: remove equivalence class folding from entropy pipeline
Release / create-release (push) Successful in 2m27s
Release / build-linux-x86_64 (push) Successful in 8m17s
Release / build-macos-arm64 (push) Successful in 1m41s
CI / build (pull_request) Successful in 3m33s

Removes circular-reverse complement machinery and explicit k-mer canonicalization across the entropy pipeline. Frequency tallying and Shannon entropy computation now operate directly on raw k-mer values, eliminating prior score inflation and alignment-dependent artifacts while preserving orientation invariance. Updates build scripts to generate normalized lookup tables for k-mer lengths 1–6, restricts the public API to `EntropyTracker`, and bumps crate versions. Documentation is updated to reflect the simplified raw-value approach and revised module structure.
This commit is contained in:
Eric Coissac
2026-07-08 19:36:30 +02:00
parent 912f788f7f
commit fd2c23e7df
10 changed files with 142 additions and 286 deletions
+2 -4
View File
@@ -1,4 +1,4 @@
use obikentropy::{EntropyTracker, sub_word_canon};
use obikentropy::EntropyTracker;
use obikseq::kmer::{Minimizer, hash_kmer};
use obikseq::params;
@@ -136,8 +136,6 @@ impl RollingStat {
self.rolling_rck =
((self.rolling_rck >> 2) | ((cnuc as u64) << ((k - 1) * 2))) & self.k_mask;
let canon = sub_word_canon(self.rolling_k);
self.received += 1;
if self.received >= m {
@@ -170,7 +168,7 @@ impl RollingStat {
}
}
self.entropy.push(self.received, canon);
self.entropy.push(self.received, self.rolling_k);
}
pub fn ready(&self) -> bool {