From eb351a7530239554352beb61fd7d94b8b48f193d Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Sun, 3 Dec 2023 22:44:13 +0100 Subject: [PATCH] patch bug in worker Former-commit-id: f83cc62fc7a85f732e871f8866f80f738f494f9e --- pkg/obiiter/batchiterator.go | 12 +++++++++--- pkg/obiiter/workers.go | 6 +----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pkg/obiiter/batchiterator.go b/pkg/obiiter/batchiterator.go index 1985198..a629a19 100644 --- a/pkg/obiiter/batchiterator.go +++ b/pkg/obiiter/batchiterator.go @@ -427,14 +427,20 @@ func (iterator IBioSequence) Rebatch(size int) IBioSequence { for iterator.Next() { seqs := iterator.Get() - // log.Println("Got seq #", len(seqs.Slice())) - for _, s := range seqs.slice { - buffer = append(buffer, s) + lc := seqs.Len() + remains := lc + i := 0 + for remains > 0 { + space := size - len(buffer) + to_push := min(lc-i, space) + remains = lc - to_push - i + buffer = append(buffer, seqs.Slice()[i:(i+to_push)]...) if len(buffer) == size { newIter.Push(MakeBioSequenceBatch(order, buffer)) order++ buffer = obiseq.MakeBioSequenceSlice() } + i += to_push } seqs.Recycle(false) } diff --git a/pkg/obiiter/workers.go b/pkg/obiiter/workers.go index 6bf508e..9961aad 100644 --- a/pkg/obiiter/workers.go +++ b/pkg/obiiter/workers.go @@ -140,11 +140,7 @@ func (iterator IBioSequence) MakeISliceWorker(worker obiseq.SeqSliceWorker, size for iterator.Next() { batch := iterator.Get() batch.slice = worker(batch.slice) - if batch.slice.Len() > 0 { - newIter.Push(batch) - } else { - batch.Recycle(false) - } + newIter.Push(batch) } newIter.Done() }