optimize sequence readers and patch a bug in the format guesser

Former-commit-id: 9dce1e96c57ae9a88c26fac5c8e1bdcdc2c0c7a5
This commit is contained in:
2023-10-13 21:52:57 +02:00
parent ddf0f2cede
commit e8c55a2b6b
7 changed files with 141 additions and 46 deletions

View File

@@ -99,7 +99,11 @@ func FastqChunkReader(r io.Reader, size int) (chan FastxChunk, error) {
out := make(chan FastxChunk)
buff := make([]byte, size)
n, err := r.Read(buff)
n, err := io.ReadFull(r, buff)
if err == io.ErrUnexpectedEOF {
err = nil
}
if n > 0 && err == nil {
if n < size {
@@ -130,13 +134,19 @@ func FastqChunkReader(r io.Reader, size int) (chan FastxChunk, error) {
index: idx,
}
idx++
} else {
size = size * 2
}
buff = slices.Grow(buff[:0], size)[0:size]
n, err = r.Read(buff)
n, err = io.ReadFull(r, buff)
if n < size {
buff = buff[:n]
}
if err == io.ErrUnexpectedEOF {
err = nil
}
// fmt.Printf("n = %d, err = %v\n", n, err)
}