3.1 高通量DNA測序數(shù)據(jù)的壓縮算法
NGS測序下的短讀序列的數(shù)據(jù)量呈爆炸性增長,如果不對其進(jìn)行壓縮而直接存儲或傳輸會消耗巨大的硬件存儲設(shè)備,同時也會給網(wǎng)絡(luò)傳輸帶來很大的負(fù)擔(dān)。NGS測序數(shù)據(jù)有其自身的特點和規(guī)律,存在大量的信息冗余,傳統(tǒng)的數(shù)據(jù)壓縮算法并不能夠很好地壓縮DNA序列,這就需要開發(fā)專門針對DNA序列的數(shù)據(jù)壓縮算法和工具。
近幾年,已經(jīng)研發(fā)了許多專門針對NGS數(shù)據(jù)的壓縮算法和工具,大多數(shù)是針對FASTQ格式的數(shù)據(jù)。根據(jù)DNA序列是否有參考基因組,壓縮方法分為有參考基因組的壓縮和無參考基因組的壓縮。有參考基因組的數(shù)據(jù)壓縮是利用參考基因組和短讀序列的差異信息來進(jìn)行壓縮。這種方法第一步先把短讀映射到參考基因組,記錄每條短讀在參考基因組上的位置以及與參考基因組的差異信息,然后再采用高效編碼方式存儲這些記錄,實現(xiàn)數(shù)據(jù)壓縮。其代表算法有DNAzip[18]、BWB[19]、SlimGene[20]、GRS[21]、mZIP[22]、NGC[23]、samcomp[24]等。由于同源物種基因組之間具有高度相似性,這種壓縮通常能達(dá)到很高的壓縮比,但這種方法有明顯的局限性,有些測序數(shù)據(jù)(如宏基因數(shù)據(jù)、從頭測序數(shù)據(jù))并不存在現(xiàn)成的參考基因組,因此無法使用此算法;另外,該方法對于參考基因組依賴性太強,壓縮和解壓縮都需要相同參考基因組,這樣參考基因組必須事先保存在本地,如果參考基因組缺失將直接影響壓縮數(shù)據(jù)的使用。
無參考基因組的數(shù)據(jù)壓縮方法通常采用兩步法,首先最大限度地識別冗余DNA序列,然后再利用通用的壓縮方法(如gzip、bzip2)進(jìn)行處理。其代表算法工具有Beetl[25]、SCALCE[26]、SRComp[27]和ORCOM[28]。Beetl采用BurrowsWheeler變換算法,識別冗余;SCALCE采用局部一致性技術(shù)方法排序短讀序列,識別關(guān)鍵子串;SRComp采用burstsort排序的方法,使相同的字符串聚集在一起,然后再采用不同的編碼方式對其進(jìn)行編碼。ORCOM采用并行的Minimizers算法壓縮reads中的重疊區(qū)域(overlap)。另一種新穎的無參考基因組的數(shù)據(jù)壓縮方法是基于拼接的方法,代表算法有Quip[29]。Quip方法采用拼接的方式,用一小部分短讀拼接成疊連群作為臨時參考基因組,然后利用基于參考基因組的壓縮方法進(jìn)行壓縮。
盡管高通量測序數(shù)據(jù)的壓縮研究已取得一定成果,但其在計算資源、壓縮算法方面仍面臨巨大挑戰(zhàn)。隨著DNA測序數(shù)據(jù)量的增大,對計算資源的要求也越來越大,處理時間過長是DNA測序數(shù)據(jù)分析最重要的問題。另外,如何利用高通量測序技術(shù)產(chǎn)生有意義的冗余信息、采用并行化策略和基于索引的壓縮方法、建立統(tǒng)一的數(shù)據(jù)質(zhì)量評價標(biāo)準(zhǔn)等,都是重要的研究方向。
3.2 高通量DNA測序的序列拼接
由于測序技術(shù)的限制,新一代測序的讀長較短(30~500bp)[30],測序所得序列無法滿足大多數(shù)序列分析的需要[31],因此序列拼接成為基因組學(xué)研究中一個重要的環(huán)節(jié)。所謂序列拼接,是指將測序得到的短序列片段利用計算的方法拼接成較長的連續(xù)序列片段(contig)或者中間帶有空隙的長序列片段(scaffold)乃至整段基因組序列的方法。
序列拼接包括兩種不同的策略:從頭(DeNovo)拼接的方法和對照(comparative)拼接的方法[32]。從頭拼接是指在沒有任何基因組序列參照的前提下,構(gòu)建全新基因組序列的策略,而對照拼接是指在參照基因組序列的指導(dǎo)下進(jìn)行的基因組序列的拼接。對照拼接適用于存在參照基因組序列的拼接,比如重測序項目中的序列拼接,而對于全新物種的大規(guī)模全基因組測序以及宏基因組測序項目主要使用從頭拼接。
拼接算法的主要挑戰(zhàn)來源于基因組中的重復(fù)序列片段。在不同區(qū)域的兩個完全一致的重復(fù)片段無法通過計算的方式來辨別。對于相似但不完全一致的重復(fù)片段,可以通過提高序列比對的相似度閾值區(qū)分不同的復(fù)本,這種方法一般還涉及對reads中測序錯誤的估計[33]。重復(fù)片段的區(qū)分一般需要借助于reads或是mate-pair的跨越。所謂的mate-pair是指測序時從一段長度已知的片段兩端測得的一對reads。對于reads來說,如果reads的中間是重復(fù)序列,而兩端都有足夠長的唯一片段,則可以區(qū)分中間的重復(fù)片段,這種方法針對短的重復(fù)片段有效,一般在k-mer圖算法中使用。對于mate-pair來說,如果mate-pair分別處于重復(fù)序列的兩端,也可以指導(dǎo)正確的拼接路徑,而且mate-pair比reads更長,因此可以區(qū)分更長的重復(fù)片段。高的測序深度有利于重復(fù)片段的區(qū)分,因為高的測序深度可能提供更多的reads或者mate-pair跨越重復(fù)片段。對于新一代測序中短序列的拼接,重復(fù)片段的區(qū)分更加困難,因為reads更短,更多的重復(fù)片段無法通過reads來區(qū)分,因此提高測序深度和使用mate-pair尤為重要。