https://github.com/splatlab/squeakr
Tip revision: d5653f87fe0121280e61e9360b13730f2f492c0a authored by prashantpandey on 18 December 2020, 05:04:37 UTC
Handling counter expansion for remainder 0.
Handling counter expansion for remainder 0.
Tip revision: d5653f8
kmer.h
/*
* ============================================================================
*
* Authors: Prashant Pandey <ppandey@cs.stonybrook.edu>
* Rob Johnson <robj@vmware.com>
* Rob Patro (rob.patro@cs.stonybrook.edu)
*
* ============================================================================
*/
#ifndef _KMER_H_
#define _KMER_H_
#include <stdio.h>
#include <string>
#include <unordered_set>
#define BITMASK(nbits) ((nbits) == 64 ? 0xffffffffffffffff : (1ULL << (nbits)) \
- 1ULL)
enum DNA_MAP {C, A, T, G}; // A=1, C=0, T=2, G=3
class Kmer {
public:
static char map_int(uint8_t base);
static uint8_t map_base(char base);
static __int128_t str_to_int(std::string str);
static std::string int_to_str(__int128_t kmer, uint64_t kmer_size);
static int reverse_complement_base(int x);
static __int128_t reverse_complement(__int128_t kmer, uint64_t kmer_size);
static bool compare_kmers(__int128_t kmer, __int128_t kmer_rev);
static void parse_kmers(const char *filename, uint64_t ksize,
std::unordered_set<uint64_t>& kmerset);
private:
Kmer();
};
#endif
