摘要:隨著高通量的單核苷酸多態性(Single Nucleotide Polymorphism, SNP)檢測技術的發展,世界各地的實驗研究積累了大量的SNP數據,但是目前尚無一個全面綜合的SNP數據庫。SNP在致病基因發現、司法鑒定、個體化醫療等方面的應用得到了極大的關注和發展,因此有必要建立一個整合的人類SNP數據庫。在整合中需要進行大規模的單核苷酸多態性位點的驗證,該工作通過一個自主開發的、健壯的、用戶友好的生物信息學集群計算工具包EasyCluster在集群系統上得以高效完成。
關鍵詞:單核苷酸多態性; 集群計算; OSCAR; PBS
中圖法分類號:TP301文獻標識碼:A
文章編號:1001-3695(2007)01-0034-03
1緒論
隨著高通量的檢測SNP(Single Nucleotide Polymorphism)技術的發展,SNP圖譜的繪制工作在逐漸被完成。世界各地的實驗研究積累了大量的SNP數據,很多國家及其研究機構均建立了自己的SNP數據庫,包括由美國國立衛生研究院(National Institutes of Health, NIH)提供的主要是與癌癥和腫瘤相關的候選SNP數據庫、由NIH開辟的適于生物醫學研究的dbSNP多態數據庫、由人類基因組組織機構(Human Genome Organization, HUGO)維護的突變數據庫、由美國白頭研究所(Whitehead Institute for Biomedical Research Genome Institute)建立的人類SNP數據庫、由華盛頓大學(Washington University)資助的按染色體位置組織的SNP數據庫、由瑞典卡爾林斯卡研究院(Karolinska Institute of Sweden)建立的HGBase數據庫、由國際醫藥與信息加工公司聯合組成的SNP 研究聯盟(The SNP Consortium, TSC)建立的SNP 數據庫、由美國國立環境健康科學研究院(National Institute of Environmental Health Scien ̄ce)資助的猶他州大學SNP數據庫與日本衛生部提供的JSNP數據庫等[1~3]。
到目前為止,世界上已經發現了約一千萬個人類SNP。但很多SNP數據庫或者是針對某一人群,或者是針對特定疾病,沒有一個全面的、綜合的SNP數據庫。為了更加廣泛和深入地進行SNP的研究,有必要建立一個綜合全面的人類SNP數據庫。
我們初步計劃整合NCBI的dbSNP,日本的JSNP,SNP聯盟的TSCSNP等SNP數據庫,建立自己的新的數據庫,該數據庫將為未來的研究提供信息:①它將為我們提供SNP的基本信息,如SNP的位置、分布、頻率等;②它還將為我們提供其他高級的信息查詢,如SNP及其所在的基因的功能、SNP與相關疾病的關系等;③它能幫助我們進行數據的分析,如預測提交的序列中的SNP位點,多個SNP的關系及聯合作用的分析等。
建立SNP數據庫不僅能推動和輔助SNP的研究,其本身也是對SNP數據的整理、篩選和研究。我們通過序列比對等方法對SNP數據進行重新評估,并將不同數據庫中的數據整合起來。在這項工作中,面向如此大量數據的重新評估和驗證對于計算能力提出了更高的需求。為此,我們使用了生物信息學研究領域中工業界及學術界公認的、最為流行的、低造價、高性能的Linux集群計算系統,今天,任何一個生物信息學實驗室都可以很容易地搭建一個Linux集群計算平臺。Linux集群系統主要使用開放集群小組(Open Cluster Group)所開發的OSCAR集群軟件包。但是,該集群軟件包主要是面向系統的系列工具集合,缺乏一套面向用戶的集群工具,使得許多生物學家感覺到難以使用集群系統。雖然已有人在集群易用性方面做過一些有益的嘗試,如SSWrapper[4] 和WRAPID[5]工具包,但是它們都不是基于OSCAR系統的,而且缺少一些特性,如任務依賴性等。因此,迫切需要開發一套基于OSCAR系統并能夠非常容易移植到其他集群系統上去的相對健全的、用戶友好的、輕量級的工具包。
便攜批量處理系統(Portable Batch System, PBS)[6]是隨OSCAR集群軟件包發布的重要組件,主要用于任務分配。它依賴于一種特殊的、被稱之為PBS腳本(PBS Script)的文件來對用戶提交的任務進行描述。一種通常使用的方法是將大輸入文件分割成多個小文件,然后為每一個小的輸入文件建立PBS腳本,并作為任務提交給PBS分發到各個節點進行分布式計算。但是,在這個過程中存在如下幾點問題:①許多時候可能有一系列的大型輸入文件需要分割,因此用戶需要有一個工具能夠一次性批量地對一系列文件進行分割;②當有大量的小文件生成時需要采用結構化的存儲結構,因為將天文數字的小文件放在同一個文件夾中對操作系統輸入輸出(I/O)性能而言無疑是噩夢;③在分割過程中需要生成一個輸出文件的列表以供后續步驟參考;④OSCAR并沒有提供一個有效的方法去針對數百個輸入文件自動生成PBS腳本并提交計算;⑤用戶對于任務依賴性會有基本需求;⑥自動、批量地終止和重啟動任務也是一個重要的功能;⑦許多生物學家對于集群系統和PBS并不是十分熟悉,因此對他們而言,使用集群進行科學研究會需要一個比較長的學習曲線。為了解決以上幾個問題,我們開發了如下三個工具:①Split.pl,一個FASTA格式的多序列文件(MultiFasta File)分割工具,能夠將多個多序列文件按照用戶指定的方式自動批量地進行最優分割;②RunOscar.pl,一個能夠針對多個輸入文件自動生成PBS腳本并提交到集群系統進行計算的任務提交工具;③Kill.pl,一個能夠批量終止和重新啟動任務的任務控制工具。所有這些工具不僅能夠獨立工作,而且可以協同工作,構成一個有機的整體。此工具包使用PERL語言,在一臺有24個節點的集群上開發,集群系統為RedHat Linux 9.0及OSCAR 3.0。工具包、文檔及示例數據均可以在http://escience.tsinghua.edu.cn/EasyCluster/下載。
當工具包開發完成后,我們使用該工具包在集群上進行單核苷酸多態性位點驗證(SNP Validation,SNP驗證)的計算工作。在整合人類差異數據庫(Integrated Human Variant Database, IHVD)項目中,IHVD小組需要將世界上現有的SNP數據庫,包括dbSNP,JSNP等重要的SNP數據庫整合到IHVD中。IHVD整合流程如圖1所示。
圖1IHVD整合流程
IHVD整合流程的主要步驟是:①將dbSNP,JSNP及其SNP數據經過相應的Parser轉換為標準數據格式;②對標準數據格式進行SNP驗證等一系列處理;③將最終驗證的、無冗余的、標準化的數據導入IHVD數據庫中。
在這個過程中,首先需要對收集到的、格式各異的數據庫中的數據進行剔除冗余,并使之重新到基因組上進行定位。針對此繁重的工作,我們使用集群加速計算進程,并使用EasyCluster軟件包極大地方便了加速任務的生成及提交工作。
2系統及方法
2.1Split.pl
許多生物信息學工具,如FASTA,BLAST[7~9]等,均要求一個多序列文件作為它的輸入,然后對于文件中的序列逐條計算。一般而言,將一個多序列文件以序列為基本單位分割成多個小的文件并不會改變計算結果,因為將多個計算結果合并之后與原計算結果相同。因此我們可以針對每一個分割后的小文件啟動一個任務,并把任務分配到不同的計算機上進行并行計算,從而可以大大提高整體的計算效率[10,11]。
用戶對于分割多序列文件通常要求能夠一次性地將多個大的多序列文件分割,以得到一系列相近序列數(Count of Records)或者相近文件字節數大小的小文件,同時產生一個分割后的小文件列表以供后續步驟參考。Split.pl工具正是為此需求而設計的。例如,用戶有100個大的多序列文件,文件名從L001.fa到L100.fa作為輸入文件。輸入文件名(含路徑)列表于文件InputFileList中,每行一個文件名,以回車符結束。用戶需要一次性地將這100個大的輸入文件分割成小文件,每個小文件的大小為2MB,用戶只需執行如下命令:
Split.pl l InputFileList s 2000000 o SplitFileList
根據上述命令,待分割文件列表于文件InputFileList,分割后的文件列表于文件SplitFileList,每一分割后文件的大小為2MB。事實上,分割后的文件將會自動采用結構化的存儲結構以避免I/O性能問題。首先,Split.pl工具針對列表于文件InputFileList中的每一個文件名為InputFile創建文件夾InputFile.Split,然后在文件夾InputFile.Split中創建一系列子文件夾,默認為最多500個,編號為1~500。分割后的文件存儲在子文件夾中,每個文件夾中默認最多存儲500個文件。所以即使按照默認設置,已經最多可以容納500×500即約25萬個文件,基本能夠滿足一般需求了。
2.2RunOscar.pl
盡管PBS提供了一個將任務分配到集群計算節點上的接口,但是針對上一步驟生成的大量小文件逐一手寫PBS腳本并提交,對于用戶而言是不現實的。因此,這里介紹的RunOscar.pl工具就是對于PBS的一個包裝,它實現了PBS最常用的特性,并且大大簡化了產生PBS腳本及其提交的工作。用戶只需要寫一個包含命令模式的文件,RunOscar.pl工具就可以識別這些命令模式文件,根據這些命令模式生成PBS腳本并提交任務。例如,用戶使用第2.1節介紹的Split.pl工具生成了一個包含所有分割好的輸入文件名的列表文件SplitFile ̄List,用戶需要對該文件列表中列出的所有文件逐一進行BLAST比對。比對針對的數據庫是人類染色體數據,從1~Y分為24個文件,位于文件夾/path/to/H_sampiens/中。人類染色體數據文件已經使用BLAST工具包中的Formatdb工具進行了格式化,使之能夠適于BLAST進行比對。NCBI BLAST工具包位于文件夾/path/to/blast/,結果文件放置在文件夾/path/to/out/中,結果文件名的命名格式為“輸入文件名_chr染色體編號.out”。根據上述要求,用戶可以書寫命令模式如下:
comd=/path/to/blast/blastall p blastn i ~IN~ d /path/to/H_sapiens/chr1 o /path/to/out/~INBASE~_chr1.outlist=/path/to/SplitFileList
一個命令模式是由被“”符號分割的數個鍵-值對(KeyValue Pairs)所組成的。在命令模式被展開時,通配符“~IN~”將會被每一個列表于文件SplitFileList(列表文件是由鍵List所指定的)中的輸入文件名所替代;通配符“~INBASE~”則會被輸入文件的路徑所替代。
用戶可以針對24個染色體數據文件寫出24個命令模式,并將它們列表于文件CommandList中,每行一個模式,以回車符結束;然后執行如下命令:
RunOscar.pl F CommandList
命令將立即展開文件CommandList中的每一個命令模式,產生相應的PBS腳本。在這個例子中,假設用戶有1 000個由Split.pl工具生成的小文件,展開后將有24 000個PBS腳本被自動生成并提交為計算任務。
2.3Kill.pl
為了控制任務的運行,Kill.pl工具被設計用于終止或重啟動任務,它主要依賴于RunOscar.pl工具產生的記錄文件(Log)。例如,終止記錄于文件b29157.080504.log中的任務,用戶只需要輸入如下命令:
Kill.pl l b29157.080504.log o kill
當任務被終止后,用戶可以用下述命令重新提交任務:
Kill.pl l b29157.080504.log o resub
2.4SNP驗證
SNP的驗證工作在一臺擁有24個節點的Dell集群上進行。集群的主節點為一臺Dell PowerEdge 4600,擁有兩塊Intel Xeon超線程2.4GHz的CPU;24個計算節點均為Dell PowerEdge 1750,擁有一塊Intel Xeon超線程2.4GHz的CPU,1GB內存和一塊10 000轉的36GB Ultra320 SCSI熱插拔硬盤;存儲系統使用一臺Power Vault 220S SCSI磁盤陣列,磁盤陣列由可拆卸式高速SCSI熱插拔硬盤組成,所有節點均可通過網絡文件系統(Network File System, NFS)對其進行讀寫。全部節點均安裝RedHat Linux 9.0操作系統,OSCAR 3.0集群系統,主節點上還安裝有最新版本的EasyCluster,NCBI BLAST,FASTA,CLUSTAL W等軟件,并存放有人類基因組數據等。
SNP驗證工作的主要流程如圖2所示。
整合后的原始數據為Blast1_y.vo2,Blast_joinxx_1~10.vo2,Blast_join1xx_1~10.vo2,Blast_join2xx_1~10.vo2,Blast_join3xx_1~10.vo2,Blast_join4xx_1~10.vo2,Blast5_10~X.vo2,Blast6_10~X.vo2共八個文件。將文件名列于文件List_vo2.txt中,然后使用Split.pl一次性分割所有文件,分割命令為
Split.pl l List_vo2.txt o SplitFileList_vo2 s 500000
分割后得到Blast1_y.vo2.1,Blast1_y.vo2.2,…,Blast6_10~X.vo2.23共450個大小為500KB的文件,同時還得到一個分割后文件的列表文件SplitFileList_vo2。
整合數據經過分割、任務生成和任務分發三個步驟進行分布式驗證計算。*注:每次提交時生成的任務編號不盡相同,圖中編號僅供示例圖2SNP驗證流程
為了減少任務的數量,需要對人類基因組數據進行合并。將1,2,…,22,X,Y,1_random,2_random,…,X_random共47個文件合并成為1~5,6~12,13~Y,1_random~X_random共四個文件,并創建相應的命令模式文件command_vo2,內容如下:
3結果及討論
在實際所用的擁有24個節點的集群上,全部1 800個任務只用了不到30 h就完成了。圖3是任務運行時間圖,圖3中A部分的1 800條短線段代表每一任務的開始時刻和運行時長;曲線B表示任一時刻t正在運行的任務數目。
圖3任務運行時間
從圖3可以看出,經過分割后的任務能夠在相對較短的時間內完成,從而使得整個運行期內所有計算節點均無空閑。圖3中的曲線B顯示,在95%以上的時間內都是24個節點在同時運算,此時曲線B達到最大值24,從而達到了并行的目的,大大提高了整體的運算速度。
4結論
SNP在致病基因發現、司法鑒定、個體化醫療等方面的應用得到了極大的關注和發展,為此有必要建立一個整合的人類SNP數據庫。大規模的單核苷酸多態性位點的驗證工作對于計算能力提出了更高的需求,分布式計算能極大地提高生物信息學計算的性能,Linux集群則是部署分布式計算的最好平臺之一。PBS及OSCAR系統是Linux集群上最為流行和容易部署的集群計算系統。EasyCluster工具包使得PBS的使用在保留了其強大和靈活的優點之外大大簡化了操作,降低了使用難度,它給不熟悉集群的生物學家提供了一個簡單易行的方式使用集群系統來完成大量的生物信息學計算任務。通過該工具包的輔助使得大規模SNP位點的驗證工作得以快速高效地完成。
致謝:
本項目是由清華大學教育部生物信息學重點實驗室與北京國家人類基因組北方中心合作完成的。集群系統由國家人類基因組北方中心提供。
參考文獻:
[1]Gu HF. Single Nucleotide Polymorphisms(SNPs)and SNP Databases[J]. Chinese Journal of Medical Genetics, 2001,18(6):479481.
[2]Dunham I. Human Genome Sequences: Enigmatic Variations[J]. Mutagenesis, 2002,17 (6):457461.
[3]Porter CJ, Talbot CC, Cuticchia AJ. Central Mutation Databases:A Review[J]. Hum. Mutat., 2000,15 (1):3644.
[4]Wang C, Lefkowitz EJ. SSWrapper: A Package of Wrapper Applications for Similarity Searches on Linux Clusters[J]. BMC Bioinforma ̄tics, 20-04, 5(1):171.
[5]Hokamp K, Shields DC, Wolfe KH, et al. Wrapping up BLAST and Other Applications for Use on UNIX Clusters[J]. Bioinformatics, 2003,19(3):441442.
[6]Henderson RL. Job Scheduling under the Portable Batch System[C]. Proceedings of the Workshop on Job Scheduling Strategies for Parallel Processing, London: SpringerVerlag, 1995. 279294.
[7]Pearson WR, Lipman DJ. Improved Tools for Biological Sequence Comparison[J]. Proc. of Natl. Acad. Sci.,1988,85(8):24442448.
[8]Altschul SF, Madden TL, Schaffer AA, et al. Gapped BLAST and PSIBLAST: A New Generation of Protein Database Search Programs[J]. Nucleic Acids Res., 1997,25(17):33893402.
[9]Altschul SF, Gish W, Miller W, et al. Basic Local Alignment Search Tool[J]. J. Mol. Biol., 1990,215(3):403410.
[10]Mathog DR. Parallel BLAST on Split Databases[J]. Bioinformatics, 2003,19(14):18651866.
[11]Clifford R, Mackey AJ. Disperse: A Simple and Efficient Approach to Parallel Database Searching[J]. Bioinformatics, 2000,16(6):564565.
作者簡介:
劉青焱(1981),男,山東郯城人,碩士,主要研究方向為按需高性能生物信息學計算、生物信息數據的可視化和數據挖掘等;
莊海濱(1980),男,福建福州人,碩士,主要研究方向為SNP數據的整合與分析、TFBS預測與發現等;
夏永靜(1964),女,遼寧沈陽人,副教授,主要研究方向為壽命與SNP的關系、大規模高通量SNP檢測方法等;
劉湘軍(1968),男,湖南雙峰人,教授,博導,主要研究方向為SNP的發現與研究、基因注釋系統的標準建立和軟件開發等。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文