面向存儲的dna序列的并行快速匹配方法及其系統的制作方法
【專利摘要】本發明提供一種面向存儲的DNA序列的并行快速匹配方法,應用于DNA序列的壓縮存儲,所述方法包括:哈希索引構建步驟:基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置;文件分塊步驟:輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理;多線程處理步驟:開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組,通過存儲匹配結果代替原始DNA序列達到壓縮存儲目的。
【專利說明】
面向存儲的DNA序列的并行快速匹配方法及其系統
技術領域
[0001]本發明涉及數據壓縮領域,尤其涉及一種面向存儲的DNA序列的并行快速匹配方法及其系統。
【背景技術】
[0002]下一代測序技術的發展促進了高通量DNA測序數據的產生,數據指數級的增長速度超過了計算機微處理器和存儲設備的增長速度,而高通量DNA測序數據壓縮技術是有效解決DNA序列存儲和傳輸的方法。而在應用于壓縮存儲之前,一種常見做法是將高通量測序數據FASTQ序列文件匹配到已有的基因組即參考基因組中,其中參考基因組文件的格式為FASTA文件格式,存儲目標序列和參考基因組的匹配結果代替原始序列達到壓縮存儲的目的,有效地剔除了冗余信息,只保留記錄不同的部分信息。因此堿基匹配就成為了DNA序列壓縮存儲所需要解決的一個重要問題。
[0003]目前主流的FASTQ匹配軟件有包括BWA(Burrows_WheelerAligner)工具、Bowtie工具,都是基于BWT的匹配方法。但是,基于BWT算法的BWA工具計算量較大,對存儲空間要求高,計算機內存消耗多,在運算速度上也較稀疏索引算法慢,內存占用和運算速度上相對于基于稀疏索引算法并不占據優勢。同時,Bowtie工具由于考慮質量分數的處理問題,其匹配時間和內存消耗進一步擴大,并且錯配情況考慮僅有3個以下,并且不允許序列和參考基因組之間有間隔的存在,例如插入和刪除的錯誤。上述方法都是針對下游序列分析而設計的匹配工具,它們追求匹配結果的完整性和精確性,但在DNA壓縮存儲中并不適用,特別是在高噪聲的DNA數據上。DNA壓縮存儲要求匹配速度快但對匹配結果的精確性要求可以適當放寬。
[0004]此外,現有已存在的這些匹配工具大多使用單線程,程序沒有采用多線程級進行并行化的處理,不能充分發揮多核處理器的線程應用的能力,不能夠充分利用多個執行內核,不能在特定的時間內執行更多任務,在整個匹配過程中,經常會出現運行速度慢、時間消耗多、內存消耗大等等問題,導致匹配效率非常低。
【發明內容】
[0005]有鑒于此,本發明的目的在于提供一種面向存儲的DNA序列的并行快速匹配方法及其系統,旨在解決現有技術中針對DNA序列的匹配效率低的問題。
[0006]本發明提出一種面向存儲的DNA序列的并行快速匹配方法,應用于DNA序列的壓縮存儲,其中,所述方法包括:
[0007]哈希索引構建步驟:基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置;
[0008]文件分塊步驟:輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理;
[0009]多線程處理步驟:開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組,通過存儲匹配結果代替原始DNA序列達到壓縮存儲目的。
[0010]優選的,所述哈希索引構建步驟具體包括:
[0011 ] 定義以堿基組合“AT”、“CG”為前綴的k個連續堿基稱為kmer;
[0012]找出FASTA格式的參考基因組中所有“AT”或“CG”前綴的kmer并轉化成哈希值;
[0013]定義四種堿基“A”、“C”、“G”、“T”的二進制哈希值分別為00、01、10、11,少量存在的“N”、“W”堿基,采用近似規則轉換成相應的“A”、“C"、“G”、“T”堿基;
[0014]將一個kmer中的堿基分別轉換成二進制哈希值,組合起來作為哈希表的一個鍵值,一個鍵值關聯的哈希表項存儲對應kmer在參考基因組中出現的所有位置,由此即構建了哈希索引;
[0015]并根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到后續匹配運算步驟中。
[0016]優選的,所述文件分塊步驟還包括:
[0017]在進行分塊處理之前,預置所需分塊的數量;
[0018]對原有的DNA序列文件進行文件指針遍歷;
[0019]計算出每個子塊含有的具體的序列的數量。
[0020]優選的,所述多線程處理步驟具體包括:
[0021]開啟與子塊數量相應的線程數,并執行調用了基于kmer哈希索引快速定位的匹配函數的線程函數來處理命令;
[0022]根據所述線程函數處理命令調用相應匹配函數,同步執行所有線程,直至所有線程執行完畢;
[0023]在匹配函數中,找出待匹配的DNA序列中所有“AT”或“CG”前綴的kmer并轉化為二進制哈希值,若哈希表中不存在該鍵值即不做匹配;
[0024]若存在鍵值,即以哈希表返回的匹配位置為起點對DNA序列和參考基因組進行雙向延展匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況;
[0025]當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功;
[0026]若序列只有部分匹配,則將不匹配的部分轉換為回文結構再重復上述過程進行重新匹配;
[0027]最后輸出匹配結果包括匹配位置、匹配類型、匹配長度、錯配位置,錯配內容,并將多個子塊各自執行匹配運算所得到的多個匹配結果作歸檔合并處理。
[0028]另一方面,本發明還提供一種面向存儲的DNA序列的并行快速匹配系統,所述系統包括:
[0029]哈希索引構建模塊,用于基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置;
[0030]文件分塊模塊,用于輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理;
[0031]多線程處理模塊,用于開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組;
[0032]具體匹配模塊,用于找出待匹配的DNA序列中所有指定前綴的kmer并轉化成哈希值,查詢哈希表獲得參考基因組中對應kmer的位置,以此為起點進行雙向延展匹配。
[0033]優選的,所述文件分塊模塊還用于:
[0034]在進行分塊處理之前,預置所需分塊的數量;
[0035]對原有的DNA序列文件進行文件指針遍歷;
[0036]計算出每個子塊含有的具體的序列的數量。
[0037]優選的,所述多線程處理模塊具體用于:
[0038]開啟與子塊數量相應的線程數,并執行調用了匹配運算的線程函數來處理命令;
[0039]根據所述線程函數處理命令調用相應的匹配函數,同步執行所有線程,直至所有線程執行完畢。
[0040]優選的,所述哈希索引構建模塊具體用于:
[0041 ] 定義以堿基組合“AT”、“CG”為前綴的k個連續堿基稱為kmer;
[0042]找出FASTA格式的參考基因組中所有“AT”或“CG”前綴的kmer并轉化成哈希值;
[0043]定義四種堿基“A”、“C”、“G”、“T”的二進制哈希值分別為00、01、10、11,少量存在的“N”、“W”堿基,采用近似規則轉換成相應的“A”、“C"、“G”、“T”堿基;
[0044]將一個kmer中的堿基分別轉換成二進制哈希值,組合起來作為哈希表的一個鍵值,一個鍵值關聯的哈希表項存儲對應kmer在參考基因組中出現的所有位置,由此即構建了哈希索引;
[0045]并根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到后續匹配運算步驟中。
[0046]優選的,所述系統還包括具體匹配模塊用于:
[0047]找出待匹配的DNA序列中所有“AT”或“CG”前綴的kmer并轉化為二進制哈希值,若哈希表中不存在該鍵值即不做匹配;
[0048]若存在鍵值,即以哈希表返回的匹配位置為起點對DNA序列和參考基因組進行雙向延展匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況;
[0049]當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功;
[0050]若序列只有部分匹配,則將不匹配的部分轉換為回文結構再重復上述過程進行重新匹配;最后輸出匹配結果包括匹配位置、匹配類型、匹配長度、錯配位置,錯配內容,并將多個子塊各自執行匹配運算所得到的多個匹配結果作歸檔合并處理。
[0051]本發明提供的技術方案應用于DNA序列壓縮方法中的基于參考基因組的壓縮方法,對FASTQ格式中的堿基序列作基于參考基因組的輕量級并行匹配,將最終得出的匹配結果再使用壓縮工具進行進一步處理。其中并行算法處理部分主要是基于PthreadS(P0SIXthreads)的線程級并行編程,是一套創建線程的應用程序接口,使用多線程并行實現多任務處理,實現了輕量級匹配的并行化,有效提高針對FASTQ格式的DNA數據的效率,并使得程序的運行速度大大加快。
【附圖說明】
[0052]圖1為本發明一實施方式中面向存儲的DNA序列的并行快速匹配方法流程圖;
[0053]圖2為本發明一實施方式中匹配并行執行過程的流程圖;
[0054]圖3為本發明一實施方式中多子塊匹配結果的合并過程的流程圖;
[0055]圖4為本發明一實施方式中并行匹配模型的總體流程圖;
[0056]圖5為本發明一實施方式中具體匹配流程圖;
[0057]圖6為本發明一實施方式中面向存儲的DNA序列的并行快速匹配系統10的內部結構示意圖。
【具體實施方式】
[0058]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0059]本發明【具體實施方式】提供了一種面向存儲的DNA序列的并行快速匹配方法,應用于DNA序列的壓縮存儲,其中,所述方法主要包括如下步驟:
[0060]S11、哈希索引構建步驟:基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置;[0061 ] S12、文件分塊步驟:輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理;
[0062]S13、多線程處理步驟:開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組,通過存儲匹配結果代替原始DNA序列達到壓縮存儲目的。
[0063]本發明提供的一種面向存儲的DNA序列的并行快速匹配方法使用多線程并行實現多任務處理,實現應用于壓縮存儲的輕量級DNA序列匹配的并行化,有效提高針對FASTQ格式的DNA數據的效率,并使得匹配速度也相應加快,從而使整個程序的運行速度大大加快,減少了在時間上的消耗,并增強了該方法的可用性。
[0064]以下將對本發明所提供的一種面向存儲的DNA序列的并行快速匹配方法進行詳細說明。
[0065]請參閱圖1,為本發明一實施方式中面向存儲的DNA序列的并行快速匹配方法流程圖。
[0066]在步驟SII中,哈希索引構建步驟:基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置。
[0067]在本實施方式中,FASTQ格式是一種存儲生物序列的文本格式,也是DNA序列常用的存儲格式之一。DNA測序技術產生成千上萬條DNA序列,這些DNA序列存儲于以FASTQ為格式的文件中,包含測序產生的所有信息。在廣泛使用的FASTQ格式中,每條序列包含四行,每行由換行符分割。每條序列以字符開始,后面緊接著元數據作為第一行,用來唯一標識DNA序列。第二行是堿基數據,由包含常見的{‘A’,‘T’,‘C’,‘G’,‘N’}五個字符的序列構成,其中字符‘N’表示不明確的堿基,可表示為{‘A’,‘T’,‘C’,‘G’}中任意一個字符。第三行以字符‘ + ’開始,緊接著與第一行相同的DNA序列標識。最后一行為質量分數行,與堿基對應,表示每個堿基字符對應位置測序的可信度。
[0068]在步驟S12中,文件分塊步驟:輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理。
[0069]在本實施方式中,需要對FASTQ格式的DNA序列文件進行預處理,主要包括:由于每條DNA序列記錄含有四行關鍵信息,所以根據四的倍數對FASTQ格式的DNA序列文件進行分塊處理,同時預置所需分塊的數量為10,當然也可作調整,例如可以根據需要將分塊數目調整為8、9、11、12等等,在分塊處理之前對原有的FASTQ格式的文件進行文件指針遍歷之后,計算得出每個子塊含有的具體的序列的數量。
[0070]在本實施方式中,所述文件分塊步驟S12還包括:在進行分塊處理之前,預置所需分塊的數量;對原有的DNA序列文件進行文件指針遍歷;計算出每個子塊含有的具體的序列的數量。
[0071]在步驟S13中,多線程處理步驟:開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組,通過存儲匹配結果代替原始DNA序列達到壓縮存儲目的。
[0072]在本實施方式中,并行的算法思路是使用線程級并行編程,開啟多個線程分別處理由線程數決定的若干個任務,再將該任務放到后臺去處理,其中線程函數調用了匹配函數,多個子塊同時執行線程函數,以實現匹配運算的并行執行。
[0073]在本實施方式中,多線程處理步驟S13采用Pthreads(即POSIX threads)的線程級并行編程方式來實現匹配運算的并行化,有效提高針對FASTQ格式的DNA數據的效率,具體包括:開啟與子塊數量相應的線程數,并執行調用了基于kmer哈希索引快速定位的匹配函數的線程函數來處理命令;根據所述線程函數處理命令調用相應的匹配函數,同步執行所有線程,直至所有線程執行完畢;在匹配函數中,找出待匹配的DNA序列中所有“AT”或“CG”前綴的kmer并轉化為二進制哈希值,若哈希表中不存在該鍵值即不做匹配;若存在鍵值,SP以哈希表返回的匹配位置為起點對DNA序列和參考基因組進行雙向延展匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況;當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功;若序列只有部分匹配,則將不匹配的部分轉換為回文結構再重復上述過程進行重新匹配;最后輸出匹配結果包括匹配位置、匹配類型、匹配長度、錯配位置,錯配內容。并將多個子塊各自執行匹配運算所得到的多個匹配結果作歸檔合并處理。其中,匹配并行執行的流程如圖2所示,為本發明一實施方式中匹配并行執行過程的流程圖。
[0074]如圖2中,在分成定義的子塊數量確定之后,例如分成η個子塊,根據子塊數量開啟相應的線程數(即開啟η個線程),每個子塊執行調用了基于kmer哈希索引快速定位的匹配函數的線程函數,然后所有線程同步執行,直至所有線程執行完畢。
[0075]在本實施方式中,所述哈希索引構建步驟SII還包括:定義前綴即堿基組合“AT”、“CG等,其后的k個喊基稱為kmer;找出參考基因組中所有如綴,然后將其后的kmer喊基序列轉化成哈希值;定義四種堿基“A”、“C”、“G”、“T” 二進制哈希值分別為00、01、10、11,少量存在的“N”、“W”等堿基,可以采用近似規則轉換成相應的“A”、“C”、“G”、“T”等堿基;將轉換的哈希值存入哈希表中,即構建了哈希索引;并根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到后續匹配運算步驟中。
[0076]在本實施方式中,所述具體匹配過程包括:找出待匹配的DNA序列中所有的前綴以及前綴后面k個堿基(kmer)轉化為哈希值,若不存在則直接輸出不匹配信息;并根據之前構建的哈希表返回的最佳匹配位置進行雙向匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況;當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功;若第一次匹配不滿足上述條件時候,將該序列的匹配部分輸出,將不匹配的部分轉換為回文結構再進行重新匹配;最后根據匹配過程,輸出匹配結果,匹配結果包括匹配位置、匹配類型、匹配長度等信息。如圖5所示,為本發明一實施方式中具體匹配流程圖。
[0077]本發明在所有線程任務執行完畢之后,由于文件分塊后進行并行匹配過程中會產生中間文件,記錄與分塊數量相應的匹配結果,理論上這些匹配結果可以直接應用于下一步的壓縮儲存工作,但壓縮存儲過程中必須基于FASTQ格式的DNA序列文件的整體匹配結果,所以需要將多個匹配結果作歸檔合并處理,以便后續工作進行,同時,輸出與性能相關的關鍵統計信息,在此就不在詳述,其中,多子塊匹配結果的合并過程如圖3所示,為本發明一實施方式中多子塊匹配結果的合并過程的流程圖。
[0078]在本實施方式中,本發明的面向存儲的DNA序列的并行快速匹配方法,還進一步包括:
[0079]參數可調步驟:在FASTA格式的參考基因中找出所有前綴,取前綴之后的k個堿基數創建哈希索引值,根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到所述匹配運算步驟中。
[0080]在本實施方式中,一些匹配過程中運行所需要的關鍵參數,例如匹配前綴P(默認值為“CG”)、匹配錯誤容忍度e(默認值為0.05)、最小有效匹配長度L(默認值為30),取前綴之后的k個堿基數創建哈希索引值,k默認值為8,匹配錯誤容忍度e即錯誤匹配率,這些都是固定的默認參數,本發明中提供參數的可調化,用戶可以根據需要調整參數以得到性能的最大化。同時,匹配線程也進行了參數可調處理,線程數b(默認值為10)可以根據需要調整開啟相應的線程數進行快速匹配。
[0081 ] 在本實施方式中,利用步驟S12對FASTQ格式的DNA序列文件進行分塊預處理,得到FASTQ格式的DNA序列文件的子塊,從而減少一次性串行匹配所帶來的時間占用問題。利用步驟S13實現應用于DNA序列文件壓縮存儲的輕量級匹配過程的并行化,開啟多個線程處理多個子塊,實現多子塊同步快速匹配,并將匹配結果作歸檔合并處理。同時,對參數設置進行可調化處理,可以自行調整參數來得到理想的匹配結果。在本實施方式中,并行匹配模型的總體流程圖圖4所示。
[0082]本發明提供的一種面向存儲的DNA序列的并行快速匹配方法,對FASTQ格式中的堿基序列作基于參考基因組的輕量級并行匹配,將得出的匹配結果再使用壓縮工具進行進一步處理。其中并行算法處理部分主要是基于Pthreads(P0SIX threads)的線程級并行編程,是一套創建線程的應用程序接口,使用多線程并行實現多任務處理,實現了輕量級匹配的并行化,有效提高針對FASTQ格式的DNA數據的效率,并使得程序的運行速度大大加快。
[0083]本發明【具體實施方式】還提供一種面向存儲的DNA序列的并行快速匹配系統10,主要包括:
[0084]哈希索引構建模塊11,用于基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置;
[0085]文件分塊模塊12,用于輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理;
[0086]多線程處理模塊13,用于開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組;
[0087]具體匹配模塊14,用于找出待匹配的DNA序列中所有指定前綴的kmer并轉化成哈希值,查詢哈希表獲得參考基因組中對應kmer的位置,以此為起點進行雙向延展匹配。
[0088]本發明提供的一種面向存儲的DNA序列的并行快速匹配系統10,使用多線程并行實現多任務處理,實現應用于壓縮存儲的輕量級DNA序列匹配的并行化,有效針對壓縮FASTQ格式的DNA數據的效率,并使得程序的運行速度大大加快,匹配速度也相應加快,減少在時間上的消耗,并增強了該方法的可用性。
[0089]請參閱圖6,所示為本發明一實施方式中面向存儲的DNA序列的并行快速匹配系統10的結構示意圖。
[0090]在本實施方式中,面向存儲的DNA序列的并行快速匹配系統10,應用于DNA序列的壓縮存儲,主要包括哈希索引構建模塊11、文件分塊模塊12、多線程處理模塊13以及具體匹配模塊14。
[0091]哈希索引構建模塊11,用于基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置。
[0092]在本實施方式中,哈希索引構建模塊11用于:定義以堿基組合“AT”、“CG”為前綴的k個連續堿基稱為kmer ;找出FASTA格式的參考基因組中所有“AT”或“CG”前綴的kmer并轉化成哈希值;定義四種堿基“A”、“C”、“G”、“T”的二進制哈希值分別為00、01、10、11,少量存在的“N”、“W”等堿基,可以采用近似規則轉換成相應的“A”、“C”、“G”、“T”等堿基;將一個kmer中的堿基分別轉換成二進制哈希值,組合起來作為哈希表的一個鍵值,一個鍵值關聯的哈希表項存儲對應kmer在參考基因組中出現的所有位置,由此即構建了哈希索引;并根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到后續匹配運算步驟中。
[0093]在本實施方式中,具體匹配模塊14,用于找出待匹配的DNA序列中所有指定前綴的kmer并轉化成哈希值,查詢哈希表獲得參考基因組中對應kmer的位置,以此為起點進行雙向延展匹配。
[0094]具體的,具體匹配模塊14,用于找出待匹配的DNA序列中所有“AT”或“CG”前綴的kmer并轉化為二進制哈希值,若哈希表中不存在該鍵值即不做匹配;若存在鍵值,即以哈希表返回的匹配位置為起點對DNA序列和參考基因組進行雙向延展匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況;當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功;若序列只有部分匹配,則將不匹配的部分轉換為回文結構再重復上述過程進行重新匹配;最后輸出匹配結果包括匹配位置、匹配類型、匹配長度、錯配位置,錯配內容,并將多個子塊各自執行匹配運算所得到的多個匹配結果作歸檔合并處理。
[0095]文件分塊模塊12,用于輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理。
[0096]在本實施方式中,FASTQ格式是一種存儲生物序列的文本格式,也是DNA序列常用的存儲格式之一。DNA測序技術產生成千上萬條DNA序列,這些DNA序列存儲于以FASTQ為格式的文件中,包含測序產生的所有信息。在廣泛使用的FASTQ格式中,每條序列包含四行,每行由換行符分割。每條序列以字符開始,后面緊接著元數據作為第一行,用來唯一標識DNA序列。第二行是堿基數據,由包含常見的{‘A’,‘T’,‘C’,‘G’,‘N’}五個字符的序列構成,其中字符‘N’表示不明確的堿基,可表示為{‘A’,‘T’,‘C’,‘G’}中任意一個字符。第三行以字符‘ + ’開始,緊接著與第一行相同的DNA序列標識。最后一行為質量分數行,與堿基對應,表示每個堿基字符對應位置測序的可信度。
[0097]在本實施方式中,文件分塊模塊12還用于:在進行分塊處理之前,預置所需分塊的數量;對原有的DNA序列文件進行文件指針遍歷;計算出每個子塊含有的具體的序列的數量。
[0098]多線程處理模塊13,用于開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組。
[0099]在本實施方式中,并行的算法思路是使用線程級并行編程,開啟多個線程分別處理由線程數決定的若干個任務,再將該任務放到后臺去處理,其中線程函數調用了匹配函數,多個子塊同時執行線程函數,以實現匹配運算的并行執行。
[0?00] 在本實施方式中,多線程處理步驟采用Pthreads(即POSIX threads)的線程級并行編程方式來實現匹配運算的并行化,有效提高針對FASTQ格式的DNA數據的效率,具體用于:開啟與子塊數量相應的線程數,并執行調用了匹配運算的線程函數處理命令;根據所述線程函數處理命令調用相應的匹配函數,同步執行所有線程,直至所有線程執行完畢。
[0101]本發明在所有線程任務執行完畢之后,由于文件分塊后進行并行匹配過程中會得到中間文件,產生與分塊數量相應的匹配結果,理論上這些匹配結果將應用于壓縮儲存工作,但壓縮存儲過程中必須基于FASTQ格式的DNA序列文件的整體匹配結果,所以需要匹配結果合并模塊將多個匹配結果作歸檔合并處理,以便后續工作進行,同時,輸出與性能相關的關鍵統計信息結果,在此就不在詳述。
[0102]在本實施方式中,面向存儲的DNA序列的并行快速匹配系統10,還包括:
[0103]參數可調模塊,用于在FASTQ格式的參考基因中找出所有前綴(如“CG”、“AT”),然后取前綴之后的k個堿基數創建哈希索引值,根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數,并將調整后的多個參數應用到所述匹配運算步驟中。
[0104]在本實施方式中,一些匹配過程中運行所需要的關鍵參數,例如匹配前綴P(默認值為“CG”)、匹配錯誤容忍度e(默認值為0.05)、最小有效匹配長度L(默認值為30),取前綴之后的k個堿基數創建哈希索引值,k默認值為8,匹配錯誤容忍度e即錯誤匹配率,這些都是固定的默認參數,本發明中實現了參數的可調化,用戶可以根據需要調整參數以得到性能的最大化。同時,匹配線程也進行了參數可調處理,線程數b(默認值為10)可以根據需要調整開啟相應的線程數進行快速匹配。
[0105]本發明提供的一種面向存儲的DNA序列的并行快速匹配系統10,對FASTQ格式中的堿基序列作基于參考基因組的輕量級并行匹配,將得出的匹配結果再使用壓縮工具進行進一步處理。其中并行算法處理部分主要是基于Pthreads(P0SIX threads)的線程級并行編程,是一套創建線程的應用程序接口,使用多線程并行實現多任務處理,實現了輕量級匹配的并行化,有效提高針對FASTQ格式的DNA數據的效率,并使得程序的運行速度大大加快。
[0106]值得注意的是,上述實施例中,所包括的各個單元只是按照功能邏輯進行劃分的,但并不局限于上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區分,并不用于限制本發明的保護范圍。
[0107]另外,本領域普通技術人員可以理解實現上述各實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,相應的程序可以存儲于一計算機可讀取存儲介質中,所述的存儲介質,如R0M/RAM、磁盤或光盤等。
[0108]以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種面向存儲的DNA序列的并行快速匹配方法,應用于DNA序列的壓縮存儲,其特征在于,所述方法包括: 哈希索引構建步驟:基于如綴對FASTA格式的參考基因組構建哈希索引,找出指定如綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置; 文件分塊步驟:輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理;多線程處理步驟:開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組,通過存儲匹配結果代替原始DNA序列達到壓縮存儲目的。2.如權利要求1所述的面向存儲的DNA序列的并行快速匹配方法,其特征在于,所述哈希索引構建步驟具體包括: 定義以堿基組合“AT”、“CG”為前綴的k個連續堿基稱為kmer; 找出FASTA格式的參考基因組中所有“AT”或“CG”前綴的kmer并轉化成哈希值; 定義四種堿基“A”、“C"、“G”、“T”的二進制哈希值分別為00、01、10、11,少量存在的“N”、“W”堿基,采用近似規則轉換成相應的“A”、、“G”、“T”堿基; 將一個kmer中的堿基分別轉換成二進制哈希值,組合起來作為哈希表的一個鍵值,一個鍵值關聯的哈希表項存儲對應kmer在參考基因組中出現的所有位置,由此即構建了哈希索引; 并根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到后續匹配運算步驟中。3.如權利要求1所述的面向存儲的DNA序列的并行快速匹配方法,其特征在于,所述文件分塊步驟還包括: 在進行分塊處理之前,預置所需分塊的數量; 對原有的DNA序列文件進行文件指針遍歷; 計算出每個子塊含有的具體的序列的數量。4.如權利要求1所述的面向存儲的DNA序列的并行快速匹配方法,其特征在于,所述多線程處理步驟具體包括: 開啟與子塊數量相應的線程數,并執行調用了基于kmer哈希索引快速定位的匹配函數的線程函數來處理命令; 根據所述線程函數處理命令調用相應匹配函數,同步執行所有線程,直至所有線程執行完畢; 在匹配函數中,找出待匹配的DNA序列中所有“AT”或“CG”前綴的kmer并轉化為二進制哈希值,若哈希表中不存在該鍵值即不做匹配; 若存在鍵值,即以哈希表返回的匹配位置為起點對DNA序列和參考基因組進行雙向延展匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況; 當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功; 若序列只有部分匹配,則將不匹配的部分轉換為回文結構再重復上述過程進行重新匹配; 最后輸出匹配結果包括匹配位置、匹配類型、匹配長度、錯配位置,錯配內容,并將多個子塊各自執行匹配運算所得到的多個匹配結果作歸檔合并處理。5.—種面向存儲的DNA序列的并行快速匹配系統,其特征在于,所述系統包括: 哈希索引構建模塊,用于基于前綴對FASTA格式的參考基因組構建哈希索引,找出指定前綴的所有kmer并以其為鍵值建立哈希索引表,每個表項存儲對應kmer出現的位置; 文件分塊模塊,用于輸入FASTQ格式的DNA序列文件,并將所述DNA序列文件進行分塊處理; 多線程處理模塊,用于開啟多個線程分別處理由線程數決定的若干任務,多個子塊同時調用基于kmer哈希索引快速定位的匹配函數,將子塊并行匹配到FASTA格式的目標參考基因組; 具體匹配模塊,用于找出待匹配的DNA序列中所有指定前綴的kmer并轉化成哈希值,查詢哈希表獲得參考基因組中對應kmer的位置,以此為起點進行雙向延展匹配。6.如權利要求5所述的面向存儲的DNA序列的并行快速匹配系統,其特征在于,所述文件分塊模塊還用于: 在進行分塊處理之前,預置所需分塊的數量; 對原有的DNA序列文件進行文件指針遍歷; 計算出每個子塊含有的具體的序列的數量。7.如權利要求6所述的面向存儲的DNA序列的并行快速匹配系統,其特征在于,所述多線程處理模塊具體用于: 開啟與子塊數量相應的線程數,并執行調用了匹配運算的線程函數來處理命令; 根據所述線程函數處理命令調用相應的匹配函數,同步執行所有線程,直至所有線程執行完畢。8.如權利要求5所述的面向存儲的DNA序列的并行快速匹配系統,其特征在于,所述哈希索引構建模塊具體用于: 定義以堿基組合“AT”、“CG”為前綴的k個連續堿基稱為kmer; 找出FASTA格式的參考基因組中所有“AT”或“CG”前綴的kmer并轉化成哈希值; 定義四種堿基“A”、“C"、“G”、“T”的二進制哈希值分別為00、01、10、11,少量存在的“N”、“W”堿基,采用近似規則轉換成相應的“A”、、“G”、“T”堿基; 將一個kmer中的堿基分別轉換成二進制哈希值,組合起來作為哈希表的一個鍵值,一個鍵值關聯的哈希表項存儲對應kmer在參考基因組中出現的所有位置,由此即構建了哈希索引; 并根據需要調整錯誤匹配率參數、最小有效匹配長度參數以及匹配線程數參數,并將調整后的多個參數應用到后續匹配運算步驟中。9.如權利要求5所述的面向存儲的DNA序列的并行快速匹配系統,其特征在于,所述具體匹配模塊具體用于: 找出待匹配的DNA序列中所有“AT”或“CG”前綴的kmer并轉化為二進制哈希值,若哈希表中不存在該鍵值即不做匹配; 若存在鍵值,即以哈希表返回的匹配位置為起點對DNA序列和參考基因組進行雙向延展匹配,并設置容錯率允許部分堿基存在錯配、插入、刪除的情況; 當匹配長度大于設定值最小有效匹配長度并且錯配率小于設置的容錯率時,則匹配成功; 若序列只有部分匹配,則將不匹配的部分轉換為回文結構再重復上述過程進行重新匹配; 最后輸出匹配結果包括匹配位置、匹配類型、匹配長度、錯配位置,錯配內容,并將多個子塊各自執行匹配運算所得到的多個匹配結果作歸檔合并處理。
【文檔編號】G06F17/30GK106096332SQ201610485409
【公開日】2016年11月9日
【申請日】2016年6月28日
【發明人】朱澤軒, 鄧清津, 儲穎, 孫怡雯
【申請人】深圳大學