mirror of
https://github.com/lh3/minimap2.git
synced 2026-10-05 09:08:11 +08:00
r708: implemented double Z-drop thresholds (#112)
When aligning long reads, we would prefer to align through low-quality regions. This requires a large Z-drop threshold. However, to find small inversions, we need to use a small Z-drop. This commit address this conflict with two Z-drop thresholds. When Z-drop exceeds the smaller threshold, we perform a local alignment to check if there is a potential inversion. If there is one, we break the alignment; otherwise we break the alignment only if Z-drop excess the larger threshold. This commit also fixes a bug that reported wrong coordinates when the inversion is on the forward strand (#112).
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
#include "mmpriv.h"
|
||||
#include "getopt.h"
|
||||
|
||||
#define MM_VERSION "2.8-r707-dirty"
|
||||
#define MM_VERSION "2.8-r708-dirty"
|
||||
|
||||
#ifdef __linux__
|
||||
#include <sys/resource.h>
|
||||
@@ -139,7 +139,6 @@ int main(int argc, char *argv[])
|
||||
else if (c == 'm') opt.min_chain_score = atoi(optarg);
|
||||
else if (c == 'A') opt.a = atoi(optarg);
|
||||
else if (c == 'B') opt.b = atoi(optarg);
|
||||
else if (c == 'z') opt.zdrop = atoi(optarg);
|
||||
else if (c == 's') opt.min_dp_max = atoi(optarg);
|
||||
else if (c == 'C') opt.noncan = atoi(optarg);
|
||||
else if (c == 'I') ipt.batch_size = mm_parse_num(optarg);
|
||||
@@ -209,6 +208,9 @@ int main(int argc, char *argv[])
|
||||
fprintf(stderr, "[ERROR]\033[1;31m unrecognized cDNA direction\033[0m\n");
|
||||
return 1;
|
||||
}
|
||||
} else if (c == 'z') {
|
||||
opt.zdrop = opt.zdrop_inv = strtol(optarg, &s, 10);
|
||||
if (*s == ',') opt.zdrop_inv = strtol(s + 1, &s, 10);
|
||||
} else if (c == 'O') {
|
||||
opt.q = opt.q2 = strtol(optarg, &s, 10);
|
||||
if (*s == ',') opt.q2 = strtol(s + 1, &s, 10);
|
||||
@@ -252,7 +254,7 @@ int main(int argc, char *argv[])
|
||||
fprintf(fp_help, " -B INT mismatch penalty [%d]\n", opt.b);
|
||||
fprintf(fp_help, " -O INT[,INT] gap open penalty [%d,%d]\n", opt.q, opt.q2);
|
||||
fprintf(fp_help, " -E INT[,INT] gap extension penalty; a k-long gap costs min{O1+k*E1,O2+k*E2} [%d,%d]\n", opt.e, opt.e2);
|
||||
fprintf(fp_help, " -z INT Z-drop score [%d]\n", opt.zdrop);
|
||||
fprintf(fp_help, " -z INT[,INT] Z-drop score and inversion Z-drop score [%d,%d]\n", opt.zdrop, opt.zdrop_inv);
|
||||
fprintf(fp_help, " -s INT minimal peak DP alignment score [%d]\n", opt.min_dp_max);
|
||||
fprintf(fp_help, " -u CHAR how to find GT-AG. f:transcript strand, b:both strands, n:don't match GT-AG [n]\n");
|
||||
fprintf(fp_help, " Input/Output:\n");
|
||||
|
||||
Reference in New Issue
Block a user