De novo RNA-Seq Assembly Using De Bruijn Graphs

De novo RNA-Seq Assembly Using De Bruijn Graphs
 2017-06-12 09:42:47     59     0     0

在说基因组的拼接之前,可以考虑如下的一个问题:

假设有一摞报纸被炸成了碎片,如何利用这些碎片拼接成一份完整的信息了解那天发生的大事?

这个问题的难点在于:必定有一部分的信息因为爆炸而消失不见,也不能简单的把报纸粘起来,因为报纸不止一份,所以我们必须从大量包含了重复内容的碎片来重构一份完整的报纸。

传统的基因租测序流程大致如下:

取目标样本的一些组织(其中包含了数百万的细胞,具有相同的基因组) -> 将这些dna打断成一定长度的碎片(获得的片段成为read) -> 使用测序仪测得read的碱基序列

所以,在我们要进行后续的分析前,我们需要先要将这些 reads 拼接以还原我们需要的基因组信息。

与刚才的报纸问题相似,但是基因组拼接的增加了以下难点:

  • DNA是双链,所以对于一个给定的read 我们无法知道他是来于DNA的其中一链,还是来自于它的互补链
  • 测序仪测序错误
  • 获得的reads中可能没有覆盖到基因组的所有片段,所以无法重构该片段

这个问题看起来很复杂,显得无从入手,我们可以将其分解为一个个的小问题,并且将其抽象成一个可以明确表达的问题,逐个解决。

从k-mers重构字符串

我们假设测序获得的read长度相等,而且没有测序错误,也不用考虑重复问题,就简单的考虑如何将 k-mers (k为read长度,)拼接成一个原始的字符串

模拟k-mer的生成

输入:整数k,字符串                           

输出:k-mers(经过排序)                  

在了解了k-mer是什么后,我们反过来利用k-mers来还原一个字符串

很明显这个字符串应该以TAA开头,因为没有3-mers以TA结尾

以AA开头的3-mers只有AAT

而以AT开头的 3-mers只有ATG

重复以上过程,我们还原了原始的字符串

下面考虑一个更复杂的例子

我们还是从TAA开始

到此为止一切顺利,但是以ATG后面以TG开头的 3-mers 共有3个 TGC, TGG, TGT

换成TGC后似乎已经还原了原始字符串,但是到此为止只使用了14个 3-mers,忽略了GGG,使得这个字符串比原始字符串少了一个字符G

上面的例子中ATG重复了3次,导致了我们有三个选择TGC,TGG,TGT来延续ATG。当有数百万个reads时,因为重复带来的计算困难将更为严重。

可以将基因组的拼接类比为Triazzle(Triazzle是一种拼图游戏,虽然只有16块拼图,但是并没有看起来那么容易)

回到刚才的问题

原文地址:https://www.cnblogs.com/wangprince2017/p/9937512.html