diff --git a/src/CountMinSketch.hpp b/src/CountMinSketch.hpp index 6e43161da8e9ec41d880488b14ac019e58792331..908b3894d0b31d199ebafa8990244f12b97add5f 100644 --- a/src/CountMinSketch.hpp +++ b/src/CountMinSketch.hpp @@ -316,20 +316,26 @@ template<typename T> unsigned long CountMinSketch<T>::getNbDistinctKMers() { unsigned long n; unsigned long m=Pi_js[0]; + //std::cout<<"lambda="<<lambda<<std::endl; for (j=lambda-1;j>=0;--j) { unsigned long z=0; // number of zeroes in a CMS array. for (h=Pi_js[j]-1;h>0;--h) { // Have to process the case of h=0 separately otherwise as h is now an unsigned int, it is always >=0 which causes an infinite loop. (cms_lambda_array[j] [h]==0)? z+=1: z; } - (cms_lambda_array[j] [0]>0)? z+=1: z; + (cms_lambda_array[j] [0]==0)? z+=1: z; (z>max)? max=z: max; (max==z)? m=Pi_js[j]:m; } - unsigned long lnz=log(max); - unsigned long lnm=log(m); - unsigned long lnm1=log(n-1); - unsigned long deno=lnm1-lnm; - unsigned long nume=lnz-lnm; + //std::cout<<"max="<<max<<std::endl; + //std::cout<<"m="<<m<<std::endl; + double lnz=log(max); + double lnm=log(m); + double lnm1=log(m-1); + double deno=lnm1-lnm; + double nume=lnz-lnm; + /*std::cout<<"nume="<<nume<<std::endl; + std::cout<<"deno="<<deno<<std::endl; + std::cout<<"n before conversion"<<nume/deno<<std::endl;*/ n=nume/deno; return n; } diff --git a/src/unit_test_cms.cpp b/src/unit_test_cms.cpp index 746ab2f4eec5ddae713284594a87831207b8fb53..cf3a0fa83e0cc26276753f1c4038c22ed34f763b 100644 --- a/src/unit_test_cms.cpp +++ b/src/unit_test_cms.cpp @@ -27,10 +27,11 @@ void test_CMS(int lambda,int kappa,int kappa_prime) { } // Now, check that our k-mer is present in the CMS. int min=cms.getEstimatedNbOcc(num); - std::cout<<"min="<<min<<endl; + //std::cout<<"min="<<min<<endl; assert((min==num) || (min==num-get_mask<unsigned char>::value-1)); // addKmer doesn't check kappa. unsigned long nb_distinct_k_mers=cms.getNbDistinctKMers(); + //cout<<nb_distinct_k_mers<<endl; assert(nb_distinct_k_mers==1); // mimic a read (as given by part 2 output). @@ -358,7 +359,7 @@ int main(int argc, char **argv) { cout<<"testing CMS with lambda="<<lambda<<endl; test_CMS(lambda,kappa,kappa_prime); // Finally using C arrays (maps implied storing hash keys : 4 Bytes per k_mer overhead) but each array is of size INT_MAX... - cout<<"testing CMS with PE not as single strict kappa prime implementation"<<endl; + //cout<<"testing CMS with PE not as single strict kappa prime implementation"<<endl; // VL comment these tests since AC says That the best option is to treat PE as single. /*testCMS_with_PE_NotasSingle(lambda,kappa,kappa_prime); cout<<"testing CMS with PE not as single lenient kappa prime implementation"<<endl;