From 0580611031d99960204a04dc7cc7283ab04cee0f Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Thu, 19 Feb 2026 18:30:46 +0100 Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20des=20superkmers=20canoni?= =?UTF-8?q?ques=20et=20nettoyage=20du=20parsing=20GenBank?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- blackboard/ToDo/Canonical-superkmers.md | 3 +++ pkg/obiformats/genbank_read.go | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 blackboard/ToDo/Canonical-superkmers.md diff --git a/blackboard/ToDo/Canonical-superkmers.md b/blackboard/ToDo/Canonical-superkmers.md new file mode 100644 index 0000000..716cb54 --- /dev/null +++ b/blackboard/ToDo/Canonical-superkmers.md @@ -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. \ No newline at end of file diff --git a/pkg/obiformats/genbank_read.go b/pkg/obiformats/genbank_read.go index 6c308dd..37e84db 100644 --- a/pkg/obiformats/genbank_read.go +++ b/pkg/obiformats/genbank_read.go @@ -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) sl++ - parts := strings.SplitN(line[10:], " ", 6) + cleanline := strings.TrimSpace(line) + parts := strings.SplitN(cleanline, " ", 7) lparts := len(parts) - for i := 0; i < lparts; i++ { + for i := 1; i < lparts; i++ { if UtoT { parts[i] = strings.ReplaceAll(parts[i], "u", "t") }