From beeb806829f0a7b0a7ab894b3e8f67de08ff1650 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Sat, 21 Oct 2017 19:54:04 -0400 Subject: [PATCH] r526: fixed a bug when HPC is in use It happened when the query HPC minimizer is longer than the reference HPC minimizer close to the beginning of a contig. We may get a negative coordinate, which causes an assertion failure. --- align.c | 2 + main.c | 2 +- tex/mm2-s3.sam.eval | 120 ++++++++++++++++++++++---------------------- tex/mm2.eval | 10 ++-- 4 files changed, 68 insertions(+), 66 deletions(-) diff --git a/align.c b/align.c index 0d54e5e..10fe689 100644 --- a/align.c +++ b/align.c @@ -400,6 +400,8 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int // compute rs0 and qs0 rs0 = (int32_t)a[r->as].x + 1 - (int32_t)(a[r->as].y>>32&0xff); qs0 = (int32_t)a[r->as].y + 1 - (int32_t)(a[r->as].y>>32&0xff); + if (rs0 < 0) rs0 = 0; // this may happen when HPC is in use + assert(qs0 >= 0); // this should never happen, or it is logic error rs1 = qs1 = 0; for (i = r->as - 1, l = 0; i >= 0 && a[i].x>>32 == a[r->as].x>>32; --i) { // inspect nearby seeds int32_t x = (int32_t)a[i].x + 1 - (int32_t)(a[i].y>>32&0xff); diff --git a/main.c b/main.c index 1b9447a..4b4a869 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ #include "mmpriv.h" #include "getopt.h" -#define MM_VERSION "2.2-r525-dirty" +#define MM_VERSION "2.2-r526-dirty" #ifdef __linux__ #include diff --git a/tex/mm2-s3.sam.eval b/tex/mm2-s3.sam.eval index d4ea612..83b81cb 100644 --- a/tex/mm2-s3.sam.eval +++ b/tex/mm2-s3.sam.eval @@ -1,60 +1,60 @@ -Q 60 18339260 12 0.000000654 18339260 -Q 59 51152 4 0.000000870 18390412 -Q 57 17831 2 0.000000978 18408243 -Q 56 48621 3 0.000001138 18456864 -Q 54 22767 4 0.000001353 18479631 -Q 53 19408 1 0.000001405 18499039 -Q 52 14488 4 0.000001620 18513527 -Q 51 13445 4 0.000001835 18526972 -Q 50 12408 2 0.000001942 18539380 -Q 49 11219 5 0.000002210 18550599 -Q 48 11333 3 0.000002370 18561932 -Q 47 16852 7 0.000002745 18578784 -Q 46 20284 8 0.000003172 18599068 -Q 45 16557 4 0.000003384 18615625 -Q 44 12134 7 0.000003758 18627759 -Q 43 25674 9 0.000004235 18653433 -Q 42 16752 15 0.000005035 18670185 -Q 41 13820 7 0.000005406 18684005 -Q 40 13195 10 0.000005937 18697200 -Q 39 12684 13 0.000006628 18709884 -Q 38 17095 9 0.000007102 18726979 -Q 37 17344 5 0.000007362 18744323 -Q 36 12333 9 0.000007837 18756656 -Q 35 12051 9 0.000008312 18768707 -Q 34 11978 12 0.000008945 18780685 -Q 33 12129 4 0.000009152 18792814 -Q 32 11703 14 0.000009891 18804517 -Q 31 11727 6 0.000010204 18816244 -Q 30 35149 31 0.000011829 18851393 -Q 29 11207 20 0.000012883 18862600 -Q 28 10842 23 0.000014094 18873442 -Q 27 15811 28 0.000015564 18889253 -Q 26 16984 39 0.000017613 18906237 -Q 25 13923 49 0.000020190 18920160 -Q 24 14244 44 0.000022499 18934404 -Q 23 13400 52 0.000025227 18947804 -Q 22 13198 39 0.000027266 18961002 -Q 21 13512 53 0.000030040 18974514 -Q 20 13462 55 0.000032916 18987976 -Q 19 13128 63 0.000036208 19001104 -Q 18 13418 50 0.000038812 19014522 -Q 17 13891 84 0.000043199 19028413 -Q 16 14196 86 0.000047683 19042609 -Q 15 14110 114 0.000053629 19056719 -Q 14 14769 150 0.000061453 19071488 -Q 13 17485 193 0.000071507 19088973 -Q 12 17466 259 0.000084998 19106439 -Q 11 17533 283 0.000099718 19123972 -Q 10 17783 312 0.000115925 19141755 -Q 9 18031 403 0.000136849 19159786 -Q 8 18268 489 0.000162217 19178054 -Q 7 19071 521 0.000189195 19197125 -Q 6 19904 655 0.000223083 19217029 -Q 5 19891 773 0.000263036 19236920 -Q 4 19956 1028 0.000316147 19256876 -Q 3 17141 1078 0.000371796 19274017 -Q 2 43396 6688 0.000717177 19317413 -Q 1 126848 25380 0.002017768 19444261 -Q 0 554003 371797 0.020553334 19998264 -U 1736 +Q 60 18345673 8 0.000000436 18345673 +Q 59 33966 4 0.000000653 18379639 +Q 58 34178 1 0.000000706 18413817 +Q 56 49138 1 0.000000758 18462955 +Q 54 22442 4 0.000000974 18485397 +Q 53 19070 2 0.000001081 18504467 +Q 52 14169 3 0.000001242 18518636 +Q 51 13233 4 0.000001457 18531869 +Q 50 12133 2 0.000001564 18544002 +Q 49 11138 4 0.000001778 18555140 +Q 48 11174 8 0.000002208 18566314 +Q 47 17139 4 0.000002422 18583453 +Q 46 20428 10 0.000002956 18603881 +Q 45 16503 3 0.000003115 18620384 +Q 44 11933 6 0.000003435 18632317 +Q 43 25392 11 0.000004020 18657709 +Q 42 16734 9 0.000004498 18674443 +Q 41 13826 10 0.000005030 18688269 +Q 40 13023 10 0.000005561 18701292 +Q 39 12686 10 0.000006092 18713978 +Q 38 17275 4 0.000006300 18731253 +Q 37 17241 2 0.000006401 18748494 +Q 36 12458 12 0.000007036 18760952 +Q 35 11981 5 0.000007298 18772933 +Q 34 12004 11 0.000007879 18784937 +Q 33 12111 7 0.000008246 18797048 +Q 32 11782 9 0.000008719 18808830 +Q 31 11811 7 0.000009086 18820641 +Q 30 33507 32 0.000010767 18854148 +Q 29 11243 21 0.000011874 18865391 +Q 28 10779 17 0.000012767 18876170 +Q 27 15733 24 0.000014027 18891903 +Q 26 16762 40 0.000016130 18908665 +Q 25 13811 49 0.000018708 18922476 +Q 24 14141 46 0.000021123 18936617 +Q 23 13429 55 0.000024010 18950046 +Q 22 13116 26 0.000025365 18963162 +Q 21 13436 46 0.000027771 18976598 +Q 20 13441 55 0.000030648 18990039 +Q 19 12988 53 0.000033416 19003027 +Q 18 13353 51 0.000036074 19016380 +Q 17 13782 77 0.000040094 19030162 +Q 16 14065 94 0.000045001 19044227 +Q 15 14044 124 0.000051474 19058271 +Q 14 14714 140 0.000058774 19072985 +Q 13 17459 197 0.000069040 19090444 +Q 12 17339 259 0.000082532 19107783 +Q 11 17381 280 0.000097097 19125164 +Q 10 17732 295 0.000112418 19142896 +Q 9 17959 416 0.000134023 19160855 +Q 8 18234 530 0.000161530 19179089 +Q 7 19048 514 0.000188143 19198137 +Q 6 19722 656 0.000222085 19217859 +Q 5 19753 775 0.000262143 19237612 +Q 4 19818 1030 0.000315359 19257430 +Q 3 17088 1100 0.000372149 19274518 +Q 2 43045 6708 0.000718569 19317563 +Q 1 126377 25255 0.002012761 19443940 +Q 0 554357 372087 0.020562901 19998297 +U 1703 diff --git a/tex/mm2.eval b/tex/mm2.eval index 2d0bed4..405d4e9 100644 --- a/tex/mm2.eval +++ b/tex/mm2.eval @@ -1,9 +1,9 @@ Q 60 32226 0 0.000000000 32226 -Q 20 266 1 0.000030777 32492 -Q 10 33 1 0.000061491 32525 -Q 9 120 1 0.000091898 32645 +Q 20 267 1 0.000030776 32493 +Q 10 34 1 0.000061487 32527 +Q 9 118 1 0.000091898 32645 Q 5 27 2 0.000153036 32672 Q 4 68 2 0.000213806 32740 -Q 1 314 100 0.003237127 33054 -Q 0 31 17 0.003747922 33085 +Q 1 314 101 0.003267381 33054 +Q 0 31 17 0.003778147 33085 U 3