I am looking for a k-mer analysis tool that is capable of analysing kmers longer then 31. I thought I hit the jackpot when I read about DKS but so far I have had no luck. Is there any other easy to use tool that is capable of k-mers with a size up to 91+?
I have tried the linux package, and got it working up to 31-mers. then I installed from source and also got it working up to 31-mers. then I read the entire manual (should have done so in the first place). I ran:
rm -Rf CMake* && cmake -Dk4=160 .. && make
and got some errors, 31-mers still worked fine. Then I changed my source installation from:
cmake
to:
cmake -Dk4=150 ..
and got the same errors. so now I am wondering if you could help me fix this situation.
I have gcc version 4.8.2
The errors I get:
[100%] Building CXX object utils/CMakeFiles/dsk2ascii.dir/dsk2ascii.cpp.o
In file included from /home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/gatb_core.hpp:38:0,
from /home/SHU/Desktop/DSK/dsk-2.0.2-Source/utils/dsk2ascii.cpp:3:
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/tools/collections/impl/BagFile.hpp: In instantiation of 'gatb::core::tools::collections::impl::BagCountCompressedFile<Item>::~BagCountCompressedFile() [with Item = gatb::core::kmer::impl::Kmer<>::Count]':
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/utils/dsk2ascii.cpp:72:1: required from here
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/tools/collections/impl/BagFile.hpp:179:189: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type 'u_int64_t {aka long unsigned int}' [-Wformat=]
printf("In %llu B (%llu MB ) Out %llu B (%llu MB ) ratio %f \n",_sizeInput,_sizeInput/(1024LL*1024LL), _sizeOutput,_sizeOutput/(1024LL*1024LL), _sizeInput / (float) _sizeOutput);
^
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/tools/collections/impl/BagFile.hpp:179:189: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 4 has type 'u_int64_t {aka long unsigned int}' [-Wformat=]
cc1plus: warning: unrecognized command line option "-Wno-ambiguous-member-template" [enabled by default]
from /home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/bank/impl/BankBinary.cpp:20:
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/system/api/Exception.hpp: In constructor 'gatb::core::system::ExceptionErrno::ExceptionErrno(const char*, ...)':
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/system/api/Exception.hpp:140:47: warning: ignoring return value of 'char* strerror_r(int, char*, size_t)', declared with attribute warn_unused_result [-Wunused-result]
strerror_r (errno, buffer, BUFSIZ);
^
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/bank/impl/BankBinary.cpp: In function 'bool gatb::core::bank::impl::checkMagic(FILE*)':
/home/SHU/Desktop/DSK/dsk-2.0.2-Source/thirdparty/gatb-core/src/gatb/bank/impl/BankBinary.cpp:54:43: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
fread (&value, sizeof(value), 1, file);
^
Error I get on running dsk2ascii:
EXCEPTION: Type 'LargeInt<1>' has too low precision (64 bits) for the required 51 kmer size
Hello,
Just to be sure: Did you actually manage to build "dsk" with your k4 setting? From the traces you gave, it seems that the compilation worked (got only warnings).
However, I think you have pointed a potential issue in the "dsk2ascii" binary for kmer size >=128. I am going to provide a correction and I will tell you when it's available.
Note that "dsk" itself should work, only "dsk2ascii" has the issue.
dsk itself seems to work just fine, that is true. but dsk2ascii does not. it works perfect with 31mers, but it does not with 32+mers