張寧 曹興芹 潘偉民
摘要:在分子生物學(xué)研究中,建立二次數(shù)據(jù)庫(kù)可以更深入的進(jìn)行特色物種的研究。通過(guò)分析了構(gòu)建生物信息二次數(shù)據(jù)庫(kù)的復(fù)雜性和必要性,在MySQL數(shù)據(jù)庫(kù)的基礎(chǔ)上利用Bioperl相關(guān)技術(shù)提出了可行性方案,并給出了關(guān)鍵的構(gòu)建步驟,最后建立了一個(gè)生物信息研究平臺(tái)。
關(guān)鍵詞:二次數(shù)據(jù)庫(kù);MySQL;Bioperl
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)10-2195-04
Abstract:In the study of molecular biology, establishing secondary database can research on characteristics of species more in-depth. This paper analyzes the complexity and necessity of constructing biological information secondary database, uses Bioperl related technical based on the MySQL, puts forward some feasible schemes, gives the key steps, and finally establishs a biological information research platform.
Key words: secondary database; MySQL;Bioperl
1 概述
自從人類基因組計(jì)劃實(shí)施以來(lái),國(guó)際上生物分子相關(guān)的數(shù)據(jù)庫(kù)就如雨后春筍般地涌現(xiàn)出來(lái),有數(shù)據(jù)全面、面向世界開(kāi)放的一級(jí)數(shù)據(jù)庫(kù),如著名的三大核酸數(shù)據(jù)庫(kù)GeneBank、DDBJ和EMBL,人類基因組數(shù)據(jù)庫(kù)GDB,蛋白質(zhì)序列數(shù)據(jù)庫(kù)PIR、SWISS-PROT和PROSITE,蛋白質(zhì)結(jié)構(gòu)數(shù)據(jù)庫(kù)PDB、SCOP、FSSP和MMDB等等。數(shù)據(jù)庫(kù)雖多,但也存在諸多問(wèn)題。例如國(guó)際上著名的核酸數(shù)據(jù)庫(kù)就存在數(shù)據(jù)過(guò)多、重復(fù)、分類較粗的問(wèn)題[1],因此才有了眾多源自公共一級(jí)數(shù)據(jù)庫(kù)的、適應(yīng)某一方面研究或特定實(shí)驗(yàn)室的二級(jí)數(shù)據(jù)庫(kù)[2],如PROSITE、Profiles和Pfam。二級(jí)數(shù)據(jù)庫(kù)力求實(shí)現(xiàn)數(shù)據(jù)格式的統(tǒng)一,整合已有的優(yōu)秀數(shù)據(jù)資源,避免數(shù)據(jù)庫(kù)的重復(fù)建設(shè)[1]。它不是重復(fù)存儲(chǔ)大型數(shù)據(jù)庫(kù)已有的未處理數(shù)據(jù),而是收集存儲(chǔ)經(jīng)分析處理過(guò)的有意義的數(shù)據(jù),以滿足人們對(duì)不同數(shù)據(jù)的需要[3]。相對(duì)而言這些數(shù)據(jù)庫(kù)中數(shù)據(jù)的針對(duì)性強(qiáng),準(zhǔn)確性高,不足之處是大部分?jǐn)?shù)據(jù)庫(kù)都不對(duì)外開(kāi)放,提供服務(wù)的數(shù)據(jù)庫(kù)也存在服務(wù)質(zhì)量不高、不能滿足用戶需要等[4]。因此建立自己的專用數(shù)據(jù)庫(kù)十分必要。
2 生物信息處理軟件包Bioperl
針對(duì)生物信息的復(fù)雜性及其分析工具的復(fù)雜性,可以利用Bioperl進(jìn)行二次軟件開(kāi)發(fā),Bioperl是一個(gè)功能全面、源代碼全部開(kāi)放的生物信息學(xué)軟件包,受到國(guó)際上生物信息領(lǐng)域軟件開(kāi)發(fā)的普遍歡迎[5],它基本上是以模塊或函數(shù)庫(kù)的方式給出,在此基礎(chǔ)上進(jìn)行二次軟件開(kāi)發(fā)將較大幅度地提高軟件開(kāi)發(fā)的效率,可提高軟件的可用性和可擴(kuò)展性。
Bioperl軟件包含了基本程序集合,提供多種操作基類和數(shù)據(jù)基本接口,提供大量的生物信息學(xué)常用算法的源代碼、二次數(shù)據(jù)庫(kù)結(jié)構(gòu)及數(shù)據(jù)操作接口,可以很方便地調(diào)用各種第三方程序。
3 生物二次數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)
3.1生物二次數(shù)據(jù)庫(kù)的功能
生物二次數(shù)據(jù)庫(kù)適用于需要對(duì)生物信息數(shù)據(jù)庫(kù)進(jìn)行檢索、比對(duì)、分析的單位或個(gè)人。它的主要功能是將網(wǎng)上各種常用的生物信息學(xué)數(shù)據(jù)庫(kù)中的不同結(jié)構(gòu)、不同語(yǔ)義的數(shù)據(jù)整合在一起,保存在本地關(guān)系型數(shù)據(jù)庫(kù)中,使用戶可以在統(tǒng)一的界面上方便地查詢和分析生物信息數(shù)據(jù)。
對(duì)數(shù)據(jù)庫(kù)的使用者,生物二次數(shù)據(jù)庫(kù)提供下載數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)格式,加載到本地?cái)?shù)據(jù)庫(kù)和數(shù)據(jù)維護(hù)等功能。對(duì)生物信息數(shù)據(jù)的使用者,生物二次數(shù)據(jù)庫(kù)提供對(duì)各種序列數(shù)據(jù)進(jìn)行查詢、檢索、序列對(duì)比和同源性分析,以及統(tǒng)計(jì)分析等功能。
3.2生物二次數(shù)據(jù)庫(kù)的基本結(jié)構(gòu)
由于生物二次數(shù)據(jù)庫(kù)所需的許多基因和蛋白數(shù)據(jù)散落在文獻(xiàn)和各大數(shù)據(jù)庫(kù)中,數(shù)據(jù)格式各不相同。為了兼容多種格式的生物序列數(shù)據(jù),數(shù)據(jù)庫(kù)中的表設(shè)計(jì)需要一定的冗余,為了與國(guó)際接軌,生物二次數(shù)據(jù)庫(kù)將在Biosql軟件中給出的數(shù)據(jù)模型基本結(jié)構(gòu)的基礎(chǔ)上做適應(yīng)性調(diào)整,其關(guān)鍵部分的E-R圖參見(jiàn)圖1[6]。
圖1中表biodatabase存放的是數(shù)據(jù)庫(kù)的名稱,用來(lái)存放的不同種類的數(shù)據(jù)。表bioentry是二次數(shù)據(jù)庫(kù)序列目錄,存放序列的id號(hào)、版本號(hào)等,它們與表bioentry_keywords、表bioentry_reference構(gòu)成二次數(shù)據(jù)庫(kù)的核心。表biosequence存放具體的序列數(shù)據(jù),表comment與表reference分別存放序列的注釋和序列信息的引用文獻(xiàn)資料。
3.3生物二次數(shù)據(jù)庫(kù)的接口
生物二次數(shù)據(jù)庫(kù)中的數(shù)據(jù)主要來(lái)源于Internet上異構(gòu)的數(shù)據(jù)庫(kù),且不是源數(shù)據(jù)庫(kù)的直接拷貝,而是其中一部分所需要數(shù)據(jù)的采集和重新組織。因此在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),一方面利用Bioperl對(duì)公共數(shù)據(jù)庫(kù)的專用接口編程實(shí)現(xiàn)國(guó)際上公共數(shù)據(jù)庫(kù)中數(shù)據(jù)的自動(dòng)獲取,另一方面通過(guò)Perl腳本編程實(shí)現(xiàn)本地實(shí)驗(yàn)數(shù)據(jù)的導(dǎo)入。
數(shù)據(jù)庫(kù)處理的數(shù)據(jù)來(lái)自這三方面:GenBank、SwissProt等位于Internet上公開(kāi)的大型公共數(shù)據(jù)庫(kù);Internet上其它沒(méi)有專用接口的公共數(shù)據(jù)庫(kù)或本地ftp下載或構(gòu)建的其它數(shù)據(jù)庫(kù);本地實(shí)驗(yàn)數(shù)據(jù):FASTA、EMBL等格式的平面數(shù)據(jù)文件。針對(duì)不同的數(shù)據(jù)源,數(shù)據(jù)庫(kù)提供的不同的接口模塊對(duì)數(shù)據(jù)文件或數(shù)據(jù)庫(kù)進(jìn)行操作。對(duì)于GenBank等公共數(shù)據(jù)庫(kù),使用Bioperl對(duì)公共數(shù)據(jù)庫(kù)的專用接口對(duì)數(shù)據(jù)進(jìn)行處理;對(duì)于Internet上其它沒(méi)有專用接口的公共數(shù)據(jù)庫(kù),使用Perl DBI接口;對(duì)于平面數(shù)據(jù)文件,使用SeqIO序列文件操作接口。這些處理可以保證使用者使用生物二次數(shù)據(jù)庫(kù)能通過(guò)多種渠道獲得盡可能多的相關(guān)數(shù)據(jù)源。
3.4生物二次數(shù)據(jù)庫(kù)的運(yùn)行環(huán)境
由于生物信息數(shù)據(jù)量大、類型復(fù)雜、關(guān)聯(lián)性強(qiáng)等特點(diǎn),而傳統(tǒng)的串行算法和單一結(jié)點(diǎn)的計(jì)算機(jī)很難適應(yīng)龐大的生物信息處理的需要,主要體現(xiàn)在處理海量數(shù)據(jù)時(shí),系統(tǒng)無(wú)法提供足夠大的內(nèi)存和速度以滿足應(yīng)用的需求。所以集群系統(tǒng)適合作為構(gòu)建生物二次數(shù)據(jù)庫(kù)的平臺(tái)。
集群系統(tǒng)一般使用單臺(tái)或聯(lián)網(wǎng)的多臺(tái)計(jì)算機(jī)或服務(wù)器,將其中一臺(tái)與外網(wǎng)連接的計(jì)算機(jī)設(shè)定為主節(jié)點(diǎn),集群的控制管理工作在主節(jié)點(diǎn)上完成,主節(jié)點(diǎn)也參與運(yùn)算,同時(shí)又是計(jì)算節(jié)點(diǎn)。 其余計(jì)算機(jī)為從節(jié)點(diǎn), 即計(jì)算節(jié)點(diǎn)。 以后可以使用同樣的方式增加節(jié)點(diǎn)數(shù)目,對(duì)集群的規(guī)模進(jìn)行擴(kuò)展。整個(gè)集群中的各個(gè)節(jié)點(diǎn)都使用雙絞線通過(guò)網(wǎng)卡和交換機(jī)以星型方式連成局域網(wǎng)絡(luò),見(jiàn)圖2。
本研究的集群系統(tǒng)使用了實(shí)驗(yàn)室的4臺(tái)浪潮英信服務(wù)器、一臺(tái)快速以太網(wǎng)交換機(jī)和若干5類雙絞線。每臺(tái)服務(wù)器的配置:兩個(gè)四核的Intel(R) Xeon(R) CPU E5504@2.00GHz處理器、2GB 內(nèi)存、320GB 硬盤(pán)×4,32位總線、兩塊高性能千兆網(wǎng)卡。使用的天工iSpirit2924G型號(hào)的交換機(jī)的配置:10/100/1000Mbps傳輸速率、13.6Gbps背板帶寬、6.6Mbps包轉(zhuǎn)發(fā)率、24個(gè)百兆和兩個(gè)千兆R(shí)J45端口。該系統(tǒng)共有處理機(jī)8個(gè),節(jié)點(diǎn)4個(gè),其中一臺(tái)服務(wù)器作為主節(jié)點(diǎn),它的一塊網(wǎng)卡通過(guò)與外網(wǎng)聯(lián)接遠(yuǎn)程獲取一級(jí)數(shù)據(jù)庫(kù)中的數(shù)據(jù),另一塊與集群系統(tǒng)中的快速以太網(wǎng)交換機(jī)相連,實(shí)現(xiàn)節(jié)點(diǎn)與計(jì)算節(jié)點(diǎn)間的通信。其余三臺(tái)服務(wù)器作為計(jì)算節(jié)點(diǎn),通過(guò)網(wǎng)卡聯(lián)接在交換機(jī)上。生物二次數(shù)據(jù)庫(kù)的構(gòu)建在控制節(jié)點(diǎn)上進(jìn)行。
3.5生物二次數(shù)據(jù)庫(kù)的構(gòu)建
抗逆生物二次數(shù)據(jù)庫(kù)采用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)數(shù)據(jù)模型。為在數(shù)據(jù)內(nèi)容更新、支持高效事務(wù)處理的前提下減少數(shù)據(jù)冗余,優(yōu)化數(shù)據(jù)模型和存儲(chǔ)結(jié)構(gòu),采用MySQL和XML技術(shù)并行構(gòu)建兩套數(shù)據(jù)庫(kù)系統(tǒng),以便在本地集群的并行計(jì)算平臺(tái)上,實(shí)現(xiàn)生物信息分析軟件的并行化,以達(dá)到高效分析與處理大量復(fù)雜生物數(shù)據(jù)的目的。
3.5.1 MySQL的安裝和設(shè)置
MySQL是開(kāi)放源碼的結(jié)構(gòu)化查詢語(yǔ)言關(guān)系型數(shù)據(jù)庫(kù),它不但體積小、速度快、總體擁有成本低,而且支持多種操作系統(tǒng)、為多種編程語(yǔ)言提供了API、支持多線程、支持多種存儲(chǔ)引擎。既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中。符合基因組工程“開(kāi)放”和“免費(fèi)共享”的精神,同時(shí)也由于其快速、強(qiáng)大的字符串操作能力和對(duì)超大數(shù)據(jù)量的支持,很適合生物信息處理領(lǐng)域。
操作系統(tǒng)自帶的MySQL數(shù)據(jù)庫(kù)版本可能較低,BioSQL不建議使用太低的MySQL版本,所以在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)建議卸載系統(tǒng)中的原有MySQL數(shù)據(jù)庫(kù),安裝最新版的MySQL 數(shù)據(jù)庫(kù)。
BioSQL是非常大的數(shù)據(jù)庫(kù),有些非常大的序列記錄超過(guò)MySQL的一些默認(rèn)設(shè)置,這就需要在第一次啟動(dòng)MySQL之前,給MySQL的全局配置文件中的“max_allowed_packet”設(shè)置一個(gè)不小于10M的值。
3.5.2 BioSQL接口模塊的安裝
在構(gòu)建BioSQL前,需要使用perl腳本操作數(shù)據(jù)庫(kù),需要的兩個(gè)接口文件:DBI—perl通用數(shù)據(jù)庫(kù)接口和DBD::MySQL—Perl MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序模塊。由于模塊間的依賴關(guān)系,這兩個(gè)接口的安裝是有先后順序的,先安裝DBI在安裝DBD。
安裝DBI前先確定操作系統(tǒng)是否安裝gcc編譯器,否則在執(zhí)行編譯命令時(shí),會(huì)出現(xiàn)警告信息。安裝DBD::MySQL模塊時(shí)需要注意的是先設(shè)置MySQL的環(huán)境變量再進(jìn)行模塊安裝。
3.5.3 BioPerl,BioPerldb等模塊的準(zhǔn)備和安裝
通過(guò)CPAN安裝BioPerl,BioPerldb等模塊。在使用CPAN前需要對(duì)其進(jìn)行相應(yīng)的配置,配置前需要確保聯(lián)網(wǎng),并取得root權(quán)限。
在安裝各種模塊之前,先更新CPAN Module,而不是直接裝模塊,否則會(huì)遇到“undefined subroutine &Digest::base::new”之類的錯(cuò)誤。進(jìn)入CPAN的shell運(yùn)行cpan> install Module::Build,這一步是關(guān)鍵。因?yàn)檫@樣可以得到最近更新的CPAN.pm文本并且讓所有的模塊都依附于它,所有的命令模塊包將進(jìn)入一個(gè)自動(dòng)安裝過(guò)程。
裝好新的CPAN Module,先退出,然后安裝Module::Build模塊。因?yàn)镸odule::Build打包出來(lái)的模塊安裝時(shí)必須要先安裝Module::Build。安裝BioPerl,BioPerldb等模塊時(shí),在install命令前使用force,因?yàn)樵诎惭b的過(guò)程中,會(huì)出現(xiàn)一些test出現(xiàn)錯(cuò)誤,如果這些錯(cuò)誤不會(huì)影響程序的使用可以強(qiáng)制安裝而忽略安裝過(guò)程中的測(cè)試錯(cuò)誤。如果安裝BioPerl-DB時(shí)DBI和DBD模塊不能被發(fā)現(xiàn),那么安裝會(huì)失敗。
3.5.4 BioSQL數(shù)據(jù)庫(kù)基本結(jié)構(gòu)的定義
定義BioSQL數(shù)據(jù)庫(kù)的基本結(jié)構(gòu),使用source命令讀取sql/biosqldb-mysql.sql中的定義表結(jié)構(gòu)的SQL語(yǔ)句,若MySQL服務(wù)器版本是5.5會(huì)出現(xiàn)“ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that...”等信息,這是因?yàn)镸ySQL5.5版本的默認(rèn)存儲(chǔ)引擎更改為InnoDB,說(shuō)明數(shù)據(jù)類型錯(cuò)誤,把biosqldb-mysql.sql文件中的所有“TYPE”替換成“engine”。當(dāng)看到biosql數(shù)據(jù)庫(kù)中已生成28張表時(shí),說(shuō)明BioSQL數(shù)據(jù)庫(kù)的基本結(jié)構(gòu)已經(jīng)定義好了。
4 導(dǎo)入分類數(shù)據(jù)
4.1導(dǎo)入NCBI taxonomy物種分類體系
在將各種序列數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)之前,先將NCBI的物種分類數(shù)據(jù)庫(kù)導(dǎo)入,可對(duì)后續(xù)的數(shù)據(jù)處理工作提供便利。利用biosql-1.0.1中自帶的perl腳本load_ncbi_taxonomy.pl,設(shè)置perl命令的–download參數(shù)從網(wǎng)上下載并導(dǎo)入數(shù)據(jù)庫(kù),這個(gè)過(guò)程大約需要7個(gè)小時(shí)。如果把taxonomy文件從該網(wǎng)站下載到本地,再進(jìn)行導(dǎo)入,運(yùn)行時(shí)間會(huì)大大縮短,此時(shí)還要注意,/tmp目錄的空間是否充足,否則會(huì)現(xiàn)運(yùn)行錯(cuò)誤。
4.2導(dǎo)入gene ontology文件數(shù)據(jù)
由于GenBank及Fasta這兩種最常用的格式sequence記錄中都沒(méi)有包含ontology這一部分信息,將這樣的數(shù)據(jù)導(dǎo)入重新構(gòu)建的生物二次數(shù)據(jù)庫(kù),由于序列數(shù)據(jù)的來(lái)源不同,可能會(huì)存在數(shù)據(jù)冗余或者其他相關(guān)問(wèn)題,所以必須從其他途徑將ontology一部分內(nèi)容導(dǎo)入BioSQL數(shù)據(jù)庫(kù),使得新構(gòu)建的數(shù)據(jù)庫(kù)更加規(guī)范化。利用BioPerl-DB安裝包中自帶的perl腳本load_ontology.pl,把在ontology的FTP站點(diǎn)上下載的gene_ontology.1_2.obo文件導(dǎo)入庫(kù),此時(shí)要注意-safe –noobsolete參數(shù)不可缺少,否則加載本體生物過(guò)程時(shí)會(huì)出錯(cuò)。
導(dǎo)入完成后,會(huì)發(fā)現(xiàn)biosql庫(kù)中原本空著的ontology表中已有數(shù)據(jù)。查詢結(jié)果如下:
5 導(dǎo)入生物數(shù)據(jù)
根據(jù)實(shí)驗(yàn)需求,建立一個(gè)能夠處理特色生物信息的二次數(shù)據(jù)庫(kù)。從ftp://ftp.ebi.ae.uk/pub/datbaases/embl/下載EMBL發(fā)布的特定物種的生物信息數(shù)據(jù)包,下載到本地解壓縮后,利用BioPerl-DB安裝包中自帶的perl腳本load_seqdatabase.pl完成GenBank格式數(shù)據(jù)的導(dǎo)入。導(dǎo)入基本數(shù)據(jù)后,剩下的工作就是隨時(shí)將發(fā)布在一次數(shù)據(jù)庫(kù)中相關(guān)的新數(shù)據(jù)導(dǎo)入二次數(shù)據(jù)庫(kù)中。
6 結(jié)束語(yǔ)
通過(guò)上述生物二次數(shù)據(jù)庫(kù)的構(gòu)建,生物信息使用者不僅可以搜集并下載網(wǎng)絡(luò)中的特定物種的信息數(shù)據(jù),而且還可以對(duì)搜集到的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。在已構(gòu)建二次數(shù)據(jù)庫(kù)的基礎(chǔ)上可以根據(jù)生物信息序列對(duì)比和統(tǒng)計(jì)分析等需要,進(jìn)行數(shù)據(jù)篩選和數(shù)據(jù)處理。
參考文獻(xiàn):
[1] Womble D D.GCG: The Wisconsin Package of sequence analysis programs[J]. Methods in molecular biology, 2000,132:3-22.
[2] Jamison D C.Editorial:OPEN BIOINFORMATICS[J].Nucleic Acids Research, 2003,19(6): 679-680.
[3] Philippi S.Light-weight integration of molecular biological databases[J].Bio in for matics, 2004,20(1): 51-57.
[4] Baxevanis A D.The molecular biology database collection[J].2002 update.Nucleic Acids Res, 2002,30(1):1-12.
[5] 陸楓.真核生物基因組結(jié)構(gòu)自動(dòng)注釋系統(tǒng)研究[D].華中科技大學(xué),2006.
[6] PostgreSQL網(wǎng)站[EB/OL].[http://www.postgresqlL.org/,2003-4-6/2012-3-16.