INNER CODE UNIT · C++
n_kmers
fbreitwieser/krakenuniq · src/classify.cpp:914
size_t n_kmers = dna.seq.size()-KrakenDatabases[0]->get_k()+1;
taxa.reserve(n_kmers);
ambig_list.reserve(n_kmers);
KmerScanner scanner(dna.seq);
while ((kmer_ptr = scanner.next_kmer()) != NULL) {
taxon = 0;
if (scanner.ambig_kmer()) {
//append_hitlist_string(hitlist_string, last_taxon, last_counter, ambig_taxon);
ambig_list.push_back(1);
}
else {
uint64_t cannonical_kmer = KrakenDatabases[0]->canonical_representation(*kmer_ptr);
ambig_list.push_back(0);
// go through multiple databases to map k-mer
for (size_t i=0; i<KrakenDatabases.size(); ++i) {
uint32_t* val_ptr = KrakenDatabases[i]->kmer_query(
cannonical_kmer, &db_statuses[i].current_bin_key,
&db_statuses[i].current_min_pos, &db_statuses[i].current_max_pos);