mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
Patch reading of annotation from stdin
This commit is contained in:
@ -52,6 +52,7 @@ fast_kseq_p open_fast_sek_fd(int fd, bool keep_open, int shift) {
|
|||||||
fd = dup(fd);
|
fd = dup(fd);
|
||||||
|
|
||||||
fp = gzdopen(fd, "r");
|
fp = gzdopen(fd, "r");
|
||||||
|
|
||||||
return _open_fast_sek(fp, shift);
|
return _open_fast_sek(fp, shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,8 +68,11 @@ int64_t next_fast_sek(fast_kseq_t* iterator) {
|
|||||||
return -3;
|
return -3;
|
||||||
|
|
||||||
l = kseq_read(iterator->seq);
|
l = kseq_read(iterator->seq);
|
||||||
|
if (l < 0) l = 0;
|
||||||
|
|
||||||
iterator->finished = l==0;
|
iterator->finished = l==0;
|
||||||
if (l>0) l = gzoffset(iterator->filez);
|
if (l>0) l = gzoffset(iterator->filez);
|
||||||
|
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,8 +26,7 @@ func _FastseqReader(seqfile C.fast_kseq_p,
|
|||||||
|
|
||||||
slice := obiseq.MakeBioSequenceSlice()
|
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
|
s := seqfile.seq
|
||||||
|
|
||||||
sequence := C.GoBytes(unsafe.Pointer(s.seq.s), C.int(s.seq.l))
|
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++
|
i++
|
||||||
ii = 0
|
ii = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// log.Println("longueur : ",l,rep.Length())
|
||||||
|
|
||||||
}
|
}
|
||||||
if len(slice) > 0 {
|
if len(slice) > 0 {
|
||||||
iterator.Push(obiiter.MakeBioSequenceBatch(i, slice))
|
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())),
|
go _FastseqReader(C.open_fast_sek_stdin(C.int32_t(opt.QualityShift())),
|
||||||
newIter, opt.BatchSize())
|
newIter, opt.BatchSize())
|
||||||
|
|
||||||
|
parser := opt.ParseFastSeqHeader()
|
||||||
|
|
||||||
|
if parser != nil {
|
||||||
|
return IParseFastSeqHeaderBatch(newIter, options...)
|
||||||
|
}
|
||||||
|
|
||||||
return newIter
|
return newIter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ func ReadBioSequencesBatch(filenames ...string) (obiiter.IBioSequenceBatch, erro
|
|||||||
opts = append(opts, obiformats.OptionsFastSeqHeaderParser(obiformats.ParseGuessedFastSeqHeader))
|
opts = append(opts, obiformats.OptionsFastSeqHeaderParser(obiformats.ParseGuessedFastSeqHeader))
|
||||||
}
|
}
|
||||||
|
|
||||||
nworkers := obioptions.CLIParallelWorkers() / 4
|
nworkers := obioptions.CLIParallelWorkers() // / 4
|
||||||
if nworkers < 2 {
|
if nworkers < 2 {
|
||||||
nworkers = 2
|
nworkers = 2
|
||||||
}
|
}
|
||||||
@ -94,7 +94,7 @@ func ReadBioSequencesBatch(filenames ...string) (obiiter.IBioSequenceBatch, erro
|
|||||||
opts = append(opts, obiformats.OptionsQualityShift(CLIInputQualityShift()))
|
opts = append(opts, obiformats.OptionsQualityShift(CLIInputQualityShift()))
|
||||||
|
|
||||||
if len(filenames) == 0 {
|
if len(filenames) == 0 {
|
||||||
|
log.Printf("Reading sequences from stdin in %s\n", CLIInputFormat())
|
||||||
switch CLIInputFormat() {
|
switch CLIInputFormat() {
|
||||||
case "ecopcr":
|
case "ecopcr":
|
||||||
iterator = obiformats.ReadEcoPCRBatch(os.Stdin, opts...)
|
iterator = obiformats.ReadEcoPCRBatch(os.Stdin, opts...)
|
||||||
|
Reference in New Issue
Block a user