From 38945d0a41b6a4b0d2c6c340963cc23f0d97da03 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Fri, 31 May 2024 11:34:06 +0200 Subject: [PATCH] Adds the --template option to obimultiplex Former-commit-id: 349e9f278abd6a6c258f31d99ea04853a79c62de --- cmd/obitools/obimultiplex/main.go | 11 +++++++++++ pkg/obitools/obimultiplex/options.go | 23 ++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/cmd/obitools/obimultiplex/main.go b/cmd/obitools/obimultiplex/main.go index 82ed566..bea5bfb 100644 --- a/cmd/obitools/obimultiplex/main.go +++ b/cmd/obitools/obimultiplex/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "os" log "github.com/sirupsen/logrus" @@ -31,6 +32,16 @@ func main() { _, args := optionParser(os.Args) + if obimultiplex.CLIAskConfigTemplate() { + fmt.Print(obimultiplex.CLIConfigTemplate()) + os.Exit(0) + } + + if !obimultiplex.CLIHasNGSFilterFile() { + log.Error("You must provide a tag list file following the NGSFilter format") + os.Exit(1) + } + sequences, err := obiconvert.CLIReadBioSequences(args...) if err != nil { diff --git a/pkg/obitools/obimultiplex/options.go b/pkg/obitools/obimultiplex/options.go index 28723f1..8f590fa 100644 --- a/pkg/obitools/obimultiplex/options.go +++ b/pkg/obitools/obimultiplex/options.go @@ -13,6 +13,7 @@ import ( ) var _NGSFilterFile = "" +var _askTemplate = false var _UnidentifiedFile = "" var _AllowedMismatch = int(2) var _AllowsIndel = false @@ -30,7 +31,6 @@ var _ConservedError = false func MultiplexOptionSet(options *getoptions.GetOpt) { options.StringVar(&_NGSFilterFile, "tag-list", _NGSFilterFile, options.Alias("t"), - options.Required("You must provide a tag list file following the NGSFilter format"), options.Description("File name of the NGSFilter file describing PCRs.")) options.BoolVar(&_ConservedError, "keep-errors", _ConservedError, @@ -47,6 +47,10 @@ func MultiplexOptionSet(options *getoptions.GetOpt) { options.Alias("e"), options.Description("Used to specify the number of errors allowed for matching primers.")) + options.BoolVar(&_askTemplate, "template", _askTemplate, + options.Description("Print on the standard output an example of CSV configuration file."), + ) + } func OptionSet(options *getoptions.GetOpt) { @@ -69,6 +73,10 @@ func CLIConservedErrors() bool { return _UnidentifiedFile != "" || _ConservedError } +func CLIHasNGSFilterFile() bool { + return _NGSFilterFile != "" +} + func CLINGSFIlter() (obingslibrary.NGSLibrary, error) { file, err := os.Open(_NGSFilterFile) @@ -85,3 +93,16 @@ func CLINGSFIlter() (obingslibrary.NGSLibrary, error) { return ngsfiler, nil } + +func CLIAskConfigTemplate() bool { + return _askTemplate +} + +func CLIConfigTemplate() string { + return `experiment,sample,sample_tag,forward_primer,reverse_primer +wolf_diet,13a_F730603,aattaac,TTAGATACCCCACTATGC,TAGAACAGGCTCCTCTAG +wolf_diet,15a_F730814,gaagtag:gaatatc,TTAGATACCCCACTATGC,TAGAACAGGCTCCTCTAG +wolf_diet,26a_F040644,gaatatc:-,TTAGATACCCCACTATGC,TAGAACAGGCTCCTCTAG +wolf_diet,29a_F260619,-:-,TTAGATACCCCACTATGC,TAGAACAGGCTCCTCTAG +` +}