diff --git a/src/CountMinSketch.cpp b/src/CountMinSketch.cpp index d164eb65eb2c8ff1880f44ec29f081a2ff261f0e..349d351ca0dd20983abc33eb4d169f368d32b6a6 100644 --- a/src/CountMinSketch.cpp +++ b/src/CountMinSketch.cpp @@ -61,17 +61,17 @@ const int CountMinSketch::Pi_js[500]={2147469629, 2147469637, 2147469659, 214746 -void CountMinSketch::addKMer(unsigned long val) { - int h,j; +void CountMinSketch::addKMer(const unsigned long& val1,const unsigned long& val2) { + int h1,h2,h,j; // short cnt; unsigned char cnt; //unsigned short min=ushortmask; for (j=0;j<lambda;j++) { - h=hash64to32(val,j); + h1=hash64to32(val1,j); + h2=hash64to32(val2,j); + (h1>h2)?h=h1:h=h2; cnt=cms_lambda_array[j] [h]; cnt++; - //if (cnt<min) min=cnt; - // cms_lambda_array[j] [h]=(cnt & ushortmask); cms_lambda_array[j] [h]=(cnt & ubytemask); } } @@ -102,7 +102,8 @@ int CountMinSketch::addRead(const readNumericValues& read_val) { if (keep_r) { readNumericValues::const_iterator it; for (it=read_val.begin();it!=read_val.end();it++) { - addKMer(*it); + /* Here, note that k-mer go by pair : 1rst 1 is k_mer and next one is its reverse complement*/ + addKMer(*it,*(++it)); } } return keep_r; diff --git a/src/CountMinSketch.h b/src/CountMinSketch.h index a20272c7c355416acd702935383165c8e3055ac1..491a9f18353c211faa185c4c2a3fb97e19d0e2fe 100644 --- a/src/CountMinSketch.h +++ b/src/CountMinSketch.h @@ -64,7 +64,7 @@ class CountMinSketch { // std::map<int,int> getIthArray(int); // utility method provided for testing only. - void addKMer(unsigned long); // inline? TODO: see later if it can help us gain time. + void addKMer(const unsigned long&,const unsigned long&); // inline? TODO: see later if it can help us gain time. int isRCovBelowThres(const readNumericValues& read_val, const int& threshold); diff --git a/src/unit_test_cms.cpp b/src/unit_test_cms.cpp index 99242aa8b2c2257792d7a95f145ed18cf6b4c7b5..42a136b3246130d0fb13a097a001302bd3c9389b 100644 --- a/src/unit_test_cms.cpp +++ b/src/unit_test_cms.cpp @@ -36,7 +36,7 @@ void test_CMS(int lambda,int kappa,int kappa_prime) { int rej_expected=0; int ret; for (i=0;i<num;i++) { - cms.addKMer(num); + cms.addKMer(num,num-1); } // Now, check that our k-mer is present in the CMS. int min=cms.getEstimatedNbOcc(num);