INNER CODE UNIT · C
na
lh3/seqtk · seqtk.c:487
na = seq->seq.s[beg]; nb = seq_nt16_table[na]; nc = bitcnt_table[nb];
memset(cnt, 0, 11 * sizeof(int64_t));
for (i = beg; i < end; ++i) {
int is_CpG = 0, a, b, c;
a = na; b = nb; c = nc;
na = seq->seq.s[i+1]; nb = seq_nt16_table[na]; nc = bitcnt_table[nb];
if (b == 2 || b == 10) { // C or Y
if (nb == 4 || nb == 5) is_CpG = 1;
} else if (b == 4 || b == 5) { // G or R
if (lb == 2 || lb == 10) is_CpG = 1;
}
if (upper_only == 0 || isupper(a)) {
if (c > 1) ++cnt[c+2];
if (c == 1) ++cnt[seq_nt16to4_table[b]];
if (b == 10 || b == 5) ++cnt[9];
else if (c == 2) {
++cnt[8];
}