I am trying to do denovo assembly using De Bruijn Graph. What are the different ways by which I can handle/consider reverse complements reads while constructing de Bruijn graph
I am trying to do denovo assembly using De Bruijn Graph. What are the different ways by which I can handle/consider reverse complements reads while constructing de Bruijn graph
The standard methodology is to associate a single de Bruijn graph node with both a k-mer and its reverse complement. If you take a look at e.g. GATB's excellent implementation, you'll see that this is how they handle it. The problem is that when processing sequencing reads, you really have no idea what strand a read was drawn from, and so you don't really have a good way to distinguish between the two. It's also worth noting that one typically builds de Bruijn graphs with only odd-sized k-mers. This prevents the scenario where a k-mer is its own reverse-complement.
Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Many thanks for the prompt reply. After reading your reply , one more question arises in mind that if every graph node has two values then which value to take in case of Eulerian walk ? I was wondering if there are any existing tools for viewing a de Bruijn graph from raw reads?