最近在做一批宏基因组数据的拼接工作,这里的拼接主要指从Read到Contig这个水平。然后因为是第一次做,有很多没懂的地方,在学习和实践的过程中,总结了一下。写成几篇博客记录一下,以后又不清楚了可以回来看一下。这篇博客主要记录一下宏基因组拼接的算法之一——基于德布莱英图(De Bruijn graph)的方法。
一、为什么使用德布莱英图?
对于短序列read的拼接有两种基本算法,一种是基于Overlap Graph的算法,另一种是基于德布莱英图的算法。大多数为了桑格测序(Sanger sequencing)得到的测序数据拼接的算法都是基于Overlap Graph的,最典型的就是Overlap-layout-consensus方法,简称为OLC方法,这个方法通过两两之间有overlap区域的reads来构图,每个Read作为图中的点,而拥有足够的overlap则是建立图中的连接的基础。
这种方式在处理序列数很有限,而且序列间overlap区域很明显的时候能取得最好的效果。一些对于二代测序数据设计的assembler使用了OLC方法,但是这种传统的方法计算量实在过大,就算是非常简单的物种的从头组装也需要上百万甚至上千万条序列,所以仍然使用OLC方法显然不太实际。而且二代测序数据的读长片段,现在来说250bp和300bp的读长都是属于新兴事物,想要在茫茫多的短序列中找到可供使用的overlap区域也是OLC方法面临的瓶颈之一。
由于OLC方法跟不上更短的Read长度和更大的Read条数&#