From 696ebce66e64a74d329ed7564f9b1f99d12e6cb1 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Mon, 3 Jul 2017 00:52:00 -0400 Subject: [PATCH] backup; still buggy --- align.c | 3 ++- hit.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/align.c b/align.c index d6b7dc5..a0d58af 100644 --- a/align.c +++ b/align.c @@ -242,7 +242,7 @@ static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int if (r->cnt - (j + 1) >= opt->min_cnt) { mm_split_reg(r, r2, j + 1, qlen, a); if (j + 1 < opt->min_cnt) - r2->id = r->id, r->id = -1; + r2->id = r->id, r2->parent = r2->id, r->id = -1, r->parent = MM_PARENT_TMP_PRI; } break; } else r->p->dp_score += ez->score; @@ -305,6 +305,7 @@ mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *m } } *n_regs_ = n_regs; + mm_sync_regs(km, n_regs, regs); kfree(km, qseq0[0]); kfree(km, qseq0[1]); kfree(km, ez.cigar); mm_filter_regs(km, opt, n_regs_, regs); diff --git a/hit.c b/hit.c index 1222fba..fd0adfd 100644 --- a/hit.c +++ b/hit.c @@ -85,7 +85,7 @@ void mm_update_parent(void *km, float mask_level, int n, mm_reg1_t *r) // due to if (n <= 0) return; for (i = 0; i < n; ++i) if (r[i].id == r[i].parent || r[i].parent < 0) ++n_pri; - if (n_pri <= 1) return; + if (n_pri <= 1) return; // FIXME: this is not right w = (int*)kmalloc(km, n_pri * sizeof(int)); for (i = j = 0; i < n; ++i) // find the first primary if (r[i].id == r[i].parent) break;