mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-03-25 13:30:52 +00:00
Add k-mer encoding and decoding functions with normalized k-mer support
This commit introduces new functions for encoding and decoding k-mers, including support for normalized k-mers. It also updates the frequency filter and k-mer set implementations to use the new encoding functions, providing zero-allocation encoding for better performance. The commit hash has been updated to reflect the latest changes.
This commit is contained in:
@@ -39,11 +39,33 @@ func (ks *KmerSet) K() int {
|
||||
return ks.k
|
||||
}
|
||||
|
||||
// Add ajoute un k-mer à l'ensemble
|
||||
func (ks *KmerSet) Add(kmer uint64) {
|
||||
// AddKmerCode ajoute un k-mer encodé à l'ensemble
|
||||
func (ks *KmerSet) AddKmerCode(kmer uint64) {
|
||||
ks.bitmap.Add(kmer)
|
||||
}
|
||||
|
||||
// AddNormalizedKmerCode ajoute un k-mer encodé normalisé à l'ensemble
|
||||
func (ks *KmerSet) AddNormalizedKmerCode(kmer uint64) {
|
||||
canonical := NormalizeKmer(kmer, ks.k)
|
||||
ks.bitmap.Add(canonical)
|
||||
}
|
||||
|
||||
// AddKmer ajoute un k-mer à l'ensemble en encodant la séquence
|
||||
// La séquence doit avoir exactement k nucléotides
|
||||
// Zero-allocation: encode directement sans créer de slice intermédiaire
|
||||
func (ks *KmerSet) AddKmer(seq []byte) {
|
||||
kmer := EncodeKmer(seq, ks.k)
|
||||
ks.bitmap.Add(kmer)
|
||||
}
|
||||
|
||||
// AddNormalizedKmer ajoute un k-mer normalisé à l'ensemble en encodant la séquence
|
||||
// La séquence doit avoir exactement k nucléotides
|
||||
// Zero-allocation: encode directement en forme canonique sans créer de slice intermédiaire
|
||||
func (ks *KmerSet) AddNormalizedKmer(seq []byte) {
|
||||
canonical := EncodeNormalizedKmer(seq, ks.k)
|
||||
ks.bitmap.Add(canonical)
|
||||
}
|
||||
|
||||
// AddSequence ajoute tous les k-mers d'une séquence à l'ensemble
|
||||
// Utilise un itérateur pour éviter l'allocation d'un vecteur intermédiaire
|
||||
func (ks *KmerSet) AddSequence(seq *obiseq.BioSequence) {
|
||||
|
||||
Reference in New Issue
Block a user