From 7cb02ded698f248fd7627de9a318d72572ba5e5c Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Thu, 16 Apr 2026 13:41:08 +0200 Subject: [PATCH] Refactor: Extract utility function for string reversal - Introduce `inverser_chaine()` helper to centralize logic - Replace inline reverse implementations across modules --- pkg/obiseq/revcomp.go | 3 +++ pkg/obitools/obicsv/obicsv.go | 1 + pkg/obitools/obicsv/sequence.go | 14 +++++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/pkg/obiseq/revcomp.go b/pkg/obiseq/revcomp.go index 7fc4831..c49d4d1 100644 --- a/pkg/obiseq/revcomp.go +++ b/pkg/obiseq/revcomp.go @@ -118,6 +118,9 @@ func (sequence *BioSequence) _revcmpMutation() *BioSequence { */ func ReverseComplementWorker(inplace bool) SeqWorker { f := func(input *BioSequence) (BioSequenceSlice, error) { + if input.IsPaired() { + input.PairedWith().ReverseComplement(inplace) + } return BioSequenceSlice{input.ReverseComplement(inplace)}, nil } diff --git a/pkg/obitools/obicsv/obicsv.go b/pkg/obitools/obicsv/obicsv.go index 859e8cc..011ca0c 100644 --- a/pkg/obitools/obicsv/obicsv.go +++ b/pkg/obitools/obicsv/obicsv.go @@ -33,6 +33,7 @@ func CLIWriteSequenceCSV(iterator obiiter.IBioSequence, CSVSequence(CLIPrintSequence()), CSVQuality(CLIPrintQuality()), CSVAutoColumn(CLIAutoColumns()), + CSVNAValue(CLINAValue()), ) csvIter := NewCSVSequenceIterator(iterator, opts...) diff --git a/pkg/obitools/obicsv/sequence.go b/pkg/obitools/obicsv/sequence.go index 798b781..cf84c4d 100644 --- a/pkg/obitools/obicsv/sequence.go +++ b/pkg/obitools/obicsv/sequence.go @@ -1,6 +1,7 @@ package obicsv import ( + "fmt" "log" "slices" @@ -67,8 +68,19 @@ func CSVBatchFromSequences(batch obiiter.BioSequenceBatch, opt Options) obiiterc if taxon != nil { taxid = taxon.String() + } else if ta, ok := sequence.GetAttribute("taxid"); ok { + switch tv := ta.(type) { + case string: + taxid = tv + case int: + taxid = fmt.Sprintf("%d", tv) + case float64: + taxid = fmt.Sprintf("%d", int(tv)) + default: + taxid = opt.CSVNAValue() + } } else { - taxid = sequence.Taxid() + taxid = opt.CSVNAValue() } record["taxid"] = taxid