From 060f7db082c55150380f9042dd3711ef2a663764 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Thu, 2 Feb 2023 17:15:06 +0100 Subject: [PATCH] Adds code for the --length option of obiannotate --- pkg/obitools/obiannotate/obiannotate.go | 19 +++++++++++++++++-- pkg/obitools/obiannotate/options.go | 4 ++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/pkg/obitools/obiannotate/obiannotate.go b/pkg/obitools/obiannotate/obiannotate.go index b57db51..aefab8a 100644 --- a/pkg/obitools/obiannotate/obiannotate.go +++ b/pkg/obitools/obiannotate/obiannotate.go @@ -47,7 +47,7 @@ func RenameAttributeWorker(toBeRenamed map[string]string) obiseq.SeqWorker { func AddTaxonAtRankWorker(taxonomy *obitax.Taxonomy, ranks ...string) obiseq.SeqWorker { f := func(s *obiseq.BioSequence) *obiseq.BioSequence { for _, r := range ranks { - taxonomy.SetTaxonAtRank(s,r) + taxonomy.SetTaxonAtRank(s, r) } return s } @@ -55,6 +55,16 @@ func AddTaxonAtRankWorker(taxonomy *obitax.Taxonomy, ranks ...string) obiseq.Seq return f } +func AddSeqLengthWorker() obiseq.SeqWorker { + f := func(s *obiseq.BioSequence) *obiseq.BioSequence { + s.SetAttribute("seq_length", s.Len()) + return s + } + + return f + +} + func CLIAnnotationWorker() obiseq.SeqWorker { var annotator obiseq.SeqWorker annotator = nil @@ -76,7 +86,12 @@ func CLIAnnotationWorker() obiseq.SeqWorker { if CLIHasTaxonAtRank() { taxo := obigrep.CLILoadSelectedTaxonomy() - w := AddTaxonAtRankWorker(taxo,CLITaxonAtRank()...) + w := AddTaxonAtRankWorker(taxo, CLITaxonAtRank()...) + annotator = annotator.ChainWorkers(w) + } + + if CLIHasSetLengthFlag() { + w := AddSeqLengthWorker() annotator = annotator.ChainWorkers(w) } diff --git a/pkg/obitools/obiannotate/options.go b/pkg/obitools/obiannotate/options.go index eb691ab..9dbabf4 100644 --- a/pkg/obitools/obiannotate/options.go +++ b/pkg/obitools/obiannotate/options.go @@ -128,3 +128,7 @@ func CLIHasTaxonAtRank() bool { func CLITaxonAtRank() []string { return _taxonAtRank } + +func CLIHasSetLengthFlag() bool { + return _setSeqLength +} \ No newline at end of file