r513: merged pre- and post-cigar blen and mlen

This saves a bit memory and is cleaner.
This commit is contained in:
Heng Li
2017-10-16 10:55:18 -04:00
parent e6f525edaf
commit adf6cd7f52
5 changed files with 18 additions and 21 deletions
+7 -7
View File
@@ -125,6 +125,7 @@ static void mm_update_extra(mm_reg1_t *r, const uint8_t *qseq, const uint8_t *qu
if (p == 0) return;
mm_fix_cigar(r, qseq, tseq, &qshift, &tshift);
qseq += qshift, tseq += tshift; // qseq and tseq may be shifted due to the removal of leading I/D
r->blen = r->mlen = 0;
for (k = 0; k < p->n_cigar; ++k) {
uint32_t op = p->cigar[k]&0xf, len = p->cigar[k]>>4;
if (op == 0) { // match/mismatch
@@ -141,28 +142,27 @@ static void mm_update_extra(mm_reg1_t *r, const uint8_t *qseq, const uint8_t *qu
if (s < 0) s = 0;
else max = max > s? max : s;
}
p->n_ambi += n_ambi;
p->n_diff += n_diff;
toff += len, qoff += len, p->blen += len;
r->blen += len - n_ambi, r->mlen += len - (n_ambi + n_diff), p->n_ambi += n_ambi;
p->n_diff2 += n_diff2, p->blen2 += len - n_ambi;
toff += len, qoff += len;
} else if (op == 1) { // insertion
int n_ambi = 0;
for (l = 0; l < len; ++l)
if (qseq[qoff + l] > 3) ++n_ambi;
qoff += len, p->blen += len;
p->n_ambi += n_ambi, p->n_diff += len - n_ambi;
r->blen += len - n_ambi, p->n_ambi += n_ambi;
p->n_diff2 += 1.0f, ++p->blen2;
s -= q + e * len;
if (s < 0) s = 0;
qoff += len;
} else if (op == 2) { // deletion
int n_ambi = 0;
for (l = 0; l < len; ++l)
if (tseq[toff + l] > 3) ++n_ambi;
toff += len, p->blen += len;
p->n_ambi += n_ambi, p->n_diff += len - n_ambi;
r->blen += len - n_ambi, p->n_ambi += n_ambi;
p->n_diff2 += 1.0f, ++p->blen2;
s -= q + e * len;
if (s < 0) s = 0;
toff += len;
} else if (op == 3) { // intron
toff += len;
}