From 57af16a972a553ecccea0cda25af85ac1f96a94b Mon Sep 17 00:00:00 2001 From: mohamadi Date: Wed, 5 Sep 2018 11:52:20 -0700 Subject: [PATCH] nthash.hpp: added mask function for spaced seed --- nthash.hpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/nthash.hpp b/nthash.hpp index b4e60d4..68c85d8 100644 --- a/nthash.hpp +++ b/nthash.hpp @@ -425,4 +425,23 @@ inline void NTMC64(const unsigned char charOut, const unsigned char charIn, cons } } +// masking canonical ntHash using spaced seed pattern +inline uint64_t maskHash(uint64_t &fkVal, uint64_t &rkVal, const char * seedSeq, const char * kmerSeq, const unsigned k) { + uint64_t fsVal=fkVal, rsVal=rkVal; + for(unsigned i=0; i> 33; + uint64_t rfBits = seedTab[(unsigned char)kmerSeq[i]] & 0x1FFFFFFFF; + uint64_t sfMask = (rol31(lfBits,k-1-i) << 33) | (rol33(rfBits,k-1-i)); + fsVal ^= sfMask; + + uint64_t lrBits = seedTab[(unsigned char)kmerSeq[i]&cpOff] >> 33; + uint64_t rrBits = seedTab[(unsigned char)kmerSeq[i]&cpOff] & 0x1FFFFFFFF; + uint64_t srMask = (rol31(lrBits,i) << 33) | (rol33(rrBits,i)); + rsVal ^= srMask; + } + } + return (rsVal