mirror of
https://github.com/lh3/minimap2.git
synced 2026-10-04 03:48:13 +08:00
r512: option to filter poorly aligned reads
This commit is contained in:
@@ -42,6 +42,26 @@ void mm_select_sub_multi(void *km, float pri_ratio, float pri1, float pri2, int
|
||||
}
|
||||
}
|
||||
|
||||
void mm_set_pe_thru(const int *qlens, int *n_regs, mm_reg1_t **regs)
|
||||
{
|
||||
int s, i, n_pri[2], pri[2];
|
||||
n_pri[0] = n_pri[1] = 0;
|
||||
pri[0] = pri[1] = -1;
|
||||
for (s = 0; s < 2; ++s)
|
||||
for (i = 0; i < n_regs[s]; ++i)
|
||||
if (regs[s][i].id == regs[s][i].parent)
|
||||
++n_pri[s], pri[s] = i;
|
||||
if (n_pri[0] == 1 && n_pri[1] == 1) {
|
||||
mm_reg1_t *p = ®s[0][pri[0]];
|
||||
mm_reg1_t *q = ®s[1][pri[1]];
|
||||
if (p->rid == q->rid && p->rev == q->rev && abs(p->rs - q->rs) < 3 && abs(p->re - p->re) < 3
|
||||
&& ((p->qs == 0 && qlens[1] - q->qe == 0) || (q->qs == 0 && qlens[0] - p->qe == 0)))
|
||||
{
|
||||
p->pe_thru = q->pe_thru = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#include "ksort.h"
|
||||
|
||||
typedef struct {
|
||||
@@ -152,4 +172,6 @@ void mm_pair(void *km, int max_gap_ref, int pe_bonus, int sub_diff, int match_sc
|
||||
|
||||
kfree(km, a);
|
||||
kfree(km, sc.a);
|
||||
|
||||
mm_set_pe_thru(qlens, n_regs, regs);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user