基因組核酸片段數(shù)量的快速計數(shù)算法【專利摘要】本發(fā)明公開了一種快速統(tǒng)計基因組核酸片段數(shù)量的算法。該算法針對基因組核酸片段高倍數(shù)的特點,將不同的核酸片段合理地分配到內(nèi)存和硬盤。該算法總是優(yōu)先將倍數(shù)最高的一些核酸片段放置于內(nèi)存中,而將倍數(shù)較低的核酸片段存儲在硬盤上。通過本發(fā)明提出的算法,任何基因組核酸片段數(shù)量的計數(shù)都可在有限內(nèi)存的限制下完成?!緦@f明】基因組核酸片段數(shù)量的快速計數(shù)算法【
技術(shù)領(lǐng)域:
】[0001]本研究主要涉及到生物信息數(shù)據(jù)處理,生物大數(shù)據(jù)挖掘,基因組分析與全基因組拼接?!?br>背景技術(shù):
】[0002]k-mer,即為kilomer,指的是將一條基因序列,連續(xù)切割,挨個堿基劃動得到的一序列長度為K的核苷酸片段。在生物信息學項目的研究中,對k-核酸片段的計量是解讀基因組信息的重要環(huán)節(jié),我們可以通過k-核酸片段了解到基因組的大小,深度,頻率,同時,k_核酸片段計量廣泛應(yīng)用于基因組拼裝拼接,評估基因組測序覆蓋度,測序數(shù)據(jù)的糾錯,多序列比對,重復(fù)序列檢測等研究中。[0003]近年來,隨著生物信息學的發(fā)展,國外研究出了一些此類算法,如Jellyfish,BFCounter等。Jellyfish,-種已有的k-核酸片段計量算法,采用了并行無鎖哈希表(lock-freehashtable)數(shù)據(jù)結(jié)構(gòu),在速率上比較高效,但需要非常大的內(nèi)存和硬盤空間(在處理160G的人類基因組數(shù)據(jù)需要70G內(nèi)存和21IG硬盤),這嚴重阻礙了在沒有小型機等大型計算設(shè)備的普通實驗室環(huán)境下的數(shù)據(jù)處理。BFCounter,采用概率型數(shù)據(jù)結(jié)構(gòu)Bloom_filter,使其不需要硬盤操作,完全使用內(nèi)存即可實現(xiàn)計量。但其消耗內(nèi)存過大(處理上述數(shù)據(jù)需要56G內(nèi)存),而且速率過慢(處理上述數(shù)據(jù)時間超過40小時)所以,在有限的內(nèi)存和硬盤空間限制下,尚未有可合理權(quán)衡上述要求的高效算法。同時,在數(shù)據(jù)處理中,現(xiàn)有方法并沒有深刻發(fā)掘基因組本身信息,如頻率,深度,而這些信息可以幫助我們?nèi)ズ侠硖幚碇貜?fù)基因和錯誤基因,從而極大的提升算法效率?!?br/>發(fā)明內(nèi)容】[0004]本發(fā)明是為了解決現(xiàn)有技術(shù)中的問題,而提供了一種快速、低內(nèi)存需求、低硬盤需求的k-核酸片段S計量算法。[0005]本發(fā)明為解決公知技術(shù)中存在的技術(shù)問題所采用的技術(shù)方案包括:合理分配內(nèi)存和硬盤空間,采用合理的數(shù)據(jù)結(jié)構(gòu)來表示k_核酸片段s,優(yōu)化k_核酸片段s的索引結(jié)構(gòu)和排序。算法具體步驟如下:[0006]1)讀取原始數(shù)據(jù)文件,設(shè)定參數(shù),包括要統(tǒng)計k-核酸片段的長度k,限定硬盤空間D(bits),內(nèi)存空間M(bits),數(shù)據(jù)深度(depth)。[0007]2)遍歷數(shù)據(jù)文件一次,將文件利用位運算壓縮成二進制,并且建立長度為8-核酸片段的索引index。同時,獲得k-核酸片段的總個數(shù)【權(quán)利要求】1.一種快速統(tǒng)計基因組核酸片段數(shù)量的算法,該方法可在有限內(nèi)存的限制條件下完成核酸片段數(shù)量的統(tǒng)計。本發(fā)明總是優(yōu)先將高倍數(shù)的核酸片段放置于內(nèi)存,而將低倍數(shù)的核酸不斷移除到硬盤中。通過不斷排序與迭代上述過程,盡可能地提高在內(nèi)存中計算的比例。其期特征在于,(1)讀取原始數(shù)據(jù)文件,設(shè)定參數(shù),包括要統(tǒng)計k-核酸片段(表示長度為k的核酸片段)的長度k,限定硬盤空間D(bits),內(nèi)存空間M(bits),數(shù)據(jù)深度(depth)。(2)遍歷數(shù)據(jù)文件一次,將文件利用位運算壓縮成二進制,并且建立長度為8-核酸片段的索引index。同時,獲得k-核酸片段的總個數(shù)N。(3)劃分迭代次數(shù)和k-核酸片段區(qū)段。(4)遍歷8-核酸片段索引一次,等量分配每一個區(qū)段內(nèi)的k-核酸片段個數(shù)。(5)按照不同的數(shù)據(jù)結(jié)構(gòu)初始化兩種存儲存儲空間,分配在內(nèi)存,硬盤中,用于存儲和計算k-核酸片段。(6)根據(jù)迭代順序開始計量工作。(7)按照索引區(qū)index[i](ie(劃分段)讀取壓縮文件至內(nèi)存R,直到內(nèi)存R使用量達到設(shè)定內(nèi)存空間的40%為止。(8)快速排序已存于R的k-核酸片段,并合并相同的k-核酸片段,進行計量,得出的結(jié)果存儲于Lx(xG1,2,3..)中。(9)迭代7,8操作,直到已使用內(nèi)存超過60%。合并LI...n中的k-核酸片段,并且建立次數(shù)索引(10)遍歷已統(tǒng)計的k-核酸片段,根據(jù)基因組的深度劃分正確基因和錯誤基因,將重復(fù)次數(shù)少的寫入硬盤,次數(shù)多的保存在內(nèi)存Lx中。每次寫入硬盤的文件必須按照劃分段來標記,同時,通過遍歷索引找到相應(yīng)的k-核酸片段寫入的最低次數(shù),保證寫入k-核酸片段至硬盤必須釋放60%的內(nèi)存。(11)迭代7-10操作,直到所有文件讀完。(12)此時所有的k-核酸片段都已經(jīng)存儲于內(nèi)存(計量次數(shù)多的k-核酸片段)和硬盤(次數(shù)少的k-核酸片段)中。根據(jù)劃分段,將內(nèi)存和硬盤中處于同一區(qū)段的k-核酸片段進行合并排序,合并排序的順序遵循哈弗曼編碼方法。(13)完成所有的迭代次數(shù),完成計量工作?!疚臋n編號】G06F19/24GK104361264SQ201410757812【公開日】2015年2月18日申請日期:2014年12月11日優(yōu)先權(quán)日:2014年12月11日【發(fā)明者】陳科,黃煥舟,厲國強申請人:天津工業(yè)大學