使用de Bruijn graph组装基因组的时候,Kmer数为何必须是奇数呢

因为如果kmer是偶数,我们会发现基因组上有些序列(如,CGCGCGCG, kmer=4)的Kmer在反向互补后得到的序列仍然是它自身!而这是不能允许的,因为这将导致你无法区分某段序列的kmer到底是属于它自身还是说只是来自于它的互补链!!这将会给解组装的de Bruijn graph带来极大的困难。也许你会这样问“为什么我需要纠结于序列是不是来自互补链呢?毕竟双链DNA的正反链是严格互补的啊,基因组组装也是把它们合并装成一起的呀!”若你能这样来理解其实是没问题的,但前提却是基因组必须能够被一次性完整地(至少是非常接近完整)测出来,这时的测序深度只需是1就可以了(如果都已经把基因组完整测序出来了,那还要组装个屁呀 !!!!! (╯‵□′)╯︵┻━┻),而目前的测序技术是做不到这一点的,通常都是测出成千上百万千万个小小的片段(也叫read,长度一般是100-250bp),并且基因组也会被反复测很多层,所以这个时候构建kmer实际上就是对这些read进行的了,具体的操作就是按照kmer的长度把这些read切割成更小的片段,那么此时在构建de Bruijn graph时能够保证正确地把同属于一条read上的kmer连接起来,就极其重要了呀!你总不能一会儿把A kmer正确地连到它自己所在的read,一会儿又连到它互补链的read上去呀!这就是为何kmer不能是偶数的原因了,因为只有奇数,才能保证每个kmer序列的反向互补Kmer与自身是不同的,而这个不同的真正意义就是为了避免正反链混淆,如 :5-mer的 CGCGC,反向互补后是 GCGCG, 它们是不同的;这就不会像 4-mer,CGCG发现它反向互补后仍然是CGCG!!

注:转发自http://www.fungenomics.com/question/11?notification_id=66&rf=false&item_id=6

本文来自博客园,作者:BioinformaticsMaster,转载请注明原文链接:https://www.cnblogs.com/koujiaodahan/p/7611469.html

原文地址:https://www.cnblogs.com/koujiaodahan/p/7611469.html