mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
Correctly handle empty files
Former-commit-id: d166aa352ce4bf32739ddc2f7d1c9967918822fd
This commit is contained in:
@ -4,13 +4,10 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
gzip "github.com/klauspost/pgzip"
|
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter"
|
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter"
|
||||||
@ -276,23 +273,21 @@ func ReadEMBL(reader io.Reader, options ...WithOption) obiiter.IBioSequence {
|
|||||||
|
|
||||||
func ReadEMBLFromFile(filename string, options ...WithOption) (obiiter.IBioSequence, error) {
|
func ReadEMBLFromFile(filename string, options ...WithOption) (obiiter.IBioSequence, error) {
|
||||||
var reader io.Reader
|
var reader io.Reader
|
||||||
var greader io.Reader
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
options = append(options, OptionsSource(obiutils.RemoveAllExt((path.Base(filename)))))
|
options = append(options, OptionsSource(obiutils.RemoveAllExt((path.Base(filename)))))
|
||||||
|
|
||||||
reader, err = os.Open(filename)
|
reader, err = Ropen(filename)
|
||||||
|
|
||||||
|
if err == ErrNoContent {
|
||||||
|
log.Infof("file %s is empty", filename)
|
||||||
|
return ReadEmptyFile(options...)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("open file error: %+v", err)
|
log.Printf("open file error: %+v", err)
|
||||||
return obiiter.NilIBioSequence, err
|
return obiiter.NilIBioSequence, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test if the flux is compressed by gzip
|
|
||||||
//greader, err = gzip.NewReader(reader)
|
|
||||||
greader, err = gzip.NewReaderN(reader, 1<<24, 2)
|
|
||||||
if err == nil {
|
|
||||||
reader = greader
|
|
||||||
}
|
|
||||||
|
|
||||||
return ReadEMBL(reader, options...), nil
|
return ReadEMBL(reader, options...), nil
|
||||||
}
|
}
|
||||||
|
@ -114,19 +114,8 @@ func FastaChunkReader(r io.Reader, size int, cutHead bool) (chan FastxChunk, err
|
|||||||
end := []byte{}
|
end := []byte{}
|
||||||
|
|
||||||
for err == nil && n > 0 {
|
for err == nil && n > 0 {
|
||||||
// fmt.Println("============end=========================")
|
|
||||||
// fmt.Println(string(end))
|
|
||||||
// fmt.Println("------------buff------------------------")
|
|
||||||
// fmt.Println(string(buff))
|
|
||||||
buff = Concatenate(end, buff)
|
buff = Concatenate(end, buff)
|
||||||
// fmt.Println("------------buff--pasted----------------")
|
|
||||||
// fmt.Println(string(buff))
|
|
||||||
buff, end = lastFastaCut(buff)
|
buff, end = lastFastaCut(buff)
|
||||||
// fmt.Println("----------------buff--cutted------------")
|
|
||||||
// fmt.Println(string(buff))
|
|
||||||
// fmt.Println("------------------end-------------------")
|
|
||||||
// fmt.Println(string(end))
|
|
||||||
// fmt.Println("========================================")
|
|
||||||
if len(buff) > 0 {
|
if len(buff) > 0 {
|
||||||
out <- FastxChunk{
|
out <- FastxChunk{
|
||||||
Bytes: bytes.Clone(buff),
|
Bytes: bytes.Clone(buff),
|
||||||
|
@ -4,14 +4,11 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
gzip "github.com/klauspost/pgzip"
|
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter"
|
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiiter"
|
||||||
@ -173,23 +170,21 @@ func ReadGenbank(reader io.Reader, options ...WithOption) obiiter.IBioSequence {
|
|||||||
|
|
||||||
func ReadGenbankFromFile(filename string, options ...WithOption) (obiiter.IBioSequence, error) {
|
func ReadGenbankFromFile(filename string, options ...WithOption) (obiiter.IBioSequence, error) {
|
||||||
var reader io.Reader
|
var reader io.Reader
|
||||||
var greader io.Reader
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
options = append(options, OptionsSource(obiutils.RemoveAllExt((path.Base(filename)))))
|
options = append(options, OptionsSource(obiutils.RemoveAllExt((path.Base(filename)))))
|
||||||
|
|
||||||
reader, err = os.Open(filename)
|
reader, err = Ropen(filename)
|
||||||
|
|
||||||
|
if err == ErrNoContent {
|
||||||
|
log.Infof("file %s is empty", filename)
|
||||||
|
return ReadEmptyFile(options...)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("open file error: %+v", err)
|
log.Printf("open file error: %+v", err)
|
||||||
return obiiter.NilIBioSequence, err
|
return obiiter.NilIBioSequence, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test if the flux is compressed by gzip
|
|
||||||
//greader, err = gzip.NewReader(reader)
|
|
||||||
greader, err = gzip.NewReaderN(reader, 1<<24, 2)
|
|
||||||
if err == nil {
|
|
||||||
reader = greader
|
|
||||||
}
|
|
||||||
|
|
||||||
return ReadGenbank(reader, options...), nil
|
return ReadGenbank(reader, options...), nil
|
||||||
}
|
}
|
||||||
|
@ -148,6 +148,11 @@ func ReadSequencesFromFile(filename string,
|
|||||||
|
|
||||||
file, err = Ropen(filename)
|
file, err = Ropen(filename)
|
||||||
|
|
||||||
|
if err == ErrNoContent {
|
||||||
|
log.Infof("file %s is empty", filename)
|
||||||
|
return ReadEmptyFile(options...)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("open file error: %v", err)
|
log.Fatalf("open file error: %v", err)
|
||||||
return obiiter.NilIBioSequence, err
|
return obiiter.NilIBioSequence, err
|
||||||
|
Reference in New Issue
Block a user