Files
obitools4/pkg/obitools/obigrep/grep.go
Eric Coissac d88de15cdc Refactoring codes for removing buffer size options. An some other changes...
Former-commit-id: 10b57cc1a27446ade3c444217341e9651e89cdce
2023-03-07 11:12:13 +07:00

51 lines
1.1 KiB
Go

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"
)
func CLIFilterSequence(iterator obiiter.IBioSequence) obiiter.IBioSequence {
var newIter obiiter.IBioSequence
predicate := CLISequenceSelectionPredicate()
if obiconvert.CLIHasPairedFile() {
predicate = predicate.PairedPredicat(CLIPairedReadMode())
}
if predicate != nil {
if CLISaveDiscardedSequences() {
var discarded obiiter.IBioSequence
log.Printf("Discarded sequences saved in file: %s\n", CLIDiscardedFileName())
newIter, discarded = iterator.DivideOn(predicate,
obioptions.CLIBatchSize())
go func() {
_, err := obiconvert.CLIWriteBioSequences(discarded,
true,
CLIDiscardedFileName())
if err != nil {
log.Fatalf("%v", err)
}
}()
} else {
newIter = iterator.FilterOn(predicate,
obioptions.CLIBatchSize(),
obioptions.CLIParallelWorkers(),
)
}
} else {
newIter = iterator
}
return newIter
}