Patch reading of annotation from stdin

This commit is contained in:
2022-09-29 14:48:05 +02:00
parent d0f63fda56
commit 65210755cc
3 changed files with 17 additions and 5 deletions

View File

@ -52,6 +52,7 @@ fast_kseq_p open_fast_sek_fd(int fd, bool keep_open, int shift) {
fd = dup(fd);
fp = gzdopen(fd, "r");
return _open_fast_sek(fp, shift);
}
@ -67,8 +68,11 @@ int64_t next_fast_sek(fast_kseq_t* iterator) {
return -3;
l = kseq_read(iterator->seq);
if (l < 0) l = 0;
iterator->finished = l==0;
if (l>0) l = gzoffset(iterator->filez);
return l;
}

View File

@ -26,8 +26,7 @@ func _FastseqReader(seqfile C.fast_kseq_p,
slice := obiseq.MakeBioSequenceSlice()
for l := int64(C.next_fast_sek(seqfile)); l > 0; l = int64(C.next_fast_sek(seqfile)) {
for l := int64(C.next_fast_sek(seqfile)); l != 0; l = int64(C.next_fast_sek(seqfile)) {
s := seqfile.seq
sequence := C.GoBytes(unsafe.Pointer(s.seq.s), C.int(s.seq.l))
@ -77,6 +76,9 @@ func _FastseqReader(seqfile C.fast_kseq_p,
i++
ii = 0
}
// log.Println("longueur : ",l,rep.Length())
}
if len(slice) > 0 {
iterator.Push(obiiter.MakeBioSequenceBatch(i, slice))
@ -148,6 +150,12 @@ func ReadFastSeqBatchFromStdin(options ...WithOption) obiiter.IBioSequenceBatch
go _FastseqReader(C.open_fast_sek_stdin(C.int32_t(opt.QualityShift())),
newIter, opt.BatchSize())
parser := opt.ParseFastSeqHeader()
if parser != nil {
return IParseFastSeqHeaderBatch(newIter, options...)
}
return newIter
}

View File

@ -82,7 +82,7 @@ func ReadBioSequencesBatch(filenames ...string) (obiiter.IBioSequenceBatch, erro
opts = append(opts, obiformats.OptionsFastSeqHeaderParser(obiformats.ParseGuessedFastSeqHeader))
}
nworkers := obioptions.CLIParallelWorkers() / 4
nworkers := obioptions.CLIParallelWorkers() // / 4
if nworkers < 2 {
nworkers = 2
}
@ -94,7 +94,7 @@ func ReadBioSequencesBatch(filenames ...string) (obiiter.IBioSequenceBatch, erro
opts = append(opts, obiformats.OptionsQualityShift(CLIInputQualityShift()))
if len(filenames) == 0 {
log.Printf("Reading sequences from stdin in %s\n", CLIInputFormat())
switch CLIInputFormat() {
case "ecopcr":
iterator = obiformats.ReadEcoPCRBatch(os.Stdin, opts...)
@ -129,7 +129,7 @@ func ReadBioSequencesBatch(filenames ...string) (obiiter.IBioSequenceBatch, erro
if CLINoInputOrder() {
nreader = obioptions.CLIParallelWorkers()
}
iterator = obiformats.ReadSequencesBatchFromFiles(
filenames,
reader,