SeqReader()
: btllib::SeqReader
@@ -133,6 +133,10 @@ - s -
diff --git a/docs/nthash__kmer_8hpp_source.html b/docs/nthash__kmer_8hpp_source.html
index 15ae2398..c1f9abac 100644
--- a/docs/nthash__kmer_8hpp_source.html
+++ b/docs/nthash__kmer_8hpp_source.html
@@ -310,271 +310,288 @@
-
-
-
-
-
- 320 if (pos >= seq_len - k) {
-
-
- 323 if (hashing_internals::SEED_TAB[(
unsigned char)seq[pos + k]] ==
- 324 hashing_internals::SEED_N) {
-
-
-
- 328 fwd_hash = next_forward_hash(fwd_hash, k, seq[pos], seq[pos + k]);
- 329 rev_hash = next_reverse_hash(rev_hash, k, seq[pos], seq[pos + k]);
- 330 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
-
-
-
-
-
-
-
-
-
-
-
-
- 347 if (SEED_TAB[(
unsigned char)seq[pos - 1]] == SEED_N && pos >= k) {
-
-
-
- 351 if (SEED_TAB[(
unsigned char)seq[pos - 1]] == SEED_N) {
-
-
- 354 fwd_hash = prev_forward_hash(fwd_hash, k, seq[pos + k - 1], seq[pos - 1]);
- 355 rev_hash = prev_reverse_hash(rev_hash, k, seq[pos + k - 1], seq[pos - 1]);
- 356 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
-
-
-
-
-
-
- 369 if (pos >= seq_len - k) {
-
-
- 372 return peek(seq[pos + k]);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 398 if (SEED_TAB[(
unsigned char)char_in] == SEED_N) {
-
-
- 401 const uint64_t fwd = next_forward_hash(fwd_hash, k, seq[pos], char_in);
- 402 const uint64_t rev = next_reverse_hash(rev_hash, k, seq[pos], char_in);
- 403 extend_hashes(fwd, rev, k, num_hashes, hash_arr.get());
-
+ 307 void set_seq(
const std::string& seq,
size_t pos = 0)
+
+ 309 this->seq = seq.data();
+ 310 this->seq_len = seq.size();
+
+ 312 this->initialized =
false;
+ 313 this->hash_arr.reset(
new uint64_t[num_hashes]);
+
+ 315 "NtHash: sequence length (" + std::to_string(this->seq_len) +
+ 316 ") is smaller than k (" + std::to_string(k) +
")");
+
+ 318 "NtHash: passed position (" + std::to_string(pos) +
+ 319 ") is larger than sequence length (" +
+ 320 std::to_string(this->seq_len) +
")");
+
+
+
+
+
+
+
+ 340 if (pos >= seq_len - k) {
+
+
+ 343 if (hashing_internals::SEED_TAB[(
unsigned char)seq[pos + k]] ==
+ 344 hashing_internals::SEED_N) {
+
+
+
+ 348 fwd_hash = next_forward_hash(fwd_hash, k, seq[pos], seq[pos + k]);
+ 349 rev_hash = next_reverse_hash(rev_hash, k, seq[pos], seq[pos + k]);
+ 350 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
+
+
+
+
+
+
+
+
+
+
+
+
+ 367 if (SEED_TAB[(
unsigned char)seq[pos - 1]] == SEED_N && pos >= k) {
+
+
+
+ 371 if (SEED_TAB[(
unsigned char)seq[pos - 1]] == SEED_N) {
+
+
+ 374 fwd_hash = prev_forward_hash(fwd_hash, k, seq[pos + k - 1], seq[pos - 1]);
+ 375 rev_hash = prev_reverse_hash(rev_hash, k, seq[pos + k - 1], seq[pos - 1]);
+ 376 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
+
+
+
+
+
+
+ 389 if (pos >= seq_len - k) {
+
+
+ 392 return peek(seq[pos + k]);
+
+
+
+
+
+
+
+
-
-
-
-
-
- 416 if (SEED_TAB[(
unsigned char)char_in] == SEED_N) {
-
-
- 419 const unsigned char char_out = seq[pos + k - 1];
- 420 const uint64_t fwd = prev_forward_hash(fwd_hash, k, char_out, char_in);
- 421 const uint64_t rev = prev_reverse_hash(rev_hash, k, char_out, char_in);
- 422 extend_hashes(fwd, rev, k, num_hashes, hash_arr.get());
-
-
-
- 426 void sub(
const std::vector<unsigned>& positions,
- 427 const std::vector<unsigned char>& new_bases)
-
-
-
-
-
-
-
-
-
-
-
- 443 const uint64_t*
hashes()
const {
return hash_arr.get(); }
-
-
-
- 456 hashing_internals::NUM_HASHES_TYPE
get_hash_num()
const {
return num_hashes; }
-
- 462 hashing_internals::K_TYPE
get_k()
const {
return k; }
-
-
-
-
-
-
-
- 478 const size_t seq_len;
- 479 hashing_internals::NUM_HASHES_TYPE num_hashes;
- 480 hashing_internals::K_TYPE k;
-
-
- 483 uint64_t fwd_hash = 0;
- 484 uint64_t rev_hash = 0;
- 485 std::unique_ptr<uint64_t[]> hash_arr;
-
-
-
-
- 494 while (pos <= seq_len - k + 1 && has_n) {
-
- 496 for (
unsigned i = 0; i < k && pos <= seq_len - k + 1; i++) {
- 497 if (SEED_TAB[(
unsigned char)seq[pos + k - i - 1]] == SEED_N) {
-
-
-
-
-
- 503 if (pos > seq_len - k) {
-
-
- 506 fwd_hash = base_forward_hash(seq + pos, k);
- 507 rev_hash = base_reverse_hash(seq + pos, k);
- 508 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
-
-
-
-
-
-
-
-
-
-
- 533 hashing_internals::NUM_HASHES_TYPE num_hashes,
- 534 hashing_internals::K_TYPE k,
-
- 536 : seq(seq.data() + pos, seq.data() + pos + k)
- 537 , num_hashes(num_hashes)
-
- 539 , fwd_hash(base_forward_hash(seq.data(), k))
- 540 , rev_hash(base_reverse_hash(seq.data(), k))
- 541 , hash_arr(new uint64_t[num_hashes])
-
- 543 check_error(k == 0,
"BlindNtHash: k must be greater than 0");
- 544 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
-
-
-
-
- 549 , num_hashes(obj.num_hashes)
-
- 551 , fwd_hash(obj.fwd_hash)
- 552 , rev_hash(obj.rev_hash)
- 553 , hash_arr(new uint64_t[obj.num_hashes])
-
-
- 556 hash_arr.get(), obj.hash_arr.get(), num_hashes *
sizeof(uint64_t));
-
-
-
-
-
-
- 569 fwd_hash = next_forward_hash(fwd_hash, seq.size(), seq.front(), char_in);
- 570 rev_hash = next_reverse_hash(rev_hash, seq.size(), seq.front(), char_in);
- 571 extend_hashes(fwd_hash, rev_hash, seq.size(), num_hashes, hash_arr.get());
-
- 573 seq.push_back(char_in);
-
-
-
-
-
- 582 fwd_hash = prev_forward_hash(fwd_hash, seq.size(), seq.back(), char_in);
- 583 rev_hash = prev_reverse_hash(rev_hash, seq.size(), seq.back(), char_in);
- 584 extend_hashes(fwd_hash, rev_hash, seq.size(), num_hashes, hash_arr.get());
-
- 586 seq.push_front(char_in);
-
-
-
-
-
- 595 const hashing_internals::K_TYPE k = seq.size();
- 596 const uint64_t fwd = next_forward_hash(fwd_hash, k, seq.front(), char_in);
- 597 const uint64_t rev = next_reverse_hash(rev_hash, k, seq.front(), char_in);
- 598 extend_hashes(fwd, rev, seq.size(), num_hashes, hash_arr.get());
-
-
-
-
- 606 const hashing_internals::K_TYPE k = seq.size();
- 607 const uint64_t fwd = prev_forward_hash(fwd_hash, k, seq.back(), char_in);
- 608 const uint64_t rev = prev_reverse_hash(rev_hash, k, seq.back(), char_in);
- 609 extend_hashes(fwd, rev, seq.size(), num_hashes, hash_arr.get());
-
-
- 616 const uint64_t*
hashes()
const {
return hash_arr.get(); }
-
-
-
- 629 hashing_internals::NUM_HASHES_TYPE
get_hash_num()
const {
return num_hashes; }
-
- 635 hashing_internals::K_TYPE
get_k()
const {
return seq.size(); }
-
-
-
-
-
-
- 650 std::deque<char> seq;
- 651 hashing_internals::NUM_HASHES_TYPE num_hashes;
-
-
-
- 655 std::unique_ptr<uint64_t[]> hash_arr;
-
-
-
-void peek_back(char char_in)
Definition: nthash_kmer.hpp:604
-bool peek()
Definition: nthash_kmer.hpp:367
-uint64_t get_reverse_hash() const
Definition: nthash_kmer.hpp:474
-bool peek(char char_in)
Definition: nthash_kmer.hpp:393
-long get_pos() const
Definition: nthash_kmer.hpp:623
-bool peek_back(char char_in)
Definition: nthash_kmer.hpp:411
+
+
+
+
+
+ 418 if (SEED_TAB[(
unsigned char)char_in] == SEED_N) {
+
+
+ 421 const uint64_t fwd = next_forward_hash(fwd_hash, k, seq[pos], char_in);
+ 422 const uint64_t rev = next_reverse_hash(rev_hash, k, seq[pos], char_in);
+ 423 extend_hashes(fwd, rev, k, num_hashes, hash_arr.get());
+
+
+
+
+
+
+
+
+ 436 if (SEED_TAB[(
unsigned char)char_in] == SEED_N) {
+
+
+ 439 const unsigned char char_out = seq[pos + k - 1];
+ 440 const uint64_t fwd = prev_forward_hash(fwd_hash, k, char_out, char_in);
+ 441 const uint64_t rev = prev_reverse_hash(rev_hash, k, char_out, char_in);
+ 442 extend_hashes(fwd, rev, k, num_hashes, hash_arr.get());
+
+
+
+ 446 void sub(
const std::vector<unsigned>& positions,
+ 447 const std::vector<unsigned char>& new_bases)
+
+
+
+
+
+
+
+
+
+
+
+ 463 const uint64_t*
hashes()
const {
return hash_arr.get(); }
+
+
+
+ 476 hashing_internals::NUM_HASHES_TYPE
get_hash_num()
const {
return num_hashes; }
+
+ 482 hashing_internals::K_TYPE
get_k()
const {
return k; }
+
+
+
+
+
+
+
+
+ 499 hashing_internals::NUM_HASHES_TYPE num_hashes;
+ 500 hashing_internals::K_TYPE k;
+
+
+ 503 uint64_t fwd_hash = 0;
+ 504 uint64_t rev_hash = 0;
+ 505 std::unique_ptr<uint64_t[]> hash_arr;
+
+
+
+
+ 514 while (pos <= seq_len - k + 1 && has_n) {
+
+ 516 for (
unsigned i = 0; i < k && pos <= seq_len - k + 1; i++) {
+ 517 if (SEED_TAB[(
unsigned char)seq[pos + k - i - 1]] == SEED_N) {
+
+
+
+
+
+ 523 if (pos > seq_len - k) {
+
+
+ 526 fwd_hash = base_forward_hash(seq + pos, k);
+ 527 rev_hash = base_reverse_hash(seq + pos, k);
+ 528 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
+
+
+
+
+
+
+
+
+
+
+ 553 hashing_internals::NUM_HASHES_TYPE num_hashes,
+ 554 hashing_internals::K_TYPE k,
+
+ 556 : seq(seq.data() + pos, seq.data() + pos + k)
+ 557 , num_hashes(num_hashes)
+
+ 559 , fwd_hash(base_forward_hash(seq.data(), k))
+ 560 , rev_hash(base_reverse_hash(seq.data(), k))
+ 561 , hash_arr(new uint64_t[num_hashes])
+
+ 563 check_error(k == 0,
"BlindNtHash: k must be greater than 0");
+ 564 extend_hashes(fwd_hash, rev_hash, k, num_hashes, hash_arr.get());
+
+
+
+
+ 569 , num_hashes(obj.num_hashes)
+
+ 571 , fwd_hash(obj.fwd_hash)
+ 572 , rev_hash(obj.rev_hash)
+ 573 , hash_arr(new uint64_t[obj.num_hashes])
+
+
+ 576 hash_arr.get(), obj.hash_arr.get(), num_hashes *
sizeof(uint64_t));
+
+
+
+
+
+
+ 589 fwd_hash = next_forward_hash(fwd_hash, seq.size(), seq.front(), char_in);
+ 590 rev_hash = next_reverse_hash(rev_hash, seq.size(), seq.front(), char_in);
+ 591 extend_hashes(fwd_hash, rev_hash, seq.size(), num_hashes, hash_arr.get());
+
+ 593 seq.push_back(char_in);
+
+
+
+
+
+ 602 fwd_hash = prev_forward_hash(fwd_hash, seq.size(), seq.back(), char_in);
+ 603 rev_hash = prev_reverse_hash(rev_hash, seq.size(), seq.back(), char_in);
+ 604 extend_hashes(fwd_hash, rev_hash, seq.size(), num_hashes, hash_arr.get());
+
+ 606 seq.push_front(char_in);
+
+
+
+
+
+ 615 const hashing_internals::K_TYPE k = seq.size();
+ 616 const uint64_t fwd = next_forward_hash(fwd_hash, k, seq.front(), char_in);
+ 617 const uint64_t rev = next_reverse_hash(rev_hash, k, seq.front(), char_in);
+ 618 extend_hashes(fwd, rev, seq.size(), num_hashes, hash_arr.get());
+
+
+
+
+ 626 const hashing_internals::K_TYPE k = seq.size();
+ 627 const uint64_t fwd = prev_forward_hash(fwd_hash, k, seq.back(), char_in);
+ 628 const uint64_t rev = prev_reverse_hash(rev_hash, k, seq.back(), char_in);
+ 629 extend_hashes(fwd, rev, seq.size(), num_hashes, hash_arr.get());
+
+
+ 636 const uint64_t*
hashes()
const {
return hash_arr.get(); }
+
+
+
+ 649 hashing_internals::NUM_HASHES_TYPE
get_hash_num()
const {
return num_hashes; }
+
+ 655 hashing_internals::K_TYPE
get_k()
const {
return seq.size(); }
+
+
+
+
+
+
+ 670 std::deque<char> seq;
+ 671 hashing_internals::NUM_HASHES_TYPE num_hashes;
+
+
+
+ 675 std::unique_ptr<uint64_t[]> hash_arr;
+
+
+
+void peek_back(char char_in)
Definition: nthash_kmer.hpp:624
+bool peek()
Definition: nthash_kmer.hpp:387
+uint64_t get_reverse_hash() const
Definition: nthash_kmer.hpp:494
+bool peek(char char_in)
Definition: nthash_kmer.hpp:413
+long get_pos() const
Definition: nthash_kmer.hpp:643
+bool peek_back(char char_in)
Definition: nthash_kmer.hpp:431
NtHash(const char *seq, size_t seq_len, hashing_internals::NUM_HASHES_TYPE num_hashes, hashing_internals::K_TYPE k, size_t pos=0)
Definition: nthash_kmer.hpp:248
-const uint64_t * hashes() const
Definition: nthash_kmer.hpp:443
-uint64_t get_forward_hash() const
Definition: nthash_kmer.hpp:468
+const uint64_t * hashes() const
Definition: nthash_kmer.hpp:463
+uint64_t get_forward_hash() const
Definition: nthash_kmer.hpp:488
Definition: nthash_kmer.hpp:236
-size_t get_pos() const
Definition: nthash_kmer.hpp:450
-hashing_internals::K_TYPE get_k() const
Definition: nthash_kmer.hpp:462
-BlindNtHash(const std::string &seq, hashing_internals::NUM_HASHES_TYPE num_hashes, hashing_internals::K_TYPE k, long pos=0)
Definition: nthash_kmer.hpp:532
-uint64_t get_forward_hash() const
Definition: nthash_kmer.hpp:641
-Definition: nthash_kmer.hpp:520
+size_t get_pos() const
Definition: nthash_kmer.hpp:470
+hashing_internals::K_TYPE get_k() const
Definition: nthash_kmer.hpp:482
+BlindNtHash(const std::string &seq, hashing_internals::NUM_HASHES_TYPE num_hashes, hashing_internals::K_TYPE k, long pos=0)
Definition: nthash_kmer.hpp:552
+void set_seq(const std::string &seq, size_t pos=0)
Definition: nthash_kmer.hpp:307
+uint64_t get_forward_hash() const
Definition: nthash_kmer.hpp:661
+Definition: nthash_kmer.hpp:540
void check_error(bool condition, const std::string &msg)
-bool peek_back()
Definition: nthash_kmer.hpp:379
-hashing_internals::K_TYPE get_k() const
Definition: nthash_kmer.hpp:635
-bool roll()
Definition: nthash_kmer.hpp:315
+bool peek_back()
Definition: nthash_kmer.hpp:399
+hashing_internals::K_TYPE get_k() const
Definition: nthash_kmer.hpp:655
+bool roll()
Definition: nthash_kmer.hpp:335
NtHash(const std::string &seq, hashing_internals::NUM_HASHES_TYPE num_hashes, hashing_internals::K_TYPE k, size_t pos=0)
Definition: nthash_kmer.hpp:278
-bool roll_back()
Definition: nthash_kmer.hpp:339
-void roll(char char_in)
Definition: nthash_kmer.hpp:567
-const uint64_t * hashes() const
Definition: nthash_kmer.hpp:616
-void peek(char char_in)
Definition: nthash_kmer.hpp:593
-void roll_back(char char_in)
Definition: nthash_kmer.hpp:580
-hashing_internals::NUM_HASHES_TYPE get_hash_num() const
Definition: nthash_kmer.hpp:629
-hashing_internals::NUM_HASHES_TYPE get_hash_num() const
Definition: nthash_kmer.hpp:456
-uint64_t get_reverse_hash() const
Definition: nthash_kmer.hpp:647
+bool roll_back()
Definition: nthash_kmer.hpp:359
+void roll(char char_in)
Definition: nthash_kmer.hpp:587
+const uint64_t * hashes() const
Definition: nthash_kmer.hpp:636
+void peek(char char_in)
Definition: nthash_kmer.hpp:613
+void roll_back(char char_in)
Definition: nthash_kmer.hpp:600
+hashing_internals::NUM_HASHES_TYPE get_hash_num() const
Definition: nthash_kmer.hpp:649
+hashing_internals::NUM_HASHES_TYPE get_hash_num() const
Definition: nthash_kmer.hpp:476
+uint64_t get_reverse_hash() const
Definition: nthash_kmer.hpp:667