bugfix: bug in the new ksw.c
On my test data, one alignment is different, caused by polyA
This commit is contained in:
parent
28a7d501f2
commit
557daabf38
|
|
@ -128,17 +128,23 @@ void bsw2_pair1(const bsw2opt_t *opt, int64_t l_pac, const uint8_t *pac, const b
|
|||
}
|
||||
#ifndef _NO_SSE2
|
||||
{ // FIXME!!! The following block has not been tested since the update of the ksw library
|
||||
int flag = KSW_XSUBO | KSW_XSTOP | KSW_XSTART | (l_mseq * g_mat[0] < 250? KSW_XBYTE : 0);
|
||||
int flag = KSW_XSUBO | KSW_XSTART | (l_mseq * g_mat[0] < 250? KSW_XBYTE : 0) | opt->t;
|
||||
kswr_t aln;
|
||||
aln = ksw_align(l_mseq, seq, end - beg, ref, 5, g_mat, opt->q, opt->r, flag, 0);
|
||||
a->G = aln.score;
|
||||
a->G2 = aln.score2;
|
||||
if (a->G < opt->t) a->G = 0;
|
||||
if (a->G2 < opt->t) a->G2 = 0;
|
||||
if (a->G2) a->flag |= BSW2_FLAG_TANDEM;
|
||||
a->k = beg + aln.tb;
|
||||
a->len = aln.te - aln.tb;
|
||||
a->len = aln.te - aln.tb + 1;
|
||||
a->beg = aln.qb;
|
||||
a->end = aln.qe;
|
||||
a->end = aln.qe + 1;
|
||||
/*
|
||||
printf("[Q] "); for (i = 0; i < l_mseq; ++i) putchar("ACGTN"[(int)seq[i]]); putchar('\n');
|
||||
printf("[R] "); for (i = 0; i < end - beg; ++i) putchar("ACGTN"[(int)ref[i]]); putchar('\n');
|
||||
printf("G=%d,G2=%d,beg=%d,end=%d,k=%lld,len=%d\n", a->G, a->G2, a->beg, a->end, a->k, a->len);
|
||||
*/
|
||||
}
|
||||
#else
|
||||
{
|
||||
|
|
|
|||
6
ksw.c
6
ksw.c
|
|
@ -211,7 +211,7 @@ end_loop16:
|
|||
low = te - i; high = te + i;
|
||||
for (i = 0; i < n_b; ++i) {
|
||||
int e = (int32_t)b[i];
|
||||
if ((e < low || e > high) && b[i]>>32 > (uint32_t)r.score2)
|
||||
if ((e < low || e > high) && (int)(b[i]>>32) > r.score2)
|
||||
r.score2 = b[i]>>32, r.te2 = e;
|
||||
}
|
||||
}
|
||||
|
|
@ -311,7 +311,7 @@ end_loop8:
|
|||
low = te - i; high = te + i;
|
||||
for (i = 0; i < n_b; ++i) {
|
||||
int e = (int32_t)b[i];
|
||||
if ((e < low || e > high) && b[i]>>32 > (uint32_t)r.score2)
|
||||
if ((e < low || e > high) && (int)(b[i]>>32) > r.score2)
|
||||
r.score2 = b[i]>>32, r.te2 = e;
|
||||
}
|
||||
}
|
||||
|
|
@ -587,7 +587,7 @@ int main(int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
if (minsc > 0xffff) minsc = 0xffff;
|
||||
if (minsc > 0) xtra |= KSW_XSUBO | minsc;
|
||||
xtra |= KSW_XSUBO | minsc;
|
||||
// initialize scoring matrix
|
||||
for (i = k = 0; i < 4; ++i) {
|
||||
for (j = 0; j < 4; ++j)
|
||||
|
|
|
|||
Loading…
Reference in New Issue