mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
60 lines
1010 B
Go
60 lines
1010 B
Go
package obiiter
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/schollz/progressbar/v3"
|
|
)
|
|
|
|
func (iterator IBioSequence) Speed(message ...string) IBioSequence {
|
|
newIter := MakeIBioSequence()
|
|
|
|
newIter.Add(1)
|
|
|
|
go func() {
|
|
newIter.WaitAndClose()
|
|
}()
|
|
|
|
pbopt := make([]progressbar.Option, 0, 5)
|
|
pbopt = append(pbopt,
|
|
progressbar.OptionSetWriter(os.Stderr),
|
|
progressbar.OptionSetWidth(15),
|
|
progressbar.OptionShowCount(),
|
|
progressbar.OptionShowIts(),
|
|
)
|
|
|
|
if len(message) > 0 {
|
|
pbopt = append(pbopt,
|
|
progressbar.OptionSetDescription(message[0]),
|
|
)
|
|
} else {
|
|
pbopt = append(pbopt,
|
|
progressbar.OptionSetDescription("[Sequence Processing]"),
|
|
)
|
|
}
|
|
|
|
bar := progressbar.NewOptions(-1, pbopt...)
|
|
|
|
go func() {
|
|
|
|
for iterator.Next() {
|
|
batch := iterator.Get()
|
|
l := batch.Len()
|
|
newIter.Push(batch)
|
|
bar.Add(l)
|
|
}
|
|
|
|
newIter.Done()
|
|
}()
|
|
|
|
return newIter
|
|
}
|
|
|
|
func SpeedPipe(message ...string) Pipeable {
|
|
f := func(iterator IBioSequence) IBioSequence {
|
|
return iterator.Speed(message...)
|
|
}
|
|
|
|
return f
|
|
}
|