diff --git a/cmd/obitools/obiannotate/main.go b/cmd/obitools/obiannotate/main.go index 05aa11d..e9ed979 100644 --- a/cmd/obitools/obiannotate/main.go +++ b/cmd/obitools/obiannotate/main.go @@ -2,13 +2,14 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiannotate" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiannotate" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" ) func main() { @@ -38,7 +39,7 @@ func main() { sequences, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/obitools/obiclean/main.go b/cmd/obitools/obiclean/main.go index 7b012fe..8a29321 100644 --- a/cmd/obitools/obiclean/main.go +++ b/cmd/obitools/obiclean/main.go @@ -5,11 +5,11 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiclean" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiclean" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { diff --git a/cmd/obitools/obicleandb/main.go b/cmd/obitools/obicleandb/main.go index 8ac4b6f..53bc3c8 100644 --- a/cmd/obitools/obicleandb/main.go +++ b/cmd/obitools/obicleandb/main.go @@ -2,12 +2,13 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obicleandb" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicleandb" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { @@ -18,7 +19,7 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/obitools/obicomplement/main.go b/cmd/obitools/obicomplement/main.go index ca0201e..10669ff 100644 --- a/cmd/obitools/obicomplement/main.go +++ b/cmd/obitools/obicomplement/main.go @@ -2,13 +2,14 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { @@ -19,7 +20,7 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/obitools/obiconsensus/main.go b/cmd/obitools/obiconsensus/main.go index 0f964ff..1a8dc28 100644 --- a/cmd/obitools/obiconsensus/main.go +++ b/cmd/obitools/obiconsensus/main.go @@ -5,11 +5,11 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconsensus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconsensus" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { diff --git a/cmd/obitools/obiconvert/main.go b/cmd/obitools/obiconvert/main.go index 9592976..1d13181 100644 --- a/cmd/obitools/obiconvert/main.go +++ b/cmd/obitools/obiconvert/main.go @@ -2,12 +2,13 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { @@ -18,7 +19,7 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/obitools/obicount/main.go b/cmd/obitools/obicount/main.go index acff052..32ee842 100644 --- a/cmd/obitools/obicount/main.go +++ b/cmd/obitools/obicount/main.go @@ -3,12 +3,13 @@ package main import ( "fmt" "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obicount" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicount" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { @@ -37,7 +38,7 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/obitools/obicsv/main.go b/cmd/obitools/obicsv/main.go index 75cbe91..529a391 100644 --- a/cmd/obitools/obicsv/main.go +++ b/cmd/obitools/obicsv/main.go @@ -2,12 +2,13 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obicsv" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicsv" ) func main() { @@ -18,7 +19,7 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/obitools/obidistribute/main.go b/cmd/obitools/obidistribute/main.go index dd41b54..0378168 100644 --- a/cmd/obitools/obidistribute/main.go +++ b/cmd/obitools/obidistribute/main.go @@ -2,13 +2,14 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obidistribute" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obidistribute" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { @@ -19,11 +20,11 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } - obidistribute.DistributeSequence(fs) + obidistribute.CLIDistributeSequence(fs) obiiter.WaitForLastPipe() diff --git a/cmd/obitools/obifind/main.go b/cmd/obitools/obifind/main.go index a0887c9..b51ef3e 100644 --- a/cmd/obitools/obifind/main.go +++ b/cmd/obitools/obifind/main.go @@ -4,8 +4,8 @@ import ( "fmt" "os" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind" ) func main() { diff --git a/cmd/obitools/obigrep/main.go b/cmd/obitools/obigrep/main.go index b2dd4de..a5e63cb 100644 --- a/cmd/obitools/obigrep/main.go +++ b/cmd/obitools/obigrep/main.go @@ -2,13 +2,14 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep" ) func main() { @@ -38,7 +39,7 @@ func main() { sequences, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } selected := obigrep.CLIFilterSequence(sequences) diff --git a/cmd/obitools/obimatrix/main.go b/cmd/obitools/obimatrix/main.go index 790b09e..e5de5ff 100644 --- a/cmd/obitools/obimatrix/main.go +++ b/cmd/obitools/obimatrix/main.go @@ -6,10 +6,10 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obimatrix" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obimatrix" ) func main() { diff --git a/cmd/obitools/obimultiplex/main.go b/cmd/obitools/obimultiplex/main.go index 76a1ddb..82ed566 100644 --- a/cmd/obitools/obimultiplex/main.go +++ b/cmd/obitools/obimultiplex/main.go @@ -2,12 +2,13 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obimultiplex" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obimultiplex" ) func main() { @@ -33,7 +34,7 @@ func main() { sequences, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } amplicons, _ := obimultiplex.IExtractBarcode(sequences) diff --git a/cmd/obitools/obipairing/main.go b/cmd/obitools/obipairing/main.go index 9589510..299cfcf 100644 --- a/cmd/obitools/obipairing/main.go +++ b/cmd/obitools/obipairing/main.go @@ -1,13 +1,14 @@ package main import ( - log "github.com/sirupsen/logrus" "os" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipairing" + log "github.com/sirupsen/logrus" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipairing" ) func main() { diff --git a/cmd/obitools/obipcr/main.go b/cmd/obitools/obipcr/main.go index b7714b1..d70ad37 100644 --- a/cmd/obitools/obipcr/main.go +++ b/cmd/obitools/obipcr/main.go @@ -5,10 +5,10 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipcr" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipcr" ) func main() { diff --git a/cmd/obitools/obirefidx/main.go b/cmd/obitools/obirefidx/main.go index b9fcdd0..9652eb9 100644 --- a/cmd/obitools/obirefidx/main.go +++ b/cmd/obitools/obirefidx/main.go @@ -2,13 +2,14 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obirefidx" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obirefidx" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { @@ -19,7 +20,7 @@ func main() { fs, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } indexed := obirefidx.IndexReferenceDB(fs) diff --git a/cmd/obitools/obisummary/main.go b/cmd/obitools/obisummary/main.go index cfd1c63..dd69026 100644 --- a/cmd/obitools/obisummary/main.go +++ b/cmd/obitools/obisummary/main.go @@ -8,10 +8,10 @@ import ( log "github.com/sirupsen/logrus" "gopkg.in/yaml.v3" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obisummary" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obisummary" ) func main() { diff --git a/cmd/obitools/obitag/main.go b/cmd/obitools/obitag/main.go index 5ead756..9495318 100644 --- a/cmd/obitools/obitag/main.go +++ b/cmd/obitools/obitag/main.go @@ -6,12 +6,12 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obitag" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obitag" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func main() { diff --git a/cmd/obitools/obitagpcr/main.go b/cmd/obitools/obitagpcr/main.go index d89d750..1f5250c 100644 --- a/cmd/obitools/obitagpcr/main.go +++ b/cmd/obitools/obitagpcr/main.go @@ -5,11 +5,11 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipairing" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obitagpcr" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipairing" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obitagpcr" ) func main() { diff --git a/cmd/obitools/obiuniq/main.go b/cmd/obitools/obiuniq/main.go index 1f019be..dbc0ba1 100644 --- a/cmd/obitools/obiuniq/main.go +++ b/cmd/obitools/obiuniq/main.go @@ -2,13 +2,14 @@ package main import ( "os" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiuniq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiuniq" ) func main() { @@ -38,7 +39,7 @@ func main() { sequences, err := obiconvert.CLIReadBioSequences(args...) if err != nil { - log.Errorf("Cannot open file (%v)",err) + log.Errorf("Cannot open file (%v)", err) os.Exit(1) } diff --git a/cmd/test/main.go b/cmd/test/main.go index 6f0c781..219c713 100644 --- a/cmd/test/main.go +++ b/cmd/test/main.go @@ -1,178 +1,38 @@ package main import ( - "fmt" - "log" "os" - "runtime/trace" - "cloudeng.io/algo/lcs" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/goutils" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + log "github.com/sirupsen/logrus" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) -func SESStat(script *lcs.EditScript[byte]) (int, int) { - llcs := 0 - gaps := 0 - extra := 0 - i := 0 - ls := len(*script) - for i < ls { - e := (*script)[i] - // log.Println(i,e,e.Op) - switch e.Op { - case lcs.Identical: // 2 - if gaps > 0 { - extra += gaps - } - llcs++ - gaps = 0 - i++ - case lcs.Delete: // 1 - if i+1 < ls { - en := (*script)[i+1] - if en.Op == lcs.Identical && e.Val == en.Val { - log.Println("Swap delete") - (*script)[i], (*script)[i+1] = (*script)[i+1], (*script)[i] - continue - } - } - gaps-- - i++ - case lcs.Insert: // 0 - if i+1 < ls { - en := (*script)[i+1] - if en.Op == lcs.Identical && e.Val == en.Val { - log.Println("Swap Insert") - (*script)[i], (*script)[i+1] = (*script)[i+1], (*script)[i] - continue - } - } - gaps++ - i++ - } - } - - if gaps > 0 { - extra += gaps - } - - return llcs, extra -} - func main() { + optionParser := obioptions.GenerateOptionParser(obiconvert.OptionSet) + + _, args := optionParser(os.Args) + + fs, err := obiconvert.CLIReadBioSequences(args...) - // Creating a file called cpu.trace. - ftrace, err := os.Create("cpu.trace") if err != nil { - log.Fatal(err) - } - trace.Start(ftrace) - defer trace.Stop() - - // "---CACGATCGTGC-CAGTCAT-GGCTAT" - // "CCCCA-GATCGTGCG-AGTCATGGGCTAT" - - // 00 0 00000000 1111111 111222 - // 01 2 34567889 0123456 789012 - // "CA-C-GATCGTGC-CAGTCAT-GGCTAT" - // "CCCCAGATCGTGCG-AGTCATGGGCTAT" - - //A := "CACGATCGTGCCCCCAGTCATGGCTAT" - A := "AAATGCCCCAGATCGTGC" - B := "TGCCCCAGAT" - - //A = "aaaggaacttggactgaagatttccacagaggttgcgaatgaaaaacacgtattcgaatgcctcaaatacggaatcgatcttgtctg" - A = "aaaggaacttggactgaagatttccacagaggttgcgaatgaaaaacacgtattcgaatgcctcaaatacggaatcgatcttgtctg" - B = "atccggttttacgaaaatgcgtgtggtaggggcttatgaaaacgataatcgaataaaaaagggtaggtgcagagactcaacggaagatgttctaacaaatgg" - // A = "aataa" - // B = "ttttt" - sA := obiseq.NewBioSequence("A", []byte(A), "") - sB := obiseq.NewBioSequence("A", []byte(B), "") - - var x interface{} - - x = sA - - if _, ok := x.(*obiseq.BioSequence); ok { - fmt.Println("Purée") - + log.Errorf("Cannot open file (%v)", err) + os.Exit(1) } - if _, ok := x.(interface{ Length() int }); ok { - fmt.Println("Victoire") - } + frags := obiiter.IFragments( + 1000, + 100, + 10, + 100, + obioptions.CLIParallelWorkers(), + ) - fmt.Println(goutils.Len(x),goutils.Len([]int{1,2,3})) - // M := lcs.NewMyers([]byte(A), []byte(B)) - // fmt.Println(M.LCS()) - // fmt.Println(M.SES()) - // fmt.Println(len(M.LCS())) - // M.SES().FormatHorizontal(os.Stdout, []byte(B)) - // llcs, extra := SESStat(M.SES()) - // nlcs, nali := obialign.LCSScore(sA, sB, sB.Length(), nil) - // fmt.Println(llcs, extra, len(A)+extra) - // fmt.Println(nlcs, nali) - nlcs, nali := obialign.FastLCSScore(sA, sB, sB.Len(), nil) - fmt.Println(nlcs, nali) + obiconvert.CLIWriteBioSequences(fs.Pipe(frags), true) - // option_parser := obioptions.GenerateOptionParser( - // obiconvert.InputOptionSet, - // ) + obiiter.WaitForLastPipe() - // _, args, _ := option_parser(os.Args) - - // fs, _ := obiconvert.ReadBioSequencesBatch(args...) - - // obiclean.IOBIClean(fs) - - // buffer := make([]byte, 0) - // fs.Next() - // s := fs.Get() - // index := obikmer.Index4mer(s, nil, nil) - // for fs.Next() { - // s := fs.Get() - // if s.IsNil() { - // log.Panicln("Read sequence is nil") - // } - // maxshift, maxcount := obikmer.FastShiftFourMer(index, s, buffer) - - // fmt.Printf("Shift : %d Score : %d\n", maxshift, maxcount) - // } - - // A := []byte("ccgcctccttagaacaggctcctctagaaaaccatgtgggatatctaaagaaggcggagatagaaagagcggttcagcaggaatgccgagatggacggcgtgtgacg") - // B := []byte("ccgcctccttagaacaggctcctctagaaaaaccatgtgggatatctaaagaaggcggagatagaaagagcggttcagcaggaatgccgagatggacggcgtgtgacg") - // B := []byte("cgccaccaccgagatctacactctttccctacacgacgctcttccgatctccgcctccttagaacaggctcctctagaaaagcatagtggggtatctaaaggaggcgg") - // sA := obiseq.NewBioSequence("A", A, "") - // sB := obiseq.MakeBioSequence("B", B, "") - - // s, l := obialign.LCSScore(sA, &sB, 2, nil) - - // fmt.Printf("score : %d length : %d error : %d\n", s, l, l-s) - - // s, l = obialign.LCSScore(&sB, &sB, 2, nil) - - // fmt.Printf("score : %d length : %d error : %d\n", s, l, l-s) - - // pat, _ := obiapat.MakeApatPattern("TCCTTCCAACAGGCTCCTC", 3) - // as, _ := obiapat.MakeApatSequence(sA, false) - // fmt.Println(pat.FindAllIndex(as)) - - // file, _ := os.Open("sample/wolf_diet_ngsfilter.txt") - // xxx, _ := obiformats.ReadNGSFilter(file) - // xxx.Compile(2) - // fmt.Printf("%v\n==================\n", xxx) - - // for pp, m := range xxx { - // fmt.Printf("%v %v\n", pp, *m) - // } - - // seqfile, _ := obiformats.ReadFastSeqFromFile("xxxx.fastq") - - // for seqfile.Next() { - // seq := seqfile.Get() - // barcode, _ := xxx.ExtractBarcode(seq, true) - // fmt.Println(obiformats.FormatFasta(barcode, obiformats.FormatFastSeqOBIHeader)) - // } } diff --git a/go.mod b/go.mod index efdc1b0..c09338f 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module git.metabarcoding.org/lecasofts/go/obitools +module git.metabarcoding.org/obitools/obitools4/obitools4 go 1.21 diff --git a/pkg/obialign/alignment.go b/pkg/obialign/alignment.go index 59dc3f9..360146f 100644 --- a/pkg/obialign/alignment.go +++ b/pkg/obialign/alignment.go @@ -9,7 +9,7 @@ import ( "math" "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) // // A pool of byte slices. diff --git a/pkg/obialign/fastlcs.go b/pkg/obialign/fastlcs.go index 66b9da5..789ad87 100644 --- a/pkg/obialign/fastlcs.go +++ b/pkg/obialign/fastlcs.go @@ -1,8 +1,8 @@ package obialign // import ( -// "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" -// "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" +// "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" +// "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" // ) const wsize = 16 diff --git a/pkg/obialign/fastlcsegf.go b/pkg/obialign/fastlcsegf.go index 586e799..e339229 100644 --- a/pkg/obialign/fastlcsegf.go +++ b/pkg/obialign/fastlcsegf.go @@ -1,8 +1,8 @@ package obialign import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) var _iupac = [26]byte{ diff --git a/pkg/obialign/fourbitsencode.go b/pkg/obialign/fourbitsencode.go index 07df30a..ccbb0f6 100644 --- a/pkg/obialign/fourbitsencode.go +++ b/pkg/obialign/fourbitsencode.go @@ -1,7 +1,7 @@ package obialign import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) var _FourBitsBaseCode = []byte{0b0000, diff --git a/pkg/obialign/is_d0_or_d1.go b/pkg/obialign/is_d0_or_d1.go index 96553dd..702e012 100644 --- a/pkg/obialign/is_d0_or_d1.go +++ b/pkg/obialign/is_d0_or_d1.go @@ -1,6 +1,6 @@ package obialign -import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" func abs(x int) int { if x < 0 { diff --git a/pkg/obialign/pairedendalign.go b/pkg/obialign/pairedendalign.go index 025afed..e779043 100644 --- a/pkg/obialign/pairedendalign.go +++ b/pkg/obialign/pairedendalign.go @@ -3,8 +3,8 @@ package obialign import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obikmer" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) type _PeAlignArena struct { diff --git a/pkg/obiapat/pattern.go b/pkg/obiapat/pattern.go index 9d2f176..bf955bb 100644 --- a/pkg/obiapat/pattern.go +++ b/pkg/obiapat/pattern.go @@ -13,9 +13,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) var _MaxPatLen = int(C.MAX_PAT_LEN) diff --git a/pkg/obiapat/pcr.go b/pkg/obiapat/pcr.go index fef27e5..0a9475c 100644 --- a/pkg/obiapat/pcr.go +++ b/pkg/obiapat/pcr.go @@ -3,8 +3,8 @@ package obiapat import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type _Options struct { diff --git a/pkg/obichunk/chunk_on_disk.go b/pkg/obichunk/chunk_on_disk.go index fdfef49..4b7fe61 100644 --- a/pkg/obichunk/chunk_on_disk.go +++ b/pkg/obichunk/chunk_on_disk.go @@ -8,9 +8,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) func tempDir() (string, error) { @@ -42,7 +42,6 @@ func ISequenceChunkOnDisk(iterator obiiter.IBioSequence, return obiiter.NilIBioSequence, err } - newIter := obiiter.MakeIBioSequence() newIter.Add(1) diff --git a/pkg/obichunk/chunks.go b/pkg/obichunk/chunks.go index 00e426b..b2774c4 100644 --- a/pkg/obichunk/chunks.go +++ b/pkg/obichunk/chunks.go @@ -5,8 +5,8 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) func ISequenceChunk(iterator obiiter.IBioSequence, diff --git a/pkg/obichunk/subchunks.go b/pkg/obichunk/subchunks.go index 79ca4fc..2c160f9 100644 --- a/pkg/obichunk/subchunks.go +++ b/pkg/obichunk/subchunks.go @@ -6,9 +6,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) // diff --git a/pkg/obichunk/unique.go b/pkg/obichunk/unique.go index 0a81c86..621e204 100644 --- a/pkg/obichunk/unique.go +++ b/pkg/obichunk/unique.go @@ -5,8 +5,8 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) // Runs dereplication algorithm on a obiiter.IBioSequenceBatch diff --git a/pkg/obicorazick/worker.go b/pkg/obicorazick/worker.go index 1a27d6e..3c5f5d1 100644 --- a/pkg/obicorazick/worker.go +++ b/pkg/obicorazick/worker.go @@ -3,14 +3,14 @@ package obicorazick import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" "github.com/rrethy/ahocorasick" ) func AhoCorazickWorker(slot string, patterns []string) obiseq.SeqWorker { matcher := ahocorasick.CompileStrings(patterns) - + fslot := slot + "_Fwd" rslot := slot + "_Rev" @@ -18,7 +18,7 @@ func AhoCorazickWorker(slot string, patterns []string) obiseq.SeqWorker { matchesF := len(matcher.FindAllByteSlice(s.Sequence())) matchesR := len(matcher.FindAllByteSlice(s.ReverseComplement(false).Sequence())) - log.Debugln("Macthes = ",matchesF,matchesR) + log.Debugln("Macthes = ", matchesF, matchesR) matches := matchesF + matchesR if matches > 0 { s.SetAttribute(slot, matches) diff --git a/pkg/obiformats/batch_of_files_reader.go b/pkg/obiformats/batch_of_files_reader.go index df714da..2b6d4ea 100644 --- a/pkg/obiformats/batch_of_files_reader.go +++ b/pkg/obiformats/batch_of_files_reader.go @@ -3,8 +3,8 @@ package obiformats import ( "log" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) func ReadSequencesBatchFromFiles(filenames []string, @@ -48,8 +48,6 @@ func ReadSequencesBatchFromFiles(filenames []string, log.Printf("Start reading of file : %s", filename) - - for iter.Next() { batch := iter.Get() batchiter.Push(batch.Reorder(nextCounter())) diff --git a/pkg/obiformats/batch_reader_type.go b/pkg/obiformats/batch_reader_type.go index 59aff89..76e968a 100644 --- a/pkg/obiformats/batch_reader_type.go +++ b/pkg/obiformats/batch_reader_type.go @@ -1,5 +1,5 @@ package obiformats -import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" type IBatchReader func(string, ...WithOption) (obiiter.IBioSequence, error) diff --git a/pkg/obiformats/csv_writer.go b/pkg/obiformats/csv_writer.go index ab33f11..d4f28ac 100644 --- a/pkg/obiformats/csv_writer.go +++ b/pkg/obiformats/csv_writer.go @@ -9,10 +9,10 @@ import ( "sync" "time" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obiformats/dispatcher.go b/pkg/obiformats/dispatcher.go index e626c16..de4c051 100644 --- a/pkg/obiformats/dispatcher.go +++ b/pkg/obiformats/dispatcher.go @@ -10,7 +10,7 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" ) type SequenceBatchWriterToFile func(iterator obiiter.IBioSequence, diff --git a/pkg/obiformats/ecopcr_read.go b/pkg/obiformats/ecopcr_read.go index 2b1ef0f..62b0ceb 100644 --- a/pkg/obiformats/ecopcr_read.go +++ b/pkg/obiformats/ecopcr_read.go @@ -13,9 +13,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type __ecopcr_file__ struct { diff --git a/pkg/obiformats/embl_read.go b/pkg/obiformats/embl_read.go index c184418..31642e7 100644 --- a/pkg/obiformats/embl_read.go +++ b/pkg/obiformats/embl_read.go @@ -10,9 +10,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) var _FileChunkSize = 1 << 28 diff --git a/pkg/obiformats/empty_file.go b/pkg/obiformats/empty_file.go index 8774631..14e7187 100644 --- a/pkg/obiformats/empty_file.go +++ b/pkg/obiformats/empty_file.go @@ -1,6 +1,6 @@ package obiformats -import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" func ReadEmptyFile(options ...WithOption) (obiiter.IBioSequence, error) { out := obiiter.MakeIBioSequence() diff --git a/pkg/obiformats/fastaseq_read.go b/pkg/obiformats/fastaseq_read.go index 38a5222..7a3e642 100644 --- a/pkg/obiformats/fastaseq_read.go +++ b/pkg/obiformats/fastaseq_read.go @@ -7,10 +7,10 @@ import ( "os" "path" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "golang.org/x/exp/slices" log "github.com/sirupsen/logrus" diff --git a/pkg/obiformats/fastqseq_read.go b/pkg/obiformats/fastqseq_read.go index db4f7fa..b5ba76d 100644 --- a/pkg/obiformats/fastqseq_read.go +++ b/pkg/obiformats/fastqseq_read.go @@ -6,10 +6,10 @@ import ( "os" "path" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" "golang.org/x/exp/slices" ) diff --git a/pkg/obiformats/fastseq_header.go b/pkg/obiformats/fastseq_header.go index 77b5415..c231eec 100644 --- a/pkg/obiformats/fastseq_header.go +++ b/pkg/obiformats/fastseq_header.go @@ -3,8 +3,8 @@ package obiformats import ( "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) // ParseGuessedFastSeqHeader parses the guessed fast sequence header. diff --git a/pkg/obiformats/fastseq_interface.go b/pkg/obiformats/fastseq_interface.go index af54d3e..12ce5cf 100644 --- a/pkg/obiformats/fastseq_interface.go +++ b/pkg/obiformats/fastseq_interface.go @@ -1,5 +1,5 @@ package obiformats -import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" type FormatHeader func(sequence *obiseq.BioSequence) string diff --git a/pkg/obiformats/fastseq_json_header.go b/pkg/obiformats/fastseq_json_header.go index 3fddf8d..72f92a3 100644 --- a/pkg/obiformats/fastseq_json_header.go +++ b/pkg/obiformats/fastseq_json_header.go @@ -6,8 +6,8 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/goccy/go-json" ) diff --git a/pkg/obiformats/fastseq_obi_header.go b/pkg/obiformats/fastseq_obi_header.go index 8ee1725..175e522 100644 --- a/pkg/obiformats/fastseq_obi_header.go +++ b/pkg/obiformats/fastseq_obi_header.go @@ -9,8 +9,8 @@ import ( "strconv" "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/goccy/go-json" ) diff --git a/pkg/obiformats/fastseq_read.go b/pkg/obiformats/fastseq_read.go index 1493181..7a9c2c6 100644 --- a/pkg/obiformats/fastseq_read.go +++ b/pkg/obiformats/fastseq_read.go @@ -14,10 +14,10 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) func _FastseqReader(source string, diff --git a/pkg/obiformats/fastseq_write_fasta.go b/pkg/obiformats/fastseq_write_fasta.go index 5b48a97..9856431 100644 --- a/pkg/obiformats/fastseq_write_fasta.go +++ b/pkg/obiformats/fastseq_write_fasta.go @@ -12,9 +12,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) // min returns the minimum of two integers. diff --git a/pkg/obiformats/fastseq_write_fastq.go b/pkg/obiformats/fastseq_write_fastq.go index 7eabea1..54741ca 100644 --- a/pkg/obiformats/fastseq_write_fastq.go +++ b/pkg/obiformats/fastseq_write_fastq.go @@ -10,10 +10,10 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) // The function FormatFastq takes a BioSequence object, a quality shift value, and a header formatter diff --git a/pkg/obiformats/genbank_read.go b/pkg/obiformats/genbank_read.go index 7e54874..9a267c5 100644 --- a/pkg/obiformats/genbank_read.go +++ b/pkg/obiformats/genbank_read.go @@ -11,9 +11,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type gbstate int diff --git a/pkg/obiformats/json_writer.go b/pkg/obiformats/json_writer.go index 4d8009d..9814247 100644 --- a/pkg/obiformats/json_writer.go +++ b/pkg/obiformats/json_writer.go @@ -11,9 +11,9 @@ import ( "sync" "time" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obiformats/ncbitaxdump/read.go b/pkg/obiformats/ncbitaxdump/read.go index 9e0cd9c..0df57d2 100644 --- a/pkg/obiformats/ncbitaxdump/read.go +++ b/pkg/obiformats/ncbitaxdump/read.go @@ -12,7 +12,7 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" ) func loadNodeTable(reader io.Reader, taxonomy *obitax.Taxonomy) { diff --git a/pkg/obiformats/ngsfilter_read.go b/pkg/obiformats/ngsfilter_read.go index c3ad2c8..59ddb24 100644 --- a/pkg/obiformats/ngsfilter_read.go +++ b/pkg/obiformats/ngsfilter_read.go @@ -6,8 +6,8 @@ import ( "io" "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obingslibrary" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obingslibrary" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) func _readLines(reader io.Reader) []string { diff --git a/pkg/obiformats/options.go b/pkg/obiformats/options.go index b180bb3..bb7a72e 100644 --- a/pkg/obiformats/options.go +++ b/pkg/obiformats/options.go @@ -1,8 +1,8 @@ package obiformats import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) type __options__ struct { diff --git a/pkg/obiformats/universal_read.go b/pkg/obiformats/universal_read.go index d0f75bf..157bb12 100644 --- a/pkg/obiformats/universal_read.go +++ b/pkg/obiformats/universal_read.go @@ -11,8 +11,8 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) // OBIMimeTypeGuesser is a function that takes an io.Reader as input and guesses the MIME type of the data. diff --git a/pkg/obiformats/universal_write.go b/pkg/obiformats/universal_write.go index f286521..567b4c7 100644 --- a/pkg/obiformats/universal_write.go +++ b/pkg/obiformats/universal_write.go @@ -7,7 +7,7 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" ) func WriteSequence(iterator obiiter.IBioSequence, diff --git a/pkg/obiiter/batch.go b/pkg/obiiter/batch.go index bf7ac2f..17f53eb 100644 --- a/pkg/obiiter/batch.go +++ b/pkg/obiiter/batch.go @@ -1,6 +1,6 @@ package obiiter -import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" type BioSequenceBatch struct { slice obiseq.BioSequenceSlice diff --git a/pkg/obiiter/batchiterator.go b/pkg/obiiter/batchiterator.go index e9bce70..1985198 100644 --- a/pkg/obiiter/batchiterator.go +++ b/pkg/obiiter/batchiterator.go @@ -10,9 +10,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/tevino/abool/v2" ) diff --git a/pkg/obiiter/distribute.go b/pkg/obiiter/distribute.go index bba3f79..ec540eb 100644 --- a/pkg/obiiter/distribute.go +++ b/pkg/obiiter/distribute.go @@ -4,7 +4,7 @@ import ( "fmt" "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) type IDistribute struct { @@ -46,8 +46,6 @@ func (iterator IBioSequence) Distribute(class *obiseq.BioSequenceClassifier, siz batchsize = sizes[0] } - - jobDone := sync.WaitGroup{} lock := sync.Mutex{} diff --git a/pkg/obiiter/fragment.go b/pkg/obiiter/fragment.go index 785e4d9..a673ce7 100644 --- a/pkg/obiiter/fragment.go +++ b/pkg/obiiter/fragment.go @@ -3,8 +3,8 @@ package obiiter import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) func IFragments(minsize, length, overlap, size, nworkers int) Pipeable { @@ -25,19 +25,19 @@ func IFragments(minsize, length, overlap, size, nworkers int) Pipeable { news := obiseq.MakeBioSequenceSlice() sl := iterator.Get() for _, s := range sl.Slice() { - + if s.Len() <= minsize { news = append(news, s) } else { for i := 0; i < s.Len(); i += step { end := obiutils.MinInt(i+length, s.Len()) - fusion:=false + fusion := false if (s.Len() - end) < step { end = s.Len() fusion = true } frg, err := s.Subsequence(i, end, false) - + if err != nil { log.Panicln(err) } diff --git a/pkg/obiiter/merge.go b/pkg/obiiter/merge.go index 8a24d7a..d74c83a 100644 --- a/pkg/obiiter/merge.go +++ b/pkg/obiiter/merge.go @@ -1,6 +1,6 @@ package obiiter -import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" func (iterator IBioSequence) IMergeSequenceBatch(na string, statsOn []string, sizes ...int) IBioSequence { batchsize := 100 diff --git a/pkg/obiiter/workers.go b/pkg/obiiter/workers.go index 1bd90a4..6bf508e 100644 --- a/pkg/obiiter/workers.go +++ b/pkg/obiiter/workers.go @@ -3,8 +3,8 @@ package obiiter import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) // That method allows for applying a SeqWorker function on every sequences. @@ -56,6 +56,16 @@ func (iterator IBioSequence) MakeIWorker(worker obiseq.SeqWorker, sizes ...int) return newIter } +// MakeIConditionalWorker applies a given worker function to each sequence in the iterator that satisfies the given predicate. +// It creates a new iterator with the modified sequences and returns it. +// +// Parameters: +// - predicate: A function that takes a sequence and returns a boolean value indicating whether the sequence satisfies a certain condition. +// - worker: A function that takes a sequence and returns a modified version of the sequence. +// - sizes: Optional. One or more integers representing the number of workers to be used for parallel processing. If not provided, the number of workers will be determined by the obioptions.CLIReadParallelWorkers() function. +// +// Return: +// - newIter: A new IBioSequence iterator with the modified sequences. func (iterator IBioSequence) MakeIConditionalWorker(predicate obiseq.SequencePredicate, worker obiseq.SeqWorker, sizes ...int) IBioSequence { nworkers := obioptions.CLIReadParallelWorkers() @@ -100,6 +110,16 @@ func (iterator IBioSequence) MakeIConditionalWorker(predicate obiseq.SequencePre return newIter } +// MakeISliceWorker applies a SeqSliceWorker function to each slice in the IBioSequence iterator, +// creating a new IBioSequence with the modified slices. +// +// The worker function takes a slice as input and returns a modified slice. It is applied to each +// slice in the iterator. +// +// The sizes argument is optional and specifies the number of workers to use. If sizes is not +// provided, the default number of workers is used. +// +// The function returns a new IBioSequence containing the modified slices. func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, sizes ...int) IBioSequence { nworkers := obioptions.CLIParallelWorkers() @@ -119,12 +139,12 @@ func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, size f := func(iterator IBioSequence) { for iterator.Next() { batch := iterator.Get() - bs := len(batch.slice) batch.slice = worker(batch.slice) - if bs != len(batch.slice) { - log.Warnf("Input size : %d output %d", bs, len(batch.slice)) + if batch.slice.Len() > 0 { + newIter.Push(batch) + } else { + batch.Recycle(false) } - newIter.Push(batch) } newIter.Done() } @@ -142,6 +162,17 @@ func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, size return newIter } +// WorkerPipe is a function that takes a SeqWorker and a variadic list of sizes as parameters and returns a Pipeable. +// +// The WorkerPipe function creates a closure that takes an IBioSequence iterator as a parameter and returns an IBioSequence. +// Inside the closure, the MakeIWorker method of the iterator is called with the provided worker and sizes, and the result is returned. +// +// Parameters: +// - worker: A SeqWorker object that represents the worker to be used in the closure. +// - sizes: A variadic list of int values that represents the sizes to be used in the MakeIWorker method. +// +// Return: +// - f: A Pipeable object that represents the closure created by the WorkerPipe function. func WorkerPipe(worker obiseq.SeqWorker, sizes ...int) Pipeable { f := func(iterator IBioSequence) IBioSequence { return iterator.MakeIWorker(worker, sizes...) @@ -150,6 +181,11 @@ func WorkerPipe(worker obiseq.SeqWorker, sizes ...int) Pipeable { return f } +// SliceWorkerPipe creates a Pipeable function that applies a SeqSliceWorker to an iterator. +// +// The worker parameter is the SeqSliceWorker to be applied. +// The sizes parameter is a variadic parameter representing the sizes of the slices. +// The function returns a Pipeable function that applies the SeqSliceWorker to the iterator. func SliceWorkerPipe(worker obiseq.SeqSliceWorker, sizes ...int) Pipeable { f := func(iterator IBioSequence) IBioSequence { return iterator.MakeISliceWorker(worker, sizes...) diff --git a/pkg/obikmer/counting.go b/pkg/obikmer/counting.go index ec80b90..bb5f22a 100644 --- a/pkg/obikmer/counting.go +++ b/pkg/obikmer/counting.go @@ -3,8 +3,8 @@ package obikmer import ( "math" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type Table4mer [256]uint16 diff --git a/pkg/obikmer/debruijn.go b/pkg/obikmer/debruijn.go index 5d7db7c..a4b968f 100644 --- a/pkg/obikmer/debruijn.go +++ b/pkg/obikmer/debruijn.go @@ -6,7 +6,7 @@ import ( "math" "math/bits" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" "github.com/daichi-m/go18ds/sets/linkedhashset" "github.com/daichi-m/go18ds/stacks/arraystack" ) diff --git a/pkg/obikmer/encodefourmer.go b/pkg/obikmer/encodefourmer.go index 3074923..9836390 100644 --- a/pkg/obikmer/encodefourmer.go +++ b/pkg/obikmer/encodefourmer.go @@ -1,7 +1,7 @@ package obikmer import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) var __single_base_code__ = []byte{0, diff --git a/pkg/obingslibrary/match.go b/pkg/obingslibrary/match.go index 995ef00..a381771 100644 --- a/pkg/obingslibrary/match.go +++ b/pkg/obingslibrary/match.go @@ -7,9 +7,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiapat" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type DemultiplexMatch struct { diff --git a/pkg/obingslibrary/ngslibrary.go b/pkg/obingslibrary/ngslibrary.go index 8cb5785..31ca20f 100644 --- a/pkg/obingslibrary/ngslibrary.go +++ b/pkg/obingslibrary/ngslibrary.go @@ -1,8 +1,8 @@ package obingslibrary import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiapat" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) type PrimerPair struct { diff --git a/pkg/obingslibrary/worker.go b/pkg/obingslibrary/worker.go index 0ab887d..197407d 100644 --- a/pkg/obingslibrary/worker.go +++ b/pkg/obingslibrary/worker.go @@ -1,7 +1,7 @@ package obingslibrary import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) type _Options struct { @@ -159,7 +159,7 @@ func ExtractBarcodeSlice(ngslibrary NGSLibrary, opt := MakeOptions(options) - ngslibrary.Compile(opt.AllowedMismatch(),opt.AllowsIndel()) + ngslibrary.Compile(opt.AllowedMismatch(), opt.AllowsIndel()) return _ExtractBarcodeSlice(ngslibrary, sequences, opt) } @@ -169,7 +169,7 @@ func ExtractBarcodeSliceWorker(ngslibrary NGSLibrary, opt := MakeOptions(options) - ngslibrary.Compile(opt.AllowedMismatch(),opt.AllowsIndel()) + ngslibrary.Compile(opt.AllowedMismatch(), opt.AllowsIndel()) worker := func(sequences obiseq.BioSequenceSlice) obiseq.BioSequenceSlice { return _ExtractBarcodeSlice(ngslibrary, sequences, opt) diff --git a/pkg/obiseq/attributes.go b/pkg/obiseq/attributes.go index 12c9ddb..254437d 100644 --- a/pkg/obiseq/attributes.go +++ b/pkg/obiseq/attributes.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obiseq/biosequence.go b/pkg/obiseq/biosequence.go index 973bbce..5468a3f 100644 --- a/pkg/obiseq/biosequence.go +++ b/pkg/obiseq/biosequence.go @@ -15,8 +15,8 @@ import ( "sync" "sync/atomic" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obiseq/biosequenceslice.go b/pkg/obiseq/biosequenceslice.go index 898018a..85bc41b 100644 --- a/pkg/obiseq/biosequenceslice.go +++ b/pkg/obiseq/biosequenceslice.go @@ -3,7 +3,7 @@ package obiseq import ( "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" "golang.org/x/exp/slices" ) diff --git a/pkg/obiseq/class.go b/pkg/obiseq/class.go index 5120d37..10d1247 100644 --- a/pkg/obiseq/class.go +++ b/pkg/obiseq/class.go @@ -6,7 +6,7 @@ import ( "strconv" "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obiseq/language.go b/pkg/obiseq/language.go index f718043..ed54e41 100644 --- a/pkg/obiseq/language.go +++ b/pkg/obiseq/language.go @@ -6,7 +6,7 @@ import ( "reflect" "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/PaesslerAG/gval" ) diff --git a/pkg/obiseq/merge.go b/pkg/obiseq/merge.go index ca1ea41..e62e6e2 100644 --- a/pkg/obiseq/merge.go +++ b/pkg/obiseq/merge.go @@ -5,7 +5,7 @@ import ( "reflect" "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obiseq/pool.go b/pkg/obiseq/pool.go index 096f838..204518b 100644 --- a/pkg/obiseq/pool.go +++ b/pkg/obiseq/pool.go @@ -4,7 +4,7 @@ import ( "log" "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) var _BioSequenceByteSlicePool = sync.Pool{ diff --git a/pkg/obisuffix/suffix_array.go b/pkg/obisuffix/suffix_array.go index ae7d727..ae1f5f4 100644 --- a/pkg/obisuffix/suffix_array.go +++ b/pkg/obisuffix/suffix_array.go @@ -5,8 +5,8 @@ import ( "fmt" "sort" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type Suffix struct { diff --git a/pkg/obitax/lca.go b/pkg/obitax/lca.go index e621ce4..f7439e9 100644 --- a/pkg/obitax/lca.go +++ b/pkg/obitax/lca.go @@ -5,8 +5,8 @@ import ( "strconv" "strings" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obitax/sequence_methods.go b/pkg/obitax/sequence_methods.go index 4e78edf..8a4693a 100644 --- a/pkg/obitax/sequence_methods.go +++ b/pkg/obitax/sequence_methods.go @@ -1,7 +1,7 @@ package obitax import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) // Setting the taxon at a given rank for a given sequence. diff --git a/pkg/obitax/sequence_predicate.go b/pkg/obitax/sequence_predicate.go index b65e362..b7381b2 100644 --- a/pkg/obitax/sequence_predicate.go +++ b/pkg/obitax/sequence_predicate.go @@ -3,8 +3,8 @@ package obitax import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) func (taxonomy *Taxonomy) IsAValidTaxon(withAutoCorrection ...bool) obiseq.SequencePredicate { diff --git a/pkg/obitax/sequence_workers.go b/pkg/obitax/sequence_workers.go index ee9b690..e0fb40f 100644 --- a/pkg/obitax/sequence_workers.go +++ b/pkg/obitax/sequence_workers.go @@ -1,8 +1,8 @@ package obitax import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obitools/obiannotate/obiannotate.go b/pkg/obitools/obiannotate/obiannotate.go index 66ee9f3..dd91852 100644 --- a/pkg/obitools/obiannotate/obiannotate.go +++ b/pkg/obitools/obiannotate/obiannotate.go @@ -1,14 +1,17 @@ package obiannotate import ( + "fmt" + log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obicorazick" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obicorazick" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep" ) func DeleteAttributesWorker(toBeDeleted []string) obiseq.SeqWorker { @@ -22,14 +25,69 @@ func DeleteAttributesWorker(toBeDeleted []string) obiseq.SeqWorker { return f } -// func MatchPatternWorker(pattern string, errormax int, allowsIndel bool) obiseq.SeqWorker { -// pat, err := obiapat.MakeApatPattern(pattern, errormax, allowsIndel) -// f := func(s *obiseq.BioSequence) *obiseq.BioSequence { -// apats := obiapat.MakeApatSequence(s, false) -// pat.BestMatch(apats, 0) -// return s -// } -// } +func MatchPatternWorker(pattern, name string, errormax int, allowsIndel bool) obiseq.SeqWorker { + pat, err := obiapat.MakeApatPattern(pattern, errormax, allowsIndel) + if err != nil { + log.Fatalf("error in compiling pattern (%s) : %v", pattern, err) + } + + cpat, err := pat.ReverseComplement() + + if err != nil { + log.Fatalf("error in reverse-complementing pattern (%s) : %v", pattern, err) + } + + slot := "pattern" + if name != "pattern" && name != "" { + slot = fmt.Sprintf("%s_pattern", name) + } else { + name = "pattern" + } + + slot_match := fmt.Sprintf("%s_match", name) + slot_error := fmt.Sprintf("%s_error", name) + slot_location := fmt.Sprintf("%s_location", name) + + f := func(s *obiseq.BioSequence) *obiseq.BioSequence { + apats, err := obiapat.MakeApatSequence(s, false) + if err != nil { + log.Fatalf("error in preparing sequence %s : %v", s.Id(), err) + } + + start, end, nerr, matched := pat.BestMatch(apats, 0, s.Len()) + + if matched { + annot := s.Annotations() + annot[slot] = pattern + match, err := s.Subsequence(start, end, false) + if err != nil { + log.Fatalf("Error in extracting pattern of sequence %s [%d;%d[ : %v", + s.Id(), start, end, err) + } + annot[slot_match] = match.String() + annot[slot_error] = nerr + annot[slot_location] = fmt.Sprintf("%d..%d", start+1, end) + } else { + start, end, nerr, matched := cpat.BestMatch(apats, 0, s.Len()) + + if matched { + annot := s.Annotations() + annot[slot] = pattern + match, err := s.Subsequence(start, end, false) + if err != nil { + log.Fatalf("Error in extracting pattern of sequence %s [%d;%d[ : %v", + s.Id(), start, end, err) + } + annot[slot_match] = match.ReverseComplement(true).String() + annot[slot_error] = nerr + annot[slot_location] = fmt.Sprintf("complement(%d..%d)", start+1, end) + } + } + return s + } + + return f +} func ToBeKeptAttributesWorker(toBeKept []string) obiseq.SeqWorker { @@ -229,6 +287,14 @@ func CLIAnnotationWorker() obiseq.SeqWorker { annotator = annotator.ChainWorkers(w) } + if CLIHasPattern() { + log.Infof("Match pattern %s with %d error", CLIPattern(), CLIPatternError()) + w := MatchPatternWorker(CLIPattern(), CLIHasPatternName(), + CLIPatternError(), CLIPatternInDels()) + + annotator = annotator.ChainWorkers(w) + } + return annotator } diff --git a/pkg/obitools/obiannotate/options.go b/pkg/obitools/obiannotate/options.go index 8737999..6ed3ad4 100644 --- a/pkg/obitools/obiannotate/options.go +++ b/pkg/obitools/obiannotate/options.go @@ -7,8 +7,8 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep" "github.com/DavidGamba/go-getoptions" ) @@ -24,6 +24,9 @@ var _setSeqLength = false var _uniqueID = false var _ahoCorazick = "" var _pattern = "" +var _pattern_error = 0 +var _pattern_indel = false +var _pattern_name = "pattern" var _lcaSlot = "" var _lcaError = 0.0 var _setId = "" @@ -52,6 +55,18 @@ func SequenceAnnotationOptionSet(options *getoptions.GetOpt) { "to the sequence.", )) + options.StringVar(&_pattern_name, "pattern-name", _pattern_name, + options.Description("specify the name to use as prefix for the slots reporting the match"), + ) + + options.IntVar(&_pattern_error, "pattern-error", _pattern_error, + options.Description("Maximum number of allowed error during pattern matching"), + ) + + options.BoolVar(&_pattern_indel, "allows-indels", _pattern_indel, + options.Description("Allows for indel during pattern matching"), + ) + options.StringVar(&_lcaSlot, "add-lca-in", _lcaSlot, options.ArgName("SLOT_NAME"), options.Description("From the taxonomic annotation of the sequence (taxid slot or merged_taxid slot), "+ @@ -264,3 +279,23 @@ func CLIHasCut() bool { return f != 0 && t != 0 } + +func CLIPattern() string { + return _pattern +} + +func CLIHasPattern() bool { + return _pattern != "" +} + +func CLIHasPatternName() string { + return _pattern_name +} + +func CLIPatternError() int { + return _pattern_error +} + +func CLIPatternInDels() bool { + return _pattern_indel +} diff --git a/pkg/obitools/obiclean/graph.go b/pkg/obitools/obiclean/graph.go index 6c9e54a..314ed3e 100644 --- a/pkg/obitools/obiclean/graph.go +++ b/pkg/obitools/obiclean/graph.go @@ -12,7 +12,7 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" "github.com/schollz/progressbar/v3" ) diff --git a/pkg/obitools/obiclean/obiclean.go b/pkg/obitools/obiclean/obiclean.go index f3cb685..f993c11 100644 --- a/pkg/obitools/obiclean/obiclean.go +++ b/pkg/obitools/obiclean/obiclean.go @@ -4,10 +4,10 @@ import ( "fmt" "os" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/schollz/progressbar/v3" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obitools/obiclean/options.go b/pkg/obitools/obiclean/options.go index c7fb042..1bf5952 100644 --- a/pkg/obitools/obiclean/options.go +++ b/pkg/obitools/obiclean/options.go @@ -1,7 +1,7 @@ package obiclean import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obicleandb/obicleandb.go b/pkg/obitools/obicleandb/obicleandb.go index 64e3752..863712f 100644 --- a/pkg/obitools/obicleandb/obicleandb.go +++ b/pkg/obitools/obicleandb/obicleandb.go @@ -3,11 +3,11 @@ package obicleandb import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obichunk" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obichunk" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep" ) func ICleanDB(itertator obiiter.IBioSequence) obiiter.IBioSequence { diff --git a/pkg/obitools/obicleandb/options.go b/pkg/obitools/obicleandb/options.go index 6b7d35f..886ae19 100644 --- a/pkg/obitools/obicleandb/options.go +++ b/pkg/obitools/obicleandb/options.go @@ -1,12 +1,11 @@ package obicleandb import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep" "github.com/DavidGamba/go-getoptions" ) - var _UpdateTaxids = false func ObicleanDBOptionSet(options *getoptions.GetOpt) { @@ -24,4 +23,4 @@ func OptionSet(options *getoptions.GetOpt) { func CLIUpdateTaxids() bool { return _UpdateTaxids -} \ No newline at end of file +} diff --git a/pkg/obitools/obiconsensus/obiconsensus.go b/pkg/obitools/obiconsensus/obiconsensus.go index 2c33df4..39d4176 100644 --- a/pkg/obitools/obiconsensus/obiconsensus.go +++ b/pkg/obitools/obiconsensus/obiconsensus.go @@ -8,11 +8,11 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obikmer" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obisuffix" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisuffix" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) func BuildConsensus(seqs obiseq.BioSequenceSlice, @@ -83,20 +83,20 @@ func BuildConsensus(seqs obiseq.BioSequenceSlice, } graph.FilterMin(threshold) - + log.Printf("Graph size : %d\n", graph.Len()) if save_graph { - + file, err := os.Create(path.Join(dirname, fmt.Sprintf("%s.gml", seqs[0].Source()))) - + if err != nil { fmt.Println(err) } else { file.WriteString(graph.Gml()) file.Close() - } + } } seq, err := graph.LongestConsensus(seqs[0].Source()) @@ -122,11 +122,11 @@ func Consensus(iterator obiiter.IBioSequence) obiiter.IBioSequence { // path does not exist or is not directory os.RemoveAll(dirname) err := os.Mkdir(dirname, 0755) - + if err != nil { log.Panicf("Cannot create directory %s for saving graphs", dirname) } - } + } } newIter.Add(1) diff --git a/pkg/obitools/obiconsensus/options.go b/pkg/obitools/obiconsensus/options.go index 6223c11..098784e 100644 --- a/pkg/obitools/obiconsensus/options.go +++ b/pkg/obitools/obiconsensus/options.go @@ -1,7 +1,7 @@ package obiconsensus import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) @@ -66,4 +66,4 @@ func CLIKmerDepth() float64 { func CLIThreshold() float64 { return _threshold -} \ No newline at end of file +} diff --git a/pkg/obitools/obiconvert/sequence_reader.go b/pkg/obitools/obiconvert/sequence_reader.go index fafc9ba..99ddff7 100644 --- a/pkg/obitools/obiconvert/sequence_reader.go +++ b/pkg/obitools/obiconvert/sequence_reader.go @@ -8,9 +8,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func _ExpandListOfFiles(check_ext bool, filenames ...string) ([]string, error) { diff --git a/pkg/obitools/obiconvert/sequence_writer.go b/pkg/obitools/obiconvert/sequence_writer.go index 5cdaa5b..308a6c9 100644 --- a/pkg/obitools/obiconvert/sequence_writer.go +++ b/pkg/obitools/obiconvert/sequence_writer.go @@ -6,9 +6,9 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func BuildPairedFileNames(filename string) (string, string) { diff --git a/pkg/obitools/obicsv/obicsv.go b/pkg/obitools/obicsv/obicsv.go index ff85013..980b9b6 100644 --- a/pkg/obitools/obicsv/obicsv.go +++ b/pkg/obitools/obicsv/obicsv.go @@ -3,10 +3,10 @@ package obicsv import ( "log" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" ) func CLIWriteCSV(iterator obiiter.IBioSequence, diff --git a/pkg/obitools/obicsv/options.go b/pkg/obitools/obicsv/options.go index aeedab1..b710f89 100644 --- a/pkg/obitools/obicsv/options.go +++ b/pkg/obitools/obicsv/options.go @@ -1,8 +1,8 @@ package obicsv import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obidistribute/distribute.go b/pkg/obitools/obidistribute/distribute.go index aa95472..42b9405 100644 --- a/pkg/obitools/obidistribute/distribute.go +++ b/pkg/obitools/obidistribute/distribute.go @@ -3,13 +3,13 @@ package obidistribute import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" ) -func DistributeSequence(sequences obiiter.IBioSequence) { +func CLIDistributeSequence(sequences obiiter.IBioSequence) { opts := make([]obiformats.WithOption, 0, 10) diff --git a/pkg/obitools/obidistribute/options.go b/pkg/obitools/obidistribute/options.go index 0214b18..f37a1af 100644 --- a/pkg/obitools/obidistribute/options.go +++ b/pkg/obitools/obidistribute/options.go @@ -6,8 +6,8 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) @@ -37,7 +37,7 @@ func DistributeOptionSet(options *getoptions.GetOpt) { options.Alias("d"), options.Description("The name of a tag annotating the sequences. "+ "The name must corresponds to a string, a integer or a boolean value. "+ - "That value will be used to dispatch sequences amoong the different directory " + + "That value will be used to dispatch sequences amoong the different directory "+ "in conjunction with the -c|--classifier options")) options.StringVar(&_NAValue, "na-value", _NAValue, @@ -66,11 +66,10 @@ func CLIAppendSequences() bool { return _append } - func CLISequenceClassifier() *obiseq.BioSequenceClassifier { switch { case _SequenceClassifierTag != "": - return obiseq.DualAnnotationClassifier(_SequenceClassifierTag,_DirectoryTag, _NAValue) + return obiseq.DualAnnotationClassifier(_SequenceClassifierTag, _DirectoryTag, _NAValue) case _BatchCount > 0: return obiseq.RotateClassifier(_BatchCount) case _HashSize > 0: diff --git a/pkg/obitools/obifind/iterator.go b/pkg/obitools/obifind/iterator.go index 0b995b3..5884a2f 100644 --- a/pkg/obitools/obifind/iterator.go +++ b/pkg/obitools/obifind/iterator.go @@ -4,7 +4,7 @@ import ( "bytes" "fmt" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" ) func IFilterRankRestriction() func(*obitax.ITaxonSet) *obitax.ITaxonSet { diff --git a/pkg/obitools/obifind/options.go b/pkg/obitools/obifind/options.go index 9872a94..18f5a04 100644 --- a/pkg/obitools/obifind/options.go +++ b/pkg/obitools/obifind/options.go @@ -3,8 +3,8 @@ package obifind import ( "errors" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats/ncbitaxdump" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats/ncbitaxdump" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obigrep/grep.go b/pkg/obitools/obigrep/grep.go index a358061..fdaa188 100644 --- a/pkg/obitools/obigrep/grep.go +++ b/pkg/obitools/obigrep/grep.go @@ -3,9 +3,9 @@ package obigrep import ( "log" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" ) func CLIFilterSequence(iterator obiiter.IBioSequence) obiiter.IBioSequence { diff --git a/pkg/obitools/obigrep/options.go b/pkg/obitools/obigrep/options.go index 932bf5a..5f393f4 100644 --- a/pkg/obitools/obigrep/options.go +++ b/pkg/obitools/obigrep/options.go @@ -5,11 +5,11 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats/ncbitaxdump" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats/ncbitaxdump" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obimatrix/obimatrix.go b/pkg/obitools/obimatrix/obimatrix.go index 831d5f8..176e680 100644 --- a/pkg/obitools/obimatrix/obimatrix.go +++ b/pkg/obitools/obimatrix/obimatrix.go @@ -2,15 +2,16 @@ package obimatrix import ( "encoding/csv" - log "github.com/sirupsen/logrus" "os" "sort" "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + log "github.com/sirupsen/logrus" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "golang.org/x/exp/maps" ) diff --git a/pkg/obitools/obimatrix/options.go b/pkg/obitools/obimatrix/options.go index da4c766..5c2216e 100644 --- a/pkg/obitools/obimatrix/options.go +++ b/pkg/obitools/obimatrix/options.go @@ -5,7 +5,7 @@ package obimatrix import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obimultiplex/demultiplex.go b/pkg/obitools/obimultiplex/demultiplex.go index fee1408..3cb696e 100644 --- a/pkg/obitools/obimultiplex/demultiplex.go +++ b/pkg/obitools/obimultiplex/demultiplex.go @@ -3,11 +3,11 @@ package obimultiplex import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obingslibrary" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obingslibrary" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" ) func IExtractBarcode(iterator obiiter.IBioSequence) (obiiter.IBioSequence, error) { diff --git a/pkg/obitools/obimultiplex/options.go b/pkg/obitools/obimultiplex/options.go index f0e2676..a054764 100644 --- a/pkg/obitools/obimultiplex/options.go +++ b/pkg/obitools/obimultiplex/options.go @@ -4,9 +4,9 @@ import ( "fmt" "os" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obingslibrary" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obingslibrary" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) @@ -21,7 +21,7 @@ var _ConservedError = false // The function adds to a CLI every options proposed to the user // to tune the parametters of the PCR simulation algorithm. // -// Parameters +// # Parameters // // - option : is a pointer to a getoptions.GetOpt instance normaly // produced by the @@ -34,7 +34,7 @@ func MultiplexOptionSet(options *getoptions.GetOpt) { options.BoolVar(&_ConservedError, "keep-errors", _ConservedError, options.Description("Prints symbol counts.")) - options.BoolVar(&_AllowsIndel, "with-indels", _AllowsIndel, + options.BoolVar(&_AllowsIndel, "with-indels", _AllowsIndel, options.Description("Allows for indels during the primers matching.")) options.StringVar(&_UnidentifiedFile, "unidentified", _UnidentifiedFile, diff --git a/pkg/obitools/obipairing/options.go b/pkg/obitools/obipairing/options.go index 41d7bf5..5bc2983 100644 --- a/pkg/obitools/obipairing/options.go +++ b/pkg/obitools/obipairing/options.go @@ -1,8 +1,8 @@ package obipairing import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obipairing/pairing.go b/pkg/obitools/obipairing/pairing.go index 192536c..c51e521 100644 --- a/pkg/obitools/obipairing/pairing.go +++ b/pkg/obitools/obipairing/pairing.go @@ -5,10 +5,10 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" ) func _Abs(x int) int { diff --git a/pkg/obitools/obipcr/options.go b/pkg/obitools/obipcr/options.go index d4fc07c..bbf79e6 100644 --- a/pkg/obitools/obipcr/options.go +++ b/pkg/obitools/obipcr/options.go @@ -5,8 +5,8 @@ package obipcr import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiapat" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obipcr/pcr.go b/pkg/obitools/obipcr/pcr.go index 59cf21c..d8a0c82 100644 --- a/pkg/obitools/obipcr/pcr.go +++ b/pkg/obitools/obipcr/pcr.go @@ -1,10 +1,10 @@ package obipcr import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiapat" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" log "github.com/sirupsen/logrus" ) diff --git a/pkg/obitools/obirefidx/geomindexing.go b/pkg/obitools/obirefidx/geomindexing.go index b5ad40a..a77af7b 100644 --- a/pkg/obitools/obirefidx/geomindexing.go +++ b/pkg/obitools/obirefidx/geomindexing.go @@ -6,9 +6,9 @@ import ( "sort" "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) func GeomIndexSesquence(seqidx int, diff --git a/pkg/obitools/obirefidx/obirefidx.go b/pkg/obitools/obirefidx/obirefidx.go index c42f2f3..64e1541 100644 --- a/pkg/obitools/obirefidx/obirefidx.go +++ b/pkg/obitools/obirefidx/obirefidx.go @@ -6,14 +6,14 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obikmer" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "github.com/schollz/progressbar/v3" ) diff --git a/pkg/obitools/obirefidx/options.go b/pkg/obitools/obirefidx/options.go index d7a0754..2a56566 100644 --- a/pkg/obitools/obirefidx/options.go +++ b/pkg/obitools/obirefidx/options.go @@ -1,8 +1,8 @@ package obirefidx import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obisummary/obisummary.go b/pkg/obitools/obisummary/obisummary.go index 71373dc..454f40b 100644 --- a/pkg/obitools/obisummary/obisummary.go +++ b/pkg/obitools/obisummary/obisummary.go @@ -3,10 +3,10 @@ package obisummary import ( "sync" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) type DataSummary struct { diff --git a/pkg/obitools/obisummary/options.go b/pkg/obitools/obisummary/options.go index 609c677..d4ca76d 100644 --- a/pkg/obitools/obisummary/options.go +++ b/pkg/obitools/obisummary/options.go @@ -5,7 +5,7 @@ package obisummary import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obitag/obigeomtag.go b/pkg/obitools/obitag/obigeomtag.go index 759cdf5..8645ee5 100644 --- a/pkg/obitools/obitag/obigeomtag.go +++ b/pkg/obitools/obitag/obigeomtag.go @@ -4,11 +4,11 @@ import ( "log" "math" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" ) // ExtractLandmarkSeqs extracts landmark sequences from the given BioSequenceSlice. diff --git a/pkg/obitools/obitag/obitag.go b/pkg/obitools/obitag/obitag.go index 690f99e..95e8fa5 100644 --- a/pkg/obitools/obitag/obitag.go +++ b/pkg/obitools/obitag/obitag.go @@ -7,14 +7,14 @@ import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obikmer" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obirefidx" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obirefidx" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" ) // MatchDistanceIndex returns the taxid, rank, and scientificName based on the given distance and distanceIdx. diff --git a/pkg/obitools/obitag/options.go b/pkg/obitools/obitag/options.go index 5e3c05b..3f6d6d4 100644 --- a/pkg/obitools/obitag/options.go +++ b/pkg/obitools/obitag/options.go @@ -3,12 +3,12 @@ package obitag import ( "log" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obitagpcr/options.go b/pkg/obitools/obitagpcr/options.go index 1470d67..0811f61 100644 --- a/pkg/obitools/obitagpcr/options.go +++ b/pkg/obitools/obitagpcr/options.go @@ -1,8 +1,8 @@ package obitagpcr import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obimultiplex" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipairing" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obimultiplex" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipairing" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obitagpcr/pcrtag.go b/pkg/obitools/obitagpcr/pcrtag.go index d3fb4ad..8e565f0 100644 --- a/pkg/obitools/obitagpcr/pcrtag.go +++ b/pkg/obitools/obitagpcr/pcrtag.go @@ -3,13 +3,13 @@ package obitagpcr import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obimultiplex" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipairing" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obimultiplex" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipairing" ) func IPCRTagPESequencesBatch(iterator obiiter.IBioSequence, diff --git a/pkg/obitools/obiuniq/options.go b/pkg/obitools/obiuniq/options.go index e97db9a..5620fa5 100644 --- a/pkg/obitools/obiuniq/options.go +++ b/pkg/obitools/obiuniq/options.go @@ -1,7 +1,7 @@ package obiuniq import ( - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "github.com/DavidGamba/go-getoptions" ) diff --git a/pkg/obitools/obiuniq/unique.go b/pkg/obitools/obiuniq/unique.go index 14d8e26..d04faa5 100644 --- a/pkg/obitools/obiuniq/unique.go +++ b/pkg/obitools/obiuniq/unique.go @@ -3,9 +3,9 @@ package obiuniq import ( log "github.com/sirupsen/logrus" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obichunk" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" - "git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obichunk" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions" ) func Unique(sequences obiiter.IBioSequence) obiiter.IBioSequence { diff --git a/pkg/obiutils/uint128.go b/pkg/obiutils/uint128.go new file mode 100644 index 0000000..7d71845 --- /dev/null +++ b/pkg/obiutils/uint128.go @@ -0,0 +1,457 @@ +package obiutils // import "lukechampine.com/uint128" +// copied from https://github.com/lukechampine/uint128 + +import ( + "encoding/binary" + "errors" + "fmt" + "math" + "math/big" + "math/bits" +) + +// Zero is a zero-valued uint128. +var Zero Uint128 + +// Max is the largest possible uint128 value. +var Max = New(math.MaxUint64, math.MaxUint64) + +// A Uint128 is an unsigned 128-bit number. +type Uint128 struct { + Lo, Hi uint64 +} + +// IsZero returns true if u == 0. +func (u Uint128) IsZero() bool { + // NOTE: we do not compare against Zero, because that is a global variable + // that could be modified. + return u == Uint128{} +} + +// Equals returns true if u == v. +// +// Uint128 values can be compared directly with ==, but use of the Equals method +// is preferred for consistency. +func (u Uint128) Equals(v Uint128) bool { + return u == v +} + +// Equals64 returns true if u == v. +func (u Uint128) Equals64(v uint64) bool { + return u.Lo == v && u.Hi == 0 +} + +// Cmp compares u and v and returns: +// +// -1 if u < v +// 0 if u == v +// +1 if u > v +// +func (u Uint128) Cmp(v Uint128) int { + if u == v { + return 0 + } else if u.Hi < v.Hi || (u.Hi == v.Hi && u.Lo < v.Lo) { + return -1 + } else { + return 1 + } +} + +// Cmp64 compares u and v and returns: +// +// -1 if u < v +// 0 if u == v +// +1 if u > v +// +func (u Uint128) Cmp64(v uint64) int { + if u.Hi == 0 && u.Lo == v { + return 0 + } else if u.Hi == 0 && u.Lo < v { + return -1 + } else { + return 1 + } +} + +// And returns u&v. +func (u Uint128) And(v Uint128) Uint128 { + return Uint128{u.Lo & v.Lo, u.Hi & v.Hi} +} + +// And64 returns u&v. +func (u Uint128) And64(v uint64) Uint128 { + return Uint128{u.Lo & v, u.Hi & 0} +} + +// Or returns u|v. +func (u Uint128) Or(v Uint128) Uint128 { + return Uint128{u.Lo | v.Lo, u.Hi | v.Hi} +} + +// Or64 returns u|v. +func (u Uint128) Or64(v uint64) Uint128 { + return Uint128{u.Lo | v, u.Hi | 0} +} + +// Xor returns u^v. +func (u Uint128) Xor(v Uint128) Uint128 { + return Uint128{u.Lo ^ v.Lo, u.Hi ^ v.Hi} +} + +// Xor64 returns u^v. +func (u Uint128) Xor64(v uint64) Uint128 { + return Uint128{u.Lo ^ v, u.Hi ^ 0} +} + +// Add returns u+v. +func (u Uint128) Add(v Uint128) Uint128 { + lo, carry := bits.Add64(u.Lo, v.Lo, 0) + hi, carry := bits.Add64(u.Hi, v.Hi, carry) + if carry != 0 { + panic("overflow") + } + return Uint128{lo, hi} +} + +// AddWrap returns u+v with wraparound semantics; for example, +// Max.AddWrap(From64(1)) == Zero. +func (u Uint128) AddWrap(v Uint128) Uint128 { + lo, carry := bits.Add64(u.Lo, v.Lo, 0) + hi, _ := bits.Add64(u.Hi, v.Hi, carry) + return Uint128{lo, hi} +} + +// Add64 returns u+v. +func (u Uint128) Add64(v uint64) Uint128 { + lo, carry := bits.Add64(u.Lo, v, 0) + hi, carry := bits.Add64(u.Hi, 0, carry) + if carry != 0 { + panic("overflow") + } + return Uint128{lo, hi} +} + +// AddWrap64 returns u+v with wraparound semantics; for example, +// Max.AddWrap64(1) == Zero. +func (u Uint128) AddWrap64(v uint64) Uint128 { + lo, carry := bits.Add64(u.Lo, v, 0) + hi := u.Hi + carry + return Uint128{lo, hi} +} + +// Sub returns u-v. +func (u Uint128) Sub(v Uint128) Uint128 { + lo, borrow := bits.Sub64(u.Lo, v.Lo, 0) + hi, borrow := bits.Sub64(u.Hi, v.Hi, borrow) + if borrow != 0 { + panic("underflow") + } + return Uint128{lo, hi} +} + +// SubWrap returns u-v with wraparound semantics; for example, +// Zero.SubWrap(From64(1)) == Max. +func (u Uint128) SubWrap(v Uint128) Uint128 { + lo, borrow := bits.Sub64(u.Lo, v.Lo, 0) + hi, _ := bits.Sub64(u.Hi, v.Hi, borrow) + return Uint128{lo, hi} +} + +// Sub64 returns u-v. +func (u Uint128) Sub64(v uint64) Uint128 { + lo, borrow := bits.Sub64(u.Lo, v, 0) + hi, borrow := bits.Sub64(u.Hi, 0, borrow) + if borrow != 0 { + panic("underflow") + } + return Uint128{lo, hi} +} + +// SubWrap64 returns u-v with wraparound semantics; for example, +// Zero.SubWrap64(1) == Max. +func (u Uint128) SubWrap64(v uint64) Uint128 { + lo, borrow := bits.Sub64(u.Lo, v, 0) + hi := u.Hi - borrow + return Uint128{lo, hi} +} + +// Mul returns u*v, panicking on overflow. +func (u Uint128) Mul(v Uint128) Uint128 { + hi, lo := bits.Mul64(u.Lo, v.Lo) + p0, p1 := bits.Mul64(u.Hi, v.Lo) + p2, p3 := bits.Mul64(u.Lo, v.Hi) + hi, c0 := bits.Add64(hi, p1, 0) + hi, c1 := bits.Add64(hi, p3, c0) + if (u.Hi != 0 && v.Hi != 0) || p0 != 0 || p2 != 0 || c1 != 0 { + panic("overflow") + } + return Uint128{lo, hi} +} + +// MulWrap returns u*v with wraparound semantics; for example, +// Max.MulWrap(Max) == 1. +func (u Uint128) MulWrap(v Uint128) Uint128 { + hi, lo := bits.Mul64(u.Lo, v.Lo) + hi += u.Hi*v.Lo + u.Lo*v.Hi + return Uint128{lo, hi} +} + +// Mul64 returns u*v, panicking on overflow. +func (u Uint128) Mul64(v uint64) Uint128 { + hi, lo := bits.Mul64(u.Lo, v) + p0, p1 := bits.Mul64(u.Hi, v) + hi, c0 := bits.Add64(hi, p1, 0) + if p0 != 0 || c0 != 0 { + panic("overflow") + } + return Uint128{lo, hi} +} + +// MulWrap64 returns u*v with wraparound semantics; for example, +// Max.MulWrap64(2) == Max.Sub64(1). +func (u Uint128) MulWrap64(v uint64) Uint128 { + hi, lo := bits.Mul64(u.Lo, v) + hi += u.Hi * v + return Uint128{lo, hi} +} + +// Div returns u/v. +func (u Uint128) Div(v Uint128) Uint128 { + q, _ := u.QuoRem(v) + return q +} + +// Div64 returns u/v. +func (u Uint128) Div64(v uint64) Uint128 { + q, _ := u.QuoRem64(v) + return q +} + +// QuoRem returns q = u/v and r = u%v. +func (u Uint128) QuoRem(v Uint128) (q, r Uint128) { + if v.Hi == 0 { + var r64 uint64 + q, r64 = u.QuoRem64(v.Lo) + r = From64(r64) + } else { + // generate a "trial quotient," guaranteed to be within 1 of the actual + // quotient, then adjust. + n := uint(bits.LeadingZeros64(v.Hi)) + v1 := v.Lsh(n) + u1 := u.Rsh(1) + tq, _ := bits.Div64(u1.Hi, u1.Lo, v1.Hi) + tq >>= 63 - n + if tq != 0 { + tq-- + } + q = From64(tq) + // calculate remainder using trial quotient, then adjust if remainder is + // greater than divisor + r = u.Sub(v.Mul64(tq)) + if r.Cmp(v) >= 0 { + q = q.Add64(1) + r = r.Sub(v) + } + } + return +} + +// QuoRem64 returns q = u/v and r = u%v. +func (u Uint128) QuoRem64(v uint64) (q Uint128, r uint64) { + if u.Hi < v { + q.Lo, r = bits.Div64(u.Hi, u.Lo, v) + } else { + q.Hi, r = bits.Div64(0, u.Hi, v) + q.Lo, r = bits.Div64(r, u.Lo, v) + } + return +} + +// Mod returns r = u%v. +func (u Uint128) Mod(v Uint128) (r Uint128) { + _, r = u.QuoRem(v) + return +} + +// Mod64 returns r = u%v. +func (u Uint128) Mod64(v uint64) (r uint64) { + _, r = u.QuoRem64(v) + return +} + +// Lsh returns u< 64 { + s.Lo = 0 + s.Hi = u.Lo << (n - 64) + } else { + s.Lo = u.Lo << n + s.Hi = u.Hi<>(64-n) + } + return +} + +// Rsh returns u>>n. +func (u Uint128) Rsh(n uint) (s Uint128) { + if n > 64 { + s.Lo = u.Hi >> (n - 64) + s.Hi = 0 + } else { + s.Lo = u.Lo>>n | u.Hi<<(64-n) + s.Hi = u.Hi >> n + } + return +} + +// LeadingZeros returns the number of leading zero bits in u; the result is 128 +// for u == 0. +func (u Uint128) LeadingZeros() int { + if u.Hi > 0 { + return bits.LeadingZeros64(u.Hi) + } + return 64 + bits.LeadingZeros64(u.Lo) +} + +// TrailingZeros returns the number of trailing zero bits in u; the result is +// 128 for u == 0. +func (u Uint128) TrailingZeros() int { + if u.Lo > 0 { + return bits.TrailingZeros64(u.Lo) + } + return 64 + bits.TrailingZeros64(u.Hi) +} + +// OnesCount returns the number of one bits ("population count") in u. +func (u Uint128) OnesCount() int { + return bits.OnesCount64(u.Hi) + bits.OnesCount64(u.Lo) +} + +// RotateLeft returns the value of u rotated left by (k mod 128) bits. +func (u Uint128) RotateLeft(k int) Uint128 { + const n = 128 + s := uint(k) & (n - 1) + return u.Lsh(s).Or(u.Rsh(n - s)) +} + +// RotateRight returns the value of u rotated left by (k mod 128) bits. +func (u Uint128) RotateRight(k int) Uint128 { + return u.RotateLeft(-k) +} + +// Reverse returns the value of u with its bits in reversed order. +func (u Uint128) Reverse() Uint128 { + return Uint128{bits.Reverse64(u.Hi), bits.Reverse64(u.Lo)} +} + +// ReverseBytes returns the value of u with its bytes in reversed order. +func (u Uint128) ReverseBytes() Uint128 { + return Uint128{bits.ReverseBytes64(u.Hi), bits.ReverseBytes64(u.Lo)} +} + +// Len returns the minimum number of bits required to represent u; the result is +// 0 for u == 0. +func (u Uint128) Len() int { + return 128 - u.LeadingZeros() +} + +// String returns the base-10 representation of u as a string. +func (u Uint128) String() string { + if u.IsZero() { + return "0" + } + buf := []byte("0000000000000000000000000000000000000000") // log10(2^128) < 40 + for i := len(buf); ; i -= 19 { + q, r := u.QuoRem64(1e19) // largest power of 10 that fits in a uint64 + var n int + for ; r != 0; r /= 10 { + n++ + buf[i-n] += byte(r % 10) + } + if q.IsZero() { + return string(buf[i-n:]) + } + u = q + } +} + +// PutBytes stores u in b in little-endian order. It panics if len(b) < 16. +func (u Uint128) PutBytes(b []byte) { + binary.LittleEndian.PutUint64(b[:8], u.Lo) + binary.LittleEndian.PutUint64(b[8:], u.Hi) +} + +// PutBytesBE stores u in b in big-endian order. It panics if len(ip) < 16. +func (u Uint128) PutBytesBE(b []byte) { + binary.BigEndian.PutUint64(b[:8], u.Hi) + binary.BigEndian.PutUint64(b[8:], u.Lo) +} + +// Big returns u as a *big.Int. +func (u Uint128) Big() *big.Int { + i := new(big.Int).SetUint64(u.Hi) + i = i.Lsh(i, 64) + i = i.Xor(i, new(big.Int).SetUint64(u.Lo)) + return i +} + +// Scan implements fmt.Scanner. +func (u *Uint128) Scan(s fmt.ScanState, ch rune) error { + i := new(big.Int) + if err := i.Scan(s, ch); err != nil { + return err + } else if i.Sign() < 0 { + return errors.New("value cannot be negative") + } else if i.BitLen() > 128 { + return errors.New("value overflows Uint128") + } + u.Lo = i.Uint64() + u.Hi = i.Rsh(i, 64).Uint64() + return nil +} + +// New returns the Uint128 value (lo,hi). +func New(lo, hi uint64) Uint128 { + return Uint128{lo, hi} +} + +// From64 converts v to a Uint128 value. +func From64(v uint64) Uint128 { + return New(v, 0) +} + +// FromBytes converts b to a Uint128 value. +func FromBytes(b []byte) Uint128 { + return New( + binary.LittleEndian.Uint64(b[:8]), + binary.LittleEndian.Uint64(b[8:]), + ) +} + +// FromBytesBE converts big-endian b to a Uint128 value. +func FromBytesBE(b []byte) Uint128 { + return New( + binary.BigEndian.Uint64(b[8:]), + binary.BigEndian.Uint64(b[:8]), + ) +} + +// FromBig converts i to a Uint128 value. It panics if i is negative or +// overflows 128 bits. +func FromBig(i *big.Int) (u Uint128) { + if i.Sign() < 0 { + panic("value cannot be negative") + } else if i.BitLen() > 128 { + panic("value overflows Uint128") + } + u.Lo = i.Uint64() + u.Hi = i.Rsh(i, 64).Uint64() + return u +} + +// FromString parses s as a Uint128 value. +func FromString(s string) (u Uint128, err error) { + _, err = fmt.Sscan(s, &u) + return +} + +