From 3a5486325aa6037439591aa76136e703be217520 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Fri, 30 Jun 2017 15:39:05 -0400 Subject: [PATCH] r123: fixed a mem leak; more presets --- hit.c | 1 + main.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/hit.c b/hit.c index b6585d1..f367ef1 100644 --- a/hit.c +++ b/hit.c @@ -141,6 +141,7 @@ void mm_select_sub(void *km, float mask_level, float pri_ratio, int *n_, mm_reg1 for (i = k = 0; i < n; ++i) if (r[i].parent == i || r[i].score >= r[r[i].parent].score * pri_ratio) r[k++] = r[i]; + else if (r[i].p) free(r[i].p); if (k != n) mm_sync_regs(km, k, r); // removing hits requires sync() *n_ = k; } diff --git a/main.c b/main.c index dfe4ddc..8703e24 100644 --- a/main.c +++ b/main.c @@ -10,7 +10,7 @@ #include "minimap.h" #include "mmpriv.h" -#define MM_VERSION "2.0-r122-pre" +#define MM_VERSION "2.0-r123-pre" void liftrlimit() { @@ -109,13 +109,21 @@ int main(int argc, char *argv[]) else if (strcmp(optarg, "paf") == 0) opt.flag &= ~MM_F_OUT_SAM; else { fprintf(stderr, "[E::%s] unknown output format '%s'\n", __func__, optarg); - return 0; + return 1; } } else if (c == 'x') { if (strcmp(optarg, "ava10k") == 0) { opt.flag |= MM_F_AVA | MM_F_NO_SELF; opt.min_chain_score = 100, opt.pri_ratio = 0.0f; is_hpc = 1, k = 19, w = 5; + } else if (strcmp(optarg, "sam10k") == 0) { + opt.flag = MM_F_OUT_SAM | MM_F_CIGAR; + is_hpc = 1, k = 19; + } else if (strcmp(optarg, "paf10k") == 0) { + is_hpc = 1, k = 19; + } else { + fprintf(stderr, "[E::%s] unknown preset '%s'\n", __func__, optarg); + return 1; } } } @@ -141,6 +149,8 @@ int main(int argc, char *argv[]) fprintf(stderr, " -p FLOAT threshold to output a mapping [%g]\n", opt.pri_ratio); fprintf(stderr, " -x STR preset (recommended to be applied before other options) []\n"); fprintf(stderr, " ava10k: -Hk19 -Sw5 -p0 -m100 (PacBio/ONT all-vs-all read mapping)\n"); + fprintf(stderr, " sam10k: -Hk19 -Fsam (PacBio/ONT vs reference alignment)\n"); + fprintf(stderr, " paf10k: -Hk19 (PacBio/ONT vs reference mapping/alignment)\n"); fprintf(stderr, " Alignment:\n"); fprintf(stderr, " -A INT matching score [%d]\n", opt.a); fprintf(stderr, " -B INT mismatch penalty [%d]\n", opt.b);