Change path of the obitools pkg

Former-commit-id: 311cbf8df3b990b393c6f4885d62e74564423b65
This commit is contained in:
2023-11-29 12:14:37 +01:00
parent 72ad84c2d4
commit 8d77cc4133
122 changed files with 1004 additions and 544 deletions

View File

@ -2,13 +2,14 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiannotate" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiannotate"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
) )
func main() { func main() {
@ -38,7 +39,7 @@ func main() {
sequences, err := obiconvert.CLIReadBioSequences(args...) sequences, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -5,11 +5,11 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiclean" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiclean"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "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() { func main() {

View File

@ -2,12 +2,13 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obicleandb" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicleandb"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "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() { func main() {
@ -18,7 +19,7 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -2,13 +2,14 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "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() { func main() {
@ -19,7 +20,7 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -5,11 +5,11 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconsensus" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconsensus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "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() { func main() {

View File

@ -2,12 +2,13 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "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() { func main() {
@ -18,7 +19,7 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -3,12 +3,13 @@ package main
import ( import (
"fmt" "fmt"
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obicount" "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() { func main() {
@ -37,7 +38,7 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -2,12 +2,13 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obicsv" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicsv"
) )
func main() { func main() {
@ -18,7 +19,7 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -2,13 +2,14 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obidistribute" "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() { func main() {
@ -19,11 +20,11 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }
obidistribute.DistributeSequence(fs) obidistribute.CLIDistributeSequence(fs)
obiiter.WaitForLastPipe() obiiter.WaitForLastPipe()

View File

@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"os" "os"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind"
) )
func main() { func main() {

View File

@ -2,13 +2,14 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep"
) )
func main() { func main() {
@ -38,7 +39,7 @@ func main() {
sequences, err := obiconvert.CLIReadBioSequences(args...) sequences, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }
selected := obigrep.CLIFilterSequence(sequences) selected := obigrep.CLIFilterSequence(sequences)

View File

@ -6,10 +6,10 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obimatrix" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obimatrix"
) )
func main() { func main() {

View File

@ -2,12 +2,13 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obimultiplex" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obimultiplex"
) )
func main() { func main() {
@ -33,7 +34,7 @@ func main() {
sequences, err := obiconvert.CLIReadBioSequences(args...) sequences, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }
amplicons, _ := obimultiplex.IExtractBarcode(sequences) amplicons, _ := obimultiplex.IExtractBarcode(sequences)

View File

@ -1,13 +1,14 @@
package main package main
import ( import (
log "github.com/sirupsen/logrus"
"os" "os"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" log "github.com/sirupsen/logrus"
"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/lecasofts/go/obitools/pkg/obitools/obipairing" "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() { func main() {

View File

@ -5,10 +5,10 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipcr" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipcr"
) )
func main() { func main() {

View File

@ -2,13 +2,14 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obirefidx" "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() { func main() {
@ -19,7 +20,7 @@ func main() {
fs, err := obiconvert.CLIReadBioSequences(args...) fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }
indexed := obirefidx.IndexReferenceDB(fs) indexed := obirefidx.IndexReferenceDB(fs)

View File

@ -8,10 +8,10 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obisummary" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obisummary"
) )
func main() { func main() {

View File

@ -6,12 +6,12 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obifind" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obitag" "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() { func main() {

View File

@ -5,11 +5,11 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obipairing" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obipairing"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obitagpcr" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obitagpcr"
) )
func main() { func main() {

View File

@ -2,13 +2,14 @@ package main
import ( import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiuniq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiuniq"
) )
func main() { func main() {
@ -38,7 +39,7 @@ func main() {
sequences, err := obiconvert.CLIReadBioSequences(args...) sequences, err := obiconvert.CLIReadBioSequences(args...)
if err != nil { if err != nil {
log.Errorf("Cannot open file (%v)",err) log.Errorf("Cannot open file (%v)", err)
os.Exit(1) os.Exit(1)
} }

View File

@ -1,178 +1,38 @@
package main package main
import ( import (
"fmt"
"log"
"os" "os"
"runtime/trace"
"cloudeng.io/algo/lcs" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/goutils"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "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() { 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 { if err != nil {
log.Fatal(err) log.Errorf("Cannot open file (%v)", err)
} os.Exit(1)
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")
} }
if _, ok := x.(interface{ Length() int }); ok { frags := obiiter.IFragments(
fmt.Println("Victoire") 1000,
} 100,
10,
100,
obioptions.CLIParallelWorkers(),
)
fmt.Println(goutils.Len(x),goutils.Len([]int{1,2,3})) obiconvert.CLIWriteBioSequences(fs.Pipe(frags), true)
// 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)
// option_parser := obioptions.GenerateOptionParser( obiiter.WaitForLastPipe()
// obiconvert.InputOptionSet,
// )
// _, 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))
// }
} }

2
go.mod
View File

@ -1,4 +1,4 @@
module git.metabarcoding.org/lecasofts/go/obitools module git.metabarcoding.org/obitools/obitools4/obitools4
go 1.21 go 1.21

View File

@ -9,7 +9,7 @@ import (
"math" "math"
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
// // A pool of byte slices. // // A pool of byte slices.

View File

@ -1,8 +1,8 @@
package obialign package obialign
// import ( // import (
// "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" // "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
// "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" // "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
// ) // )
const wsize = 16 const wsize = 16

View File

@ -1,8 +1,8 @@
package obialign package obialign
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
var _iupac = [26]byte{ var _iupac = [26]byte{

View File

@ -1,7 +1,7 @@
package obialign package obialign
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
var _FourBitsBaseCode = []byte{0b0000, var _FourBitsBaseCode = []byte{0b0000,

View File

@ -1,6 +1,6 @@
package obialign 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 { func abs(x int) int {
if x < 0 { if x < 0 {

View File

@ -3,8 +3,8 @@ package obialign
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obikmer" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
type _PeAlignArena struct { type _PeAlignArena struct {

View File

@ -13,9 +13,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obialign" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
var _MaxPatLen = int(C.MAX_PAT_LEN) var _MaxPatLen = int(C.MAX_PAT_LEN)

View File

@ -3,8 +3,8 @@ package obiapat
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
type _Options struct { type _Options struct {

View File

@ -8,9 +8,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
func tempDir() (string, error) { func tempDir() (string, error) {
@ -42,7 +42,6 @@ func ISequenceChunkOnDisk(iterator obiiter.IBioSequence,
return obiiter.NilIBioSequence, err return obiiter.NilIBioSequence, err
} }
newIter := obiiter.MakeIBioSequence() newIter := obiiter.MakeIBioSequence()
newIter.Add(1) newIter.Add(1)

View File

@ -5,8 +5,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
func ISequenceChunk(iterator obiiter.IBioSequence, func ISequenceChunk(iterator obiiter.IBioSequence,

View File

@ -6,9 +6,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
// //

View File

@ -5,8 +5,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
// Runs dereplication algorithm on a obiiter.IBioSequenceBatch // Runs dereplication algorithm on a obiiter.IBioSequenceBatch

View File

@ -3,7 +3,7 @@ package obicorazick
import ( import (
log "github.com/sirupsen/logrus" 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" "github.com/rrethy/ahocorasick"
) )
@ -18,7 +18,7 @@ func AhoCorazickWorker(slot string, patterns []string) obiseq.SeqWorker {
matchesF := len(matcher.FindAllByteSlice(s.Sequence())) matchesF := len(matcher.FindAllByteSlice(s.Sequence()))
matchesR := len(matcher.FindAllByteSlice(s.ReverseComplement(false).Sequence())) matchesR := len(matcher.FindAllByteSlice(s.ReverseComplement(false).Sequence()))
log.Debugln("Macthes = ",matchesF,matchesR) log.Debugln("Macthes = ", matchesF, matchesR)
matches := matchesF + matchesR matches := matchesF + matchesR
if matches > 0 { if matches > 0 {
s.SetAttribute(slot, matches) s.SetAttribute(slot, matches)

View File

@ -3,8 +3,8 @@ package obiformats
import ( import (
"log" "log"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
func ReadSequencesBatchFromFiles(filenames []string, func ReadSequencesBatchFromFiles(filenames []string,
@ -48,8 +48,6 @@ func ReadSequencesBatchFromFiles(filenames []string,
log.Printf("Start reading of file : %s", filename) log.Printf("Start reading of file : %s", filename)
for iter.Next() { for iter.Next() {
batch := iter.Get() batch := iter.Get()
batchiter.Push(batch.Reorder(nextCounter())) batchiter.Push(batch.Reorder(nextCounter()))

View File

@ -1,5 +1,5 @@
package obiformats 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) type IBatchReader func(string, ...WithOption) (obiiter.IBioSequence, error)

View File

@ -9,10 +9,10 @@ import (
"sync" "sync"
"time" "time"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -10,7 +10,7 @@ import (
log "github.com/sirupsen/logrus" 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, type SequenceBatchWriterToFile func(iterator obiiter.IBioSequence,

View File

@ -13,9 +13,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
type __ecopcr_file__ struct { type __ecopcr_file__ struct {

View File

@ -10,9 +10,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
var _FileChunkSize = 1 << 28 var _FileChunkSize = 1 << 28

View File

@ -1,6 +1,6 @@
package obiformats 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) { func ReadEmptyFile(options ...WithOption) (obiiter.IBioSequence, error) {
out := obiiter.MakeIBioSequence() out := obiiter.MakeIBioSequence()

View File

@ -7,10 +7,10 @@ import (
"os" "os"
"path" "path"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"

View File

@ -6,10 +6,10 @@ import (
"os" "os"
"path" "path"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
) )

View File

@ -3,8 +3,8 @@ package obiformats
import ( import (
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
// ParseGuessedFastSeqHeader parses the guessed fast sequence header. // ParseGuessedFastSeqHeader parses the guessed fast sequence header.

View File

@ -1,5 +1,5 @@
package obiformats 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 type FormatHeader func(sequence *obiseq.BioSequence) string

View File

@ -6,8 +6,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"github.com/goccy/go-json" "github.com/goccy/go-json"
) )

View File

@ -9,8 +9,8 @@ import (
"strconv" "strconv"
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"github.com/goccy/go-json" "github.com/goccy/go-json"
) )

View File

@ -14,10 +14,10 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
func _FastseqReader(source string, func _FastseqReader(source string,

View File

@ -12,9 +12,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
// min returns the minimum of two integers. // min returns the minimum of two integers.

View File

@ -10,10 +10,10 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
// The function FormatFastq takes a BioSequence object, a quality shift value, and a header formatter // The function FormatFastq takes a BioSequence object, a quality shift value, and a header formatter

View File

@ -11,9 +11,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
type gbstate int type gbstate int

View File

@ -11,9 +11,9 @@ import (
"sync" "sync"
"time" "time"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -12,7 +12,7 @@ import (
log "github.com/sirupsen/logrus" 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) { func loadNodeTable(reader io.Reader, taxonomy *obitax.Taxonomy) {

View File

@ -6,8 +6,8 @@ import (
"io" "io"
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obingslibrary" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obingslibrary"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
func _readLines(reader io.Reader) []string { func _readLines(reader io.Reader) []string {

View File

@ -1,8 +1,8 @@
package obiformats package obiformats
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
type __options__ struct { type __options__ struct {

View File

@ -11,8 +11,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "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. // OBIMimeTypeGuesser is a function that takes an io.Reader as input and guesses the MIME type of the data.

View File

@ -7,7 +7,7 @@ import (
log "github.com/sirupsen/logrus" 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, func WriteSequence(iterator obiiter.IBioSequence,

View File

@ -1,6 +1,6 @@
package obiiter package obiiter
import "git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
type BioSequenceBatch struct { type BioSequenceBatch struct {
slice obiseq.BioSequenceSlice slice obiseq.BioSequenceSlice

View File

@ -10,9 +10,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"github.com/tevino/abool/v2" "github.com/tevino/abool/v2"
) )

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"sync" "sync"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
type IDistribute struct { type IDistribute struct {
@ -46,8 +46,6 @@ func (iterator IBioSequence) Distribute(class *obiseq.BioSequenceClassifier, siz
batchsize = sizes[0] batchsize = sizes[0]
} }
jobDone := sync.WaitGroup{} jobDone := sync.WaitGroup{}
lock := sync.Mutex{} lock := sync.Mutex{}

View File

@ -3,8 +3,8 @@ package obiiter
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
func IFragments(minsize, length, overlap, size, nworkers int) Pipeable { func IFragments(minsize, length, overlap, size, nworkers int) Pipeable {
@ -31,7 +31,7 @@ func IFragments(minsize, length, overlap, size, nworkers int) Pipeable {
} else { } else {
for i := 0; i < s.Len(); i += step { for i := 0; i < s.Len(); i += step {
end := obiutils.MinInt(i+length, s.Len()) end := obiutils.MinInt(i+length, s.Len())
fusion:=false fusion := false
if (s.Len() - end) < step { if (s.Len() - end) < step {
end = s.Len() end = s.Len()
fusion = true fusion = true

View File

@ -1,6 +1,6 @@
package obiiter 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 { func (iterator IBioSequence) IMergeSequenceBatch(na string, statsOn []string, sizes ...int) IBioSequence {
batchsize := 100 batchsize := 100

View File

@ -3,8 +3,8 @@ package obiiter
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
// That method allows for applying a SeqWorker function on every sequences. // 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 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, func (iterator IBioSequence) MakeIConditionalWorker(predicate obiseq.SequencePredicate,
worker obiseq.SeqWorker, sizes ...int) IBioSequence { worker obiseq.SeqWorker, sizes ...int) IBioSequence {
nworkers := obioptions.CLIReadParallelWorkers() nworkers := obioptions.CLIReadParallelWorkers()
@ -100,6 +110,16 @@ func (iterator IBioSequence) MakeIConditionalWorker(predicate obiseq.SequencePre
return newIter 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 { func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, sizes ...int) IBioSequence {
nworkers := obioptions.CLIParallelWorkers() nworkers := obioptions.CLIParallelWorkers()
@ -119,12 +139,12 @@ func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, size
f := func(iterator IBioSequence) { f := func(iterator IBioSequence) {
for iterator.Next() { for iterator.Next() {
batch := iterator.Get() batch := iterator.Get()
bs := len(batch.slice)
batch.slice = worker(batch.slice) batch.slice = worker(batch.slice)
if bs != len(batch.slice) { if batch.slice.Len() > 0 {
log.Warnf("Input size : %d output %d", bs, len(batch.slice)) newIter.Push(batch)
} else {
batch.Recycle(false)
} }
newIter.Push(batch)
} }
newIter.Done() newIter.Done()
} }
@ -142,6 +162,17 @@ func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, size
return newIter 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 { func WorkerPipe(worker obiseq.SeqWorker, sizes ...int) Pipeable {
f := func(iterator IBioSequence) IBioSequence { f := func(iterator IBioSequence) IBioSequence {
return iterator.MakeIWorker(worker, sizes...) return iterator.MakeIWorker(worker, sizes...)
@ -150,6 +181,11 @@ func WorkerPipe(worker obiseq.SeqWorker, sizes ...int) Pipeable {
return f 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 { func SliceWorkerPipe(worker obiseq.SeqSliceWorker, sizes ...int) Pipeable {
f := func(iterator IBioSequence) IBioSequence { f := func(iterator IBioSequence) IBioSequence {
return iterator.MakeISliceWorker(worker, sizes...) return iterator.MakeISliceWorker(worker, sizes...)

View File

@ -3,8 +3,8 @@ package obikmer
import ( import (
"math" "math"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
type Table4mer [256]uint16 type Table4mer [256]uint16

View File

@ -6,7 +6,7 @@ import (
"math" "math"
"math/bits" "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/sets/linkedhashset"
"github.com/daichi-m/go18ds/stacks/arraystack" "github.com/daichi-m/go18ds/stacks/arraystack"
) )

View File

@ -1,7 +1,7 @@
package obikmer package obikmer
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
var __single_base_code__ = []byte{0, var __single_base_code__ = []byte{0,

View File

@ -7,9 +7,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiapat" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
type DemultiplexMatch struct { type DemultiplexMatch struct {

View File

@ -1,8 +1,8 @@
package obingslibrary package obingslibrary
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiapat" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
type PrimerPair struct { type PrimerPair struct {

View File

@ -1,7 +1,7 @@
package obingslibrary package obingslibrary
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
) )
type _Options struct { type _Options struct {
@ -159,7 +159,7 @@ func ExtractBarcodeSlice(ngslibrary NGSLibrary,
opt := MakeOptions(options) opt := MakeOptions(options)
ngslibrary.Compile(opt.AllowedMismatch(),opt.AllowsIndel()) ngslibrary.Compile(opt.AllowedMismatch(), opt.AllowsIndel())
return _ExtractBarcodeSlice(ngslibrary, sequences, opt) return _ExtractBarcodeSlice(ngslibrary, sequences, opt)
} }
@ -169,7 +169,7 @@ func ExtractBarcodeSliceWorker(ngslibrary NGSLibrary,
opt := MakeOptions(options) opt := MakeOptions(options)
ngslibrary.Compile(opt.AllowedMismatch(),opt.AllowsIndel()) ngslibrary.Compile(opt.AllowedMismatch(), opt.AllowsIndel())
worker := func(sequences obiseq.BioSequenceSlice) obiseq.BioSequenceSlice { worker := func(sequences obiseq.BioSequenceSlice) obiseq.BioSequenceSlice {
return _ExtractBarcodeSlice(ngslibrary, sequences, opt) return _ExtractBarcodeSlice(ngslibrary, sequences, opt)

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"strconv" "strconv"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -15,8 +15,8 @@ import (
"sync" "sync"
"sync/atomic" "sync/atomic"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -3,7 +3,7 @@ package obiseq
import ( import (
"sync" "sync"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
) )

View File

@ -6,7 +6,7 @@ import (
"strconv" "strconv"
"sync" "sync"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -6,7 +6,7 @@ import (
"reflect" "reflect"
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"github.com/PaesslerAG/gval" "github.com/PaesslerAG/gval"
) )

View File

@ -5,7 +5,7 @@ import (
"reflect" "reflect"
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -4,7 +4,7 @@ import (
"log" "log"
"sync" "sync"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
var _BioSequenceByteSlicePool = sync.Pool{ var _BioSequenceByteSlicePool = sync.Pool{

View File

@ -5,8 +5,8 @@ import (
"fmt" "fmt"
"sort" "sort"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
type Suffix struct { type Suffix struct {

View File

@ -5,8 +5,8 @@ import (
"strconv" "strconv"
"strings" "strings"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -1,7 +1,7 @@
package obitax package obitax
import ( 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. // Setting the taxon at a given rank for a given sequence.

View File

@ -3,8 +3,8 @@ package obitax
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
func (taxonomy *Taxonomy) IsAValidTaxon(withAutoCorrection ...bool) obiseq.SequencePredicate { func (taxonomy *Taxonomy) IsAValidTaxon(withAutoCorrection ...bool) obiseq.SequencePredicate {

View File

@ -1,8 +1,8 @@
package obitax package obitax
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -1,14 +1,17 @@
package obiannotate package obiannotate
import ( import (
"fmt"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obicorazick" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obicorazick"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep"
) )
func DeleteAttributesWorker(toBeDeleted []string) obiseq.SeqWorker { func DeleteAttributesWorker(toBeDeleted []string) obiseq.SeqWorker {
@ -22,14 +25,69 @@ func DeleteAttributesWorker(toBeDeleted []string) obiseq.SeqWorker {
return f return f
} }
// func MatchPatternWorker(pattern string, errormax int, allowsIndel bool) obiseq.SeqWorker { func MatchPatternWorker(pattern, name string, errormax int, allowsIndel bool) obiseq.SeqWorker {
// pat, err := obiapat.MakeApatPattern(pattern, errormax, allowsIndel) pat, err := obiapat.MakeApatPattern(pattern, errormax, allowsIndel)
// f := func(s *obiseq.BioSequence) *obiseq.BioSequence { if err != nil {
// apats := obiapat.MakeApatSequence(s, false) log.Fatalf("error in compiling pattern (%s) : %v", pattern, err)
// pat.BestMatch(apats, 0) }
// return s
// } 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 { func ToBeKeptAttributesWorker(toBeKept []string) obiseq.SeqWorker {
@ -229,6 +287,14 @@ func CLIAnnotationWorker() obiseq.SeqWorker {
annotator = annotator.ChainWorkers(w) 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 return annotator
} }

View File

@ -7,8 +7,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )
@ -24,6 +24,9 @@ var _setSeqLength = false
var _uniqueID = false var _uniqueID = false
var _ahoCorazick = "" var _ahoCorazick = ""
var _pattern = "" var _pattern = ""
var _pattern_error = 0
var _pattern_indel = false
var _pattern_name = "pattern"
var _lcaSlot = "" var _lcaSlot = ""
var _lcaError = 0.0 var _lcaError = 0.0
var _setId = "" var _setId = ""
@ -52,6 +55,18 @@ func SequenceAnnotationOptionSet(options *getoptions.GetOpt) {
"to the sequence.", "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.StringVar(&_lcaSlot, "add-lca-in", _lcaSlot,
options.ArgName("SLOT_NAME"), options.ArgName("SLOT_NAME"),
options.Description("From the taxonomic annotation of the sequence (taxid slot or merged_taxid slot), "+ 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 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
}

View File

@ -12,7 +12,7 @@ import (
log "github.com/sirupsen/logrus" 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" "github.com/schollz/progressbar/v3"
) )

View File

@ -4,10 +4,10 @@ import (
"fmt" "fmt"
"os" "os"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"github.com/schollz/progressbar/v3" "github.com/schollz/progressbar/v3"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )

View File

@ -1,7 +1,7 @@
package obiclean package obiclean
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )

View File

@ -3,11 +3,11 @@ package obicleandb
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obichunk" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obichunk"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep"
) )
func ICleanDB(itertator obiiter.IBioSequence) obiiter.IBioSequence { func ICleanDB(itertator obiiter.IBioSequence) obiiter.IBioSequence {

View File

@ -1,12 +1,11 @@
package obicleandb package obicleandb
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obigrep" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obigrep"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )
var _UpdateTaxids = false var _UpdateTaxids = false
func ObicleanDBOptionSet(options *getoptions.GetOpt) { func ObicleanDBOptionSet(options *getoptions.GetOpt) {

View File

@ -8,11 +8,11 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obikmer" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obisuffix" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisuffix"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
) )
func BuildConsensus(seqs obiseq.BioSequenceSlice, func BuildConsensus(seqs obiseq.BioSequenceSlice,

View File

@ -1,7 +1,7 @@
package obiconsensus package obiconsensus
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )

View File

@ -8,9 +8,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
) )
func _ExpandListOfFiles(check_ext bool, filenames ...string) ([]string, error) { func _ExpandListOfFiles(check_ext bool, filenames ...string) ([]string, error) {

View File

@ -6,9 +6,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
) )
func BuildPairedFileNames(filename string) (string, string) { func BuildPairedFileNames(filename string) (string, string) {

View File

@ -3,10 +3,10 @@ package obicsv
import ( import (
"log" "log"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
) )
func CLIWriteCSV(iterator obiiter.IBioSequence, func CLIWriteCSV(iterator obiiter.IBioSequence,

View File

@ -1,8 +1,8 @@
package obicsv package obicsv
import ( import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )

View File

@ -3,13 +3,13 @@ package obidistribute
import ( import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "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) opts := make([]obiformats.WithOption, 0, 10)

View File

@ -6,8 +6,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )
@ -37,7 +37,7 @@ func DistributeOptionSet(options *getoptions.GetOpt) {
options.Alias("d"), options.Alias("d"),
options.Description("The name of a tag annotating the sequences. "+ options.Description("The name of a tag annotating the sequences. "+
"The name must corresponds to a string, a integer or a boolean value. "+ "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")) "in conjunction with the -c|--classifier options"))
options.StringVar(&_NAValue, "na-value", _NAValue, options.StringVar(&_NAValue, "na-value", _NAValue,
@ -66,11 +66,10 @@ func CLIAppendSequences() bool {
return _append return _append
} }
func CLISequenceClassifier() *obiseq.BioSequenceClassifier { func CLISequenceClassifier() *obiseq.BioSequenceClassifier {
switch { switch {
case _SequenceClassifierTag != "": case _SequenceClassifierTag != "":
return obiseq.DualAnnotationClassifier(_SequenceClassifierTag,_DirectoryTag, _NAValue) return obiseq.DualAnnotationClassifier(_SequenceClassifierTag, _DirectoryTag, _NAValue)
case _BatchCount > 0: case _BatchCount > 0:
return obiseq.RotateClassifier(_BatchCount) return obiseq.RotateClassifier(_BatchCount)
case _HashSize > 0: case _HashSize > 0:

View File

@ -4,7 +4,7 @@ import (
"bytes" "bytes"
"fmt" "fmt"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
) )
func IFilterRankRestriction() func(*obitax.ITaxonSet) *obitax.ITaxonSet { func IFilterRankRestriction() func(*obitax.ITaxonSet) *obitax.ITaxonSet {

View File

@ -3,8 +3,8 @@ package obifind
import ( import (
"errors" "errors"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiformats/ncbitaxdump" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats/ncbitaxdump"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitax" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
) )

View File

@ -3,9 +3,9 @@ package obigrep
import ( import (
"log" "log"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obioptions" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
) )
func CLIFilterSequence(iterator obiiter.IBioSequence) obiiter.IBioSequence { func CLIFilterSequence(iterator obiiter.IBioSequence) obiiter.IBioSequence {

Some files were not shown because too many files have changed in this diff Show More