very large MAX_KMER size

214 views
Skip to first unread message

None

unread,
Dec 9, 2010, 8:27:50 PM12/9/10
to ABySS
Hi,

While compiling ABYSS we cant give max kmer more than 96. However
after changing the checks in kmer.h and kmer.cpp it can be increased.

What are the side effects of this, if any?

I am trying to assemble contigs using ABYSS and kmer values less than
96 give very small contigs. with higher kmer sizes like 200 to 300 the
contigs are much longer. These longer contigs seem to be correct when
tested with simulated data that does not have any repeats. Just to be
sure, can this run into problems with repeats or something?

Minimus, CAP3 and MIRA don't seem to assemble large datasets even when
the fragments are shredded with 50% overlap.Hopefully Abyss can be
used with this very large kmer size for assembling contigs?

Thanks

Shaun Jackman

unread,
Dec 10, 2010, 1:08:51 PM12/10/10
to None, ABySS
Hi,

Increasing MAX_KMER beyond 96 will not work. If you would like to
increase MAX_KMER beyond 96, you must first modify the function
shiftRight in Common/Kmer.cpp to handle values of MAX_KMER beyond 96.

Cheers,
Shaun

Shaun Jackman

unread,
Dec 13, 2010, 6:07:38 PM12/13/10
to None, ABySS
Hi,

I've attached an experimental patch to support values of k larger than
96. Place the attached two files in the Common/ subdirectory and
recompile. I have not tested it on a big-endian machine.

Cheers,
Shaun

On Thu, 2010-12-09 at 17:27 -0800, None wrote:

Kmer.cpp
Kmer.h

None

unread,
Dec 14, 2010, 12:49:05 AM12/14/10
to ABySS
Hi Shaun,

Thanks a lot for making the changes. But while compiling with
kmer=1280 i get the below error:

g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../Common -Wall -Wextra -Werror -
g -O2 -MT libalign_a-Aligner.o -MD -MP -MF .deps/libalign_a-
Aligner.Tpo -c -o libalign_a-Aligner.o `test -f 'Aligner.cpp' || echo
'./'`Aligner.cpp
Aligner.cpp: In member function ‘void
Aligner<SeqPosHashMap>::addReferenceSequence(const Kmer&, Position)’:
Aligner.cpp:42: error: ‘const class Kmer’ has no member named ‘decode’
Aligner.cpp:53: error: ‘const class Kmer’ has no member named ‘decode’
make[2]: *** [libalign_a-Aligner.o] Error 1


I use the Aligner.cpp that comes with version 1.2.5. Could you please
give me the modified Aligner.cpp as well?

Thanks

PS: Minimus2 is able to handle the data after modifying it to use Blat
instead of Nucmer.
>  Kmer.cpp
> 11KViewDownload
>
>  Kmer.h
> 2KViewDownload

Shaun Jackman

unread,
Dec 14, 2010, 2:58:40 PM12/14/10
to None, ABySS
Hi,

Apply the following patch to Common/Kmer.h.

Cheers,
Shaun

--- Common/Kmer.h (revision 63450)
+++ Common/Kmer.h (working copy)
@@ -33,6 +33,7 @@ class Kmer
}

Sequence str() const;
+ Sequence decode() const { return str(); }

unsigned getCode() const;
size_t getHashCode() const;

On Mon, 2010-12-13 at 21:49 -0800, None wrote:
> Hi Shaun,
>
> Thanks a lot for making the changes. But while compiling with
> kmer=1280 i get the below error:
>
> g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../Common -Wall -Wextra -Werror -
> g -O2 -MT libalign_a-Aligner.o -MD -MP -MF .deps/libalign_a-
> Aligner.Tpo -c -o libalign_a-Aligner.o `test -f 'Aligner.cpp' || echo
> './'`Aligner.cpp

> Aligner.cpp: In member function пїЅvoid
> Aligner<SeqPosHashMap>::addReferenceSequence(const Kmer&, Position)пїЅ:
> Aligner.cpp:42: error: пїЅconst class KmerпїЅ has no member named пїЅdecodeпїЅ
> Aligner.cpp:53: error: пїЅconst class KmerпїЅ has no member named пїЅdecodeпїЅ

Reply all
Reply to author
Forward
0 new messages