sorting chains while filtering chains
This commit is contained in:
parent
a61288c768
commit
797a8c147e
12
bwamem.c
12
bwamem.c
|
|
@ -220,7 +220,7 @@ void mem_chain_flt(const mem_opt_t *opt, mem_chain_t *chn)
|
||||||
for (i = 0; i < chn->n; ++i) {
|
for (i = 0; i < chn->n; ++i) {
|
||||||
mem_chain1_t *c = &chn->chains[i];
|
mem_chain1_t *c = &chn->chains[i];
|
||||||
int w = 0;
|
int w = 0;
|
||||||
for (j = 0; j < c->n; ++j) w += c->seeds[j].len;
|
for (j = 0; j < c->n; ++j) w += c->seeds[j].len; // FIXME: take care of seed overlaps
|
||||||
a[i].beg = c->seeds[0].qbeg;
|
a[i].beg = c->seeds[0].qbeg;
|
||||||
a[i].end = c->seeds[c->n-1].qbeg + c->seeds[c->n-1].len;
|
a[i].end = c->seeds[c->n-1].qbeg + c->seeds[c->n-1].len;
|
||||||
a[i].w = w;
|
a[i].w = w;
|
||||||
|
|
@ -228,6 +228,16 @@ void mem_chain_flt(const mem_opt_t *opt, mem_chain_t *chn)
|
||||||
a[i].p2 = 0;
|
a[i].p2 = 0;
|
||||||
}
|
}
|
||||||
ks_introsort(mem_flt, chn->n, a);
|
ks_introsort(mem_flt, chn->n, a);
|
||||||
|
{ // reorder chains such that the best chain appears first
|
||||||
|
mem_chain1_t *swap;
|
||||||
|
swap = malloc(sizeof(mem_chain1_t) * chn->n);
|
||||||
|
for (i = 0; i < chn->n; ++i) {
|
||||||
|
swap[i] = *((mem_chain1_t*)a[i].p);
|
||||||
|
a[i].p = &chn->chains[i]; // as we will memcpy() below, a[i].p is changed
|
||||||
|
}
|
||||||
|
memcpy(chn->chains, swap, sizeof(mem_chain1_t) * chn->n);
|
||||||
|
free(swap);
|
||||||
|
}
|
||||||
for (i = 1, n = 1; i < chn->n; ++i) {
|
for (i = 1, n = 1; i < chn->n; ++i) {
|
||||||
for (j = 0; j < n; ++j) {
|
for (j = 0; j < n; ++j) {
|
||||||
int b_max = a[j].beg > a[i].beg? a[j].beg : a[i].beg;
|
int b_max = a[j].beg > a[i].beg? a[j].beg : a[i].beg;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue