Skip to content

Commit

Permalink
nthash.hpp: added mask function for spaced seed
Browse files Browse the repository at this point in the history
  • Loading branch information
mohamadi committed Sep 5, 2018
1 parent 07e3f4d commit 57af16a
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions nthash.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<k; i++) {
if(seedSeq[i]!='1') {
uint64_t lfBits = seedTab[(unsigned char)kmerSeq[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<fsVal)? rsVal : fsVal;
}

#endif

0 comments on commit 57af16a

Please sign in to comment.