Implémentation des superkmers canoniques et nettoyage du parsing GenBank

Ajout de la fonction IterCanonicalSuperKmers dans superkmer_iter.go pour implémenter les superkmers canoniques selon le document d'architecture.

Corrections dans genbank_read.go :
- Nettoyage des lignes de données avec strings.TrimSpace
- Augmentation du nombre de parties extraites avec SplitN à 7
- Début de la boucle à l'indice 1 au lieu de 0 pour ignorer le premier élément vide

Création du fichier Canonical-superkmers.md pour documenter l'implémentation.
This commit is contained in:
Eric Coissac
2026-02-19 18:30:46 +01:00
parent c30a22d356
commit c9c877e9b0
2 changed files with 6 additions and 2 deletions

View File

@@ -0,0 +1,3 @@
lit le ficier [@canonical-super-kmer-strategy.md](file:///Users/coissac/Sync/travail/__MOI__/GO/obitools4/blackboard/Prospective/canonical-super-kmer-strategy.md).
Dans le fichier [@superkmer_iter.go](file:///Users/coissac/Sync/travail/__MOI__/GO/obitools4/pkg/obikmer/superkmer_iter.go) implemente une nouvelle fonction IterCanonicalSuperKmers sur le modèle de IterSuperKmers, qui implémente la notion de SuperKmers canonique présenté dans le document d'architecture.

View File

@@ -162,9 +162,10 @@ func GenbankChunkParser(withFeatureTable, UtoT bool) func(string, io.Reader) (ob
// log.Debugf("Chunk %d : Genbank: line %d, state = %d : %s", chunks.order, nl, state, line) // log.Debugf("Chunk %d : Genbank: line %d, state = %d : %s", chunks.order, nl, state, line)
sl++ sl++
parts := strings.SplitN(line[10:], " ", 6) cleanline := strings.TrimSpace(line)
parts := strings.SplitN(cleanline, " ", 7)
lparts := len(parts) lparts := len(parts)
for i := 0; i < lparts; i++ { for i := 1; i < lparts; i++ {
if UtoT { if UtoT {
parts[i] = strings.ReplaceAll(parts[i], "u", "t") parts[i] = strings.ReplaceAll(parts[i], "u", "t")
} }