mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-04-30 12:00:39 +00:00
8c7017a99d
- Update obioptions.Version from "Release 4.4.29" to "/v/ Release v5" - Update version.txt from 4.29 → .30 (automated by Makefile)
1.2 KiB
1.2 KiB
BioSequence.Kmers(k int) — Semantic Description
The Kmers method is a generator function that yields all contiguous k-length subsequences (called k-mers) from a biological sequence (BioSequence).
- It operates on
[]bytedata, assuming the underlying sequence is stored as a byte slice (e.g., DNA basesA,C,G,T). - Uses Go’s new iterator protocol (
iter.Seq[[]byte]) for memory-efficient, lazy evaluation. - Validates input: returns an empty iterator if
k ≤ 0or exceeds sequence length. - Iterates linearly from index
i = 0tolen(seq) - k, extracting slices of length k. - Each yielded value is a non-copying slice view (efficient, but mutable if original data changes).
- Supports early termination: the consumer can stop iteration by returning
falsefrom the yield callback. - Designed for downstream tasks like sequence analysis, motif discovery, or hashing (e.g., in k-mer counting).
- Does not handle reverse-complement or ambiguous bases—assumes raw sequence input.
Usage example:
for kmer := range seq.Kmers(3) {
fmt.Printf("%s\n", string(kmer))
}
This yields all 3-mers (e.g., "ACG", "CGT"...) in order.