diff --git a/bseq.c b/bseq.c index 54a25f6..d20b983 100644 --- a/bseq.c +++ b/bseq.c @@ -41,15 +41,15 @@ bseq1_t *bseq_read(int chunk_size, int *n_, void *ks1_, void *ks2_) size += seqs[n++].l_seq; if (ks2) { trim_readno(&ks2->name); - kseq2bseq1(ks2, &seqs[n++]); + kseq2bseq1(ks2, &seqs[n]); size += seqs[n++].l_seq; } if (size >= chunk_size) break; } - *n_ = n; - if (size < chunk_size) { // test if the 2nd file is finished + if (size == 0) { // test if the 2nd file is finished if (ks2 && kseq_read(ks2) >= 0) fprintf(stderr, "[W::%s] the 1st file has fewer sequences.\n", __func__); } + *n_ = n; return seqs; } diff --git a/bwamem.c b/bwamem.c index b17d23b..f617fcf 100644 --- a/bwamem.c +++ b/bwamem.c @@ -644,21 +644,21 @@ int mem_process_seqs(const mem_opt_t *opt, const bwt_t *bwt, const bntseq_t *bns #ifdef HAVE_PTHREAD if (opt->n_threads == 1) { worker1(w); - mem_pestat(opt, bns->l_pac, n, regs, pes); + if (opt->is_pe) mem_pestat(opt, bns->l_pac, n, regs, pes); worker2(w); } else { pthread_t *tid; tid = (pthread_t*)calloc(opt->n_threads, sizeof(pthread_t)); for (i = 0; i < opt->n_threads; ++i) pthread_create(&tid[i], 0, worker1, &w[i]); for (i = 0; i < opt->n_threads; ++i) pthread_join(tid[i], 0); - mem_pestat(opt, bns->l_pac, n, regs, pes); + if (opt->is_pe) mem_pestat(opt, bns->l_pac, n, regs, pes); for (i = 0; i < opt->n_threads; ++i) pthread_create(&tid[i], 0, worker2, &w[i]); for (i = 0; i < opt->n_threads; ++i) pthread_join(tid[i], 0); free(tid); } #else worker1(w); - mem_pestat(opt, bns->l_pac, n, regs, pes); + if (opt->is_pe) mem_pestat(opt, bns->l_pac, n, regs, pes); worker2(w); #endif for (i = 0; i < n; ++i) { diff --git a/fastmap.c b/fastmap.c index 698b3e1..56674f9 100644 --- a/fastmap.c +++ b/fastmap.c @@ -58,7 +58,7 @@ int main_mem(int argc, char *argv[]) ks = kseq_init(fp); if (optind + 2 < argc) { fp2 = gzopen(argv[optind + 2], "r"); - ks2 = kseq_init(fp); + ks2 = kseq_init(fp2); opt->is_pe = 1; } while ((seqs = bseq_read(opt->n_threads * opt->chunk_size, &n, ks, ks2)) != 0) {