first blackboard

Former-commit-id: d7f45aa3671e18e7dbac7ef3844856241900b1ad
This commit is contained in:
Eric Coissac
2024-07-25 18:10:28 -04:00
parent 67665a6b40
commit cba355cdde
4 changed files with 216 additions and 28 deletions

View File

@ -1,38 +1,46 @@
package main
import (
"os"
"fmt"
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"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiblackboard"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
)
func main() {
optionParser := obioptions.GenerateOptionParser(obiconvert.OptionSet)
func MakeCounter(n int) func(*obiblackboard.Task) *obiblackboard.Task {
count := obiutils.AtomicCounter()
_, args := optionParser(os.Args)
fs, err := obiconvert.CLIReadBioSequences(args...)
if err != nil {
log.Errorf("Cannot open file (%v)", err)
os.Exit(1)
r1 := func(task *obiblackboard.Task) *obiblackboard.Task {
val := count()
if val < n {
nt := task.GetNext()
nt.Body = val
return nt
}
return nil
}
frags := obiiter.IFragments(
1000,
100,
10,
100,
obioptions.CLIParallelWorkers(),
)
obiconvert.CLIWriteBioSequences(fs.Pipe(frags), true)
obiiter.WaitForLastPipe()
return r1
}
func r2(task *obiblackboard.Task) *obiblackboard.Task {
fmt.Printf("value : %v\n", task.Body)
return obiblackboard.NewInitialTask()
}
func rmul(task *obiblackboard.Task) *obiblackboard.Task {
nt := task.GetNext()
nt.Body = task.Body.(int) * 2
return nt
}
func main() {
black := obiblackboard.NewBlackBoard(20)
black.RegisterRunner("todisplay", "initial", r2)
black.RegisterRunner("multiply", "todisplay", rmul)
black.RegisterRunner("initial", "multiply", MakeCounter(1000))
black.Run()
}