diff --git a/fastmap.c b/fastmap.c index a5cafd7..4cf92b2 100644 --- a/fastmap.c +++ b/fastmap.c @@ -26,12 +26,13 @@ int main_mem(int argc, char *argv[]) void *ko = 0, *ko2 = 0; opt = mem_opt_init(); - while ((c = getopt(argc, argv, "aCPHk:c:v:s:r:t:R:")) >= 0) { + while ((c = getopt(argc, argv, "paCPHk:c:v:s:r:t:R:")) >= 0) { if (c == 'k') opt->min_seed_len = atoi(optarg); else if (c == 't') opt->n_threads = atoi(optarg), opt->n_threads = opt->n_threads > 1? opt->n_threads : 1; else if (c == 'P') opt->flag |= MEM_F_NOPAIRING; else if (c == 'H') opt->flag |= MEM_F_HARDCLIP; else if (c == 'a') opt->flag |= MEM_F_ALL; + else if (c == 'p') opt->flag |= MEM_F_PE; else if (c == 'c') opt->max_occ = atoi(optarg); else if (c == 'v') bwa_verbose = atoi(optarg); else if (c == 'r') opt->split_factor = atof(optarg); @@ -42,7 +43,7 @@ int main_mem(int argc, char *argv[]) } if (optind + 1 >= argc) { fprintf(stderr, "\n"); - fprintf(stderr, "Usage: bwa mem [options] \n\n"); + fprintf(stderr, "Usage: bwa mem [options] [in2.fq]\n\n"); fprintf(stderr, "Options: -k INT minimum seed length [%d]\n", opt->min_seed_len); fprintf(stderr, " -t INT number of threads [%d]\n", opt->n_threads); fprintf(stderr, " -c INT skip seeds with more than INT occurrences [%d]\n", opt->max_occ); @@ -51,6 +52,7 @@ int main_mem(int argc, char *argv[]) fprintf(stderr, " -R STR read group header line such as '@RG\\tID:foo\\tSM:bar' [null]\n"); fprintf(stderr, " -v INT verbose level [%d]\n", bwa_verbose); fprintf(stderr, " -a output all alignments for SE or unpaired PE\n"); + fprintf(stderr, " -p first query file consists of interleaved paired-end sequences\n"); fprintf(stderr, " -P perform mate SW only but skip pairing\n"); fprintf(stderr, " -H hard clipping\n"); fprintf(stderr, " -C append FASTA/FASTQ comment to SAM output\n"); @@ -58,6 +60,7 @@ int main_mem(int argc, char *argv[]) free(opt); return 1; } + mem_fill_scmat(opt->a, opt->b, opt->mat); if ((idx = bwa_idx_load(argv[optind], BWA_IDX_ALL)) == 0) return 1; // FIXME: memory leak bwa_print_sam_hdr(idx->bns, rg_line); @@ -66,10 +69,15 @@ int main_mem(int argc, char *argv[]) fp = gzdopen(fd, "r"); ks = kseq_init(fp); if (optind + 2 < argc) { - ko2 = kopen(argv[optind + 2], &fd2); - fp2 = gzdopen(fd2, "r"); - ks2 = kseq_init(fp2); - opt->flag |= MEM_F_PE; + if (opt->flag&MEM_F_PE) { + if (bwa_verbose >= 2) + fprintf(stderr, "[W::%s] when '-p' is in use, the second query file will be ignored.\n", __func__); + } else { + ko2 = kopen(argv[optind + 2], &fd2); + fp2 = gzdopen(fd2, "r"); + ks2 = kseq_init(fp2); + opt->flag |= MEM_F_PE; + } } while ((seqs = bseq_read(opt->chunk_size * (ko2? 2 : 1), &n, ks, ks2)) != 0) { int64_t size = 0;