mate-SW for all high-scoring hits
This commit is contained in:
parent
38fc5c8822
commit
6c1a113753
|
|
@ -229,20 +229,19 @@ int mem_sam_pe(const mem_opt_t *opt, const bntseq_t *bns, const uint8_t *pac, co
|
||||||
|
|
||||||
int n = 0, i, j, z[2], o, subo;
|
int n = 0, i, j, z[2], o, subo;
|
||||||
kstring_t str;
|
kstring_t str;
|
||||||
mem_alnreg_t b[2][2];
|
mem_alnreg_v b[2];
|
||||||
|
|
||||||
str.l = str.m = 0; str.s = 0;
|
str.l = str.m = 0; str.s = 0;
|
||||||
// perform SW for the best alignment
|
// perform SW for the best alignment
|
||||||
|
kv_init(b[0]); kv_init(b[1]);
|
||||||
for (i = 0; i < 2; ++i)
|
for (i = 0; i < 2; ++i)
|
||||||
for (j = 0; j < 2; ++j) b[i][j].score = -1;
|
for (j = 0; j < a[i].n; ++j)
|
||||||
for (i = 0; i < 2; ++i) {
|
if (a[i].a[j].score >= a[i].a[0].score - opt->pen_unpaired)
|
||||||
for (j = 0; j < a[i].n && j < 2; ++j) b[i][j] = a[i].a[j];
|
kv_push(mem_alnreg_t, b[i], a[i].a[j]);
|
||||||
if (b[i][0].score > 0 && b[i][1].score > 0 && b[i][1].score < b[i][0].score * 0.8)
|
|
||||||
b[i][1].score = -1;
|
|
||||||
}
|
|
||||||
for (i = 0; i < 2; ++i)
|
for (i = 0; i < 2; ++i)
|
||||||
for (j = 0; j < 2; ++j)
|
for (j = 0; j < b[i].n; ++j)
|
||||||
if (b[i][j].score > 0) n += mem_matesw(opt, bns->l_pac, pac, pes, &b[i][j], s[!i].l_seq, (uint8_t*)s[!i].seq, &a[!i]);
|
n += mem_matesw(opt, bns->l_pac, pac, pes, &b[i].a[j], s[!i].l_seq, (uint8_t*)s[!i].seq, &a[!i]);
|
||||||
|
free(b[0].a); free(b[1].a);
|
||||||
mem_mark_primary_se(opt, a[0].n, a[0].a);
|
mem_mark_primary_se(opt, a[0].n, a[0].a);
|
||||||
mem_mark_primary_se(opt, a[1].n, a[1].a);
|
mem_mark_primary_se(opt, a[1].n, a[1].a);
|
||||||
if (opt->flag&MEM_F_NOPAIRING) goto no_pairing;
|
if (opt->flag&MEM_F_NOPAIRING) goto no_pairing;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue