INNER CODE UNIT · C++
cannonical_kmer
fbreitwieser/krakenuniq · src/classify.cpp:1031
uint64_t cannonical_kmer = KrakenDatabases[db_id]->canonical_representation(*kmer_ptr);
const uint64_t minimizer = KrakenDatabases[db_id]->bin_key(cannonical_kmer); // TODO: inefficient because minimizer will also be computed in kmer_query()
if (KrakenDatabases[db_id]->is_minimizer_in_chunk(minimizer, db_chunk_id)) {
uint32_t* val_ptr = KrakenDatabases[db_id]->kmer_query_with_db_chunks(
cannonical_kmer, &db_statuses[db_id].current_bin_key,
&db_statuses[db_id].current_min_pos, &db_statuses[db_id].current_max_pos);
if (val_ptr)
taxon = *val_ptr;
}
}
taxa.push_back(taxon);
}
}
try {
const uint32_t taxa_size = taxa.size();
fp.write((char*) &seq_idx, 1 * sizeof(uint32_t)); // seq_idx