根本原因就是為了避免導(dǎo)致 正反鏈混淆祟绊。
如果kmer是偶數(shù)久免,我們會發(fā)現(xiàn)基因組上有些序列(如,CGCGCGCG记舆,kmer=4)的Kmer在反向互補后得到的序列仍然是它自身泽腮!這是不能允許發(fā)生的衣赶。因為這將導(dǎo)致你無法區(qū)分某段序列的kmer到底是屬于它自身還是說只是來自于它的互補鏈8椤!這會給解de Bruijn graph帶來極大的混淆和困難鲸郊!
或許你會覺得 “為什么我需要糾結(jié)于序列是不是來自互補鏈呢?畢竟雙鏈DNA的正反鏈?zhǔn)菄?yán)格反向互補的啊四濒,基因組組裝技術(shù)不也是把它們合并裝在一起的嗎职辨?!”喳资。你若是這樣來理解其實是非常難得的惭每,但前提卻是基因組必須能夠被一次性完整地(至少是非常接近完整)測出來,這時的測序深度甚至只需是1就可以了台腥。但是你回頭想想黎侈,既然都已經(jīng)把基因組完整測序出來了峻汉,那還要組裝干嘛呢休吠?
并且瘤礁,目前的NGS測序技術(shù)也做不到通測基因組柜思。一般來說都是測出上百萬千萬億萬個小小的片段(read赡盘,長度一般是100bp-300bp)。而且陨享,為了確保準(zhǔn)確性,基因組都會被反復(fù)測很多層蛙紫。組裝時構(gòu)建的kmer單位拍屑,實際上是對這些read進行的途戒。具體的操作就是按照kmer的長度把這些read切割成更小的、存在重疊關(guān)系的片段喷斋。那么,此刻當(dāng)我們構(gòu)建de Bruijn graph時星爪,如何能夠保證正確地把 同屬于一條read上的Kmer連接起來浆西,就顯得極為重要了顽腾!我們不能一會兒把A kmer正確地連到它自己所在的read近零,一會兒又連到它互補鏈的read上去抄肖!
這就是為何Kmer不能是偶數(shù)的原因了裙士,因為只有奇數(shù)管毙,才能保證每個kmer序列的反向互補kmer與自身也是不同的,而這個不同的真正意義就是為了避免正反鏈混淆啃炸。比如 :5-mer的 CGCGC卓舵,反向互補后是 GCGCG训枢, 它們是不同的;這就不會像 4-mer恒界,CGCG發(fā)現(xiàn)它反向互補后仍然是CGCG十酣,這個時候就就會在后續(xù)連接kmer的過程中發(fā)生正負鏈混淆涩拙,裝出一個嵌合體基因組!
最后耸采,放一張發(fā)表在Genome Research有關(guān)組裝的圖兴泥,大家可以大致感受一下這一段重復(fù)序列的組裝過程。
關(guān)注我的公眾號:堿基礦工(helixminer),更及時了解更多信息