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);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…