基于Bioperl的生物二次数据库的设计与实现

2014-04-29 00:44张宁曹兴芹潘伟民
电脑知识与技术 2014年10期

张宁 曹兴芹 潘伟民

摘要:在分子生物学研究中,建立二次数据库可以更深入的进行特色物种的研究。通过分析了构建生物信息二次数据库的复杂性和必要性,在MySQL数据库的基础上利用Bioperl相关技术提出了可行性方案,并给出了关键的构建步骤,最后建立了一个生物信息研究平台。

关键词:二次数据库;MySQL;Bioperl

中图分类号:TP311 文献标识码:A 文章编号: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 概述

自从人类基因组计划实施以来,国际上生物分子相关的数据库就如雨后春笋般地涌现出来,有数据全面、面向世界开放的一级数据库,如著名的三大核酸数据库GeneBank、DDBJ和EMBL,人类基因组数据库GDB,蛋白质序列数据库PIR、SWISS-PROT和PROSITE,蛋白质结构数据库PDB、SCOP、FSSP和MMDB等等。数据库虽多,但也存在诸多问题。例如国际上著名的核酸数据库就存在数据过多、重复、分类较粗的问题[1],因此才有了众多源自公共一级数据库的、适应某一方面研究或特定实验室的二级数据库[2],如PROSITE、Profiles和Pfam。二级数据库力求实现数据格式的统一,整合已有的优秀数据资源,避免数据库的重复建设[1]。它不是重复存储大型数据库已有的未处理数据,而是收集存储经分析处理过的有意义的数据,以满足人们对不同数据的需要[3]。相对而言这些数据库中数据的针对性强,准确性高,不足之处是大部分数据库都不对外开放,提供服务的数据库也存在服务质量不高、不能满足用户需要等[4]。因此建立自己的专用数据库十分必要。

2 生物信息处理软件包Bioperl

针对生物信息的复杂性及其分析工具的复杂性,可以利用Bioperl进行二次软件开发,Bioperl是一个功能全面、源代码全部开放的生物信息学软件包,受到国际上生物信息领域软件开发的普遍欢迎[5],它基本上是以模块或函数库的方式给出,在此基础上进行二次软件开发将较大幅度地提高软件开发的效率,可提高软件的可用性和可扩展性。

Bioperl软件包含了基本程序集合,提供多种操作基类和数据基本接口,提供大量的生物信息学常用算法的源代码、二次数据库结构及数据操作接口,可以很方便地调用各种第三方程序。

3 生物二次数据库的设计与实现

3.1生物二次数据库的功能

生物二次数据库适用于需要对生物信息数据库进行检索、比对、分析的单位或个人。它的主要功能是将网上各种常用的生物信息学数据库中的不同结构、不同语义的数据整合在一起,保存在本地关系型数据库中,使用户可以在统一的界面上方便地查询和分析生物信息数据。

对数据库的使用者,生物二次数据库提供下载数据,转换数据格式,加载到本地数据库和数据维护等功能。对生物信息数据的使用者,生物二次数据库提供对各种序列数据进行查询、检索、序列对比和同源性分析,以及统计分析等功能。

3.2生物二次数据库的基本结构

由于生物二次数据库所需的许多基因和蛋白数据散落在文献和各大数据库中,数据格式各不相同。为了兼容多种格式的生物序列数据,数据库中的表设计需要一定的冗余,为了与国际接轨,生物二次数据库将在Biosql软件中给出的数据模型基本结构的基础上做适应性调整,其关键部分的E-R图参见图1[6]。

图1中表biodatabase存放的是数据库的名称,用来存放的不同种类的数据。表bioentry是二次数据库序列目录,存放序列的id号、版本号等,它们与表bioentry_keywords、表bioentry_reference构成二次数据库的核心。表biosequence存放具体的序列数据,表comment与表reference分别存放序列的注释和序列信息的引用文献资料。

3.3生物二次数据库的接口

生物二次数据库中的数据主要来源于Internet上异构的数据库,且不是源数据库的直接拷贝,而是其中一部分所需要数据的采集和重新组织。因此在设计数据库时,一方面利用Bioperl对公共数据库的专用接口编程实现国际上公共数据库中数据的自动获取,另一方面通过Perl脚本编程实现本地实验数据的导入。

数据库处理的数据来自这三方面:GenBank、SwissProt等位于Internet上公开的大型公共数据库;Internet上其它没有专用接口的公共数据库或本地ftp下载或构建的其它数据库;本地实验数据:FASTA、EMBL等格式的平面数据文件。针对不同的数据源,数据库提供的不同的接口模块对数据文件或数据库进行操作。对于GenBank等公共数据库,使用Bioperl对公共数据库的专用接口对数据进行处理;对于Internet上其它没有专用接口的公共数据库,使用Perl DBI接口;对于平面数据文件,使用SeqIO序列文件操作接口。这些处理可以保证使用者使用生物二次数据库能通过多种渠道获得尽可能多的相关数据源。

3.4生物二次数据库的运行环境

由于生物信息数据量大、类型复杂、关联性强等特点,而传统的串行算法和单一结点的计算机很难适应庞大的生物信息处理的需要,主要体现在处理海量数据时,系统无法提供足够大的内存和速度以满足应用的需求。所以集群系统适合作为构建生物二次数据库的平台。

集群系统一般使用单台或联网的多台计算机或服务器,将其中一台与外网连接的计算机设定为主节点,集群的控制管理工作在主节点上完成,主节点也参与运算,同时又是计算节点。 其余计算机为从节点, 即计算节点。 以后可以使用同样的方式增加节点数目,对集群的规模进行扩展。整个集群中的各个节点都使用双绞线通过网卡和交换机以星型方式连成局域网络,见图2。

本研究的集群系统使用了实验室的4台浪潮英信服务器、一台快速以太网交换机和若干5类双绞线。每台服务器的配置:两个四核的Intel(R) Xeon(R) CPU E5504@2.00GHz处理器、2GB 内存、320GB 硬盘×4,32位总线、两块高性能千兆网卡。使用的天工iSpirit2924G型号的交换机的配置:10/100/1000Mbps传输速率、13.6Gbps背板带宽、6.6Mbps包转发率、24个百兆和两个千兆RJ45端口。该系统共有处理机8个,节点4个,其中一台服务器作为主节点,它的一块网卡通过与外网联接远程获取一级数据库中的数据,另一块与集群系统中的快速以太网交换机相连,实现节点与计算节点间的通信。其余三台服务器作为计算节点,通过网卡联接在交换机上。生物二次数据库的构建在控制节点上进行。

3.5生物二次数据库的构建

抗逆生物二次数据库采用面向对象的方法设计数据模型。为在数据内容更新、支持高效事务处理的前提下减少数据冗余,优化数据模型和存储结构,采用MySQL和XML技术并行构建两套数据库系统,以便在本地集群的并行计算平台上,实现生物信息分析软件的并行化,以达到高效分析与处理大量复杂生物数据的目的。

3.5.1 MySQL的安装和设置

MySQL是开放源码的结构化查询语言关系型数据库,它不但体积小、速度快、总体拥有成本低,而且支持多种操作系统、为多种编程语言提供了API、支持多线程、支持多种存储引擎。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。符合基因组工程“开放”和“免费共享”的精神,同时也由于其快速、强大的字符串操作能力和对超大数据量的支持,很适合生物信息处理领域。

操作系统自带的MySQL数据库版本可能较低,BioSQL不建议使用太低的MySQL版本,所以在设计数据库时建议卸载系统中的原有MySQL数据库,安装最新版的MySQL 数据库。

BioSQL是非常大的数据库,有些非常大的序列记录超过MySQL的一些默认设置,这就需要在第一次启动MySQL之前,给MySQL的全局配置文件中的“max_allowed_packet”设置一个不小于10M的值。

3.5.2 BioSQL接口模块的安装

在构建BioSQL前,需要使用perl脚本操作数据库,需要的两个接口文件:DBI—perl通用数据库接口和DBD::MySQL—Perl MySQL数据库驱动程序模块。由于模块间的依赖关系,这两个接口的安装是有先后顺序的,先安装DBI在安装DBD。

安装DBI前先确定操作系统是否安装gcc编译器,否则在执行编译命令时,会出现警告信息。安装DBD::MySQL模块时需要注意的是先设置MySQL的环境变量再进行模块安装。

3.5.3 BioPerl,BioPerldb等模块的准备和安装

通过CPAN安装BioPerl,BioPerldb等模块。在使用CPAN前需要对其进行相应的配置,配置前需要确保联网,并取得root权限。

在安装各种模块之前,先更新CPAN Module,而不是直接装模块,否则会遇到“undefined subroutine &Digest::base::new”之类的错误。进入CPAN的shell运行cpan> install Module::Build,这一步是关键。因为这样可以得到最近更新的CPAN.pm文本并且让所有的模块都依附于它,所有的命令模块包将进入一个自动安装过程。

装好新的CPAN Module,先退出,然后安装Module::Build模块。因为Module::Build打包出来的模块安装时必须要先安装Module::Build。安装BioPerl,BioPerldb等模块时,在install命令前使用force,因为在安装的过程中,会出现一些test出现错误,如果这些错误不会影响程序的使用可以强制安装而忽略安装过程中的测试错误。如果安装BioPerl-DB时DBI和DBD模块不能被发现,那么安装会失败。

3.5.4 BioSQL数据库基本结构的定义

定义BioSQL数据库的基本结构,使用source命令读取sql/biosqldb-mysql.sql中的定义表结构的SQL语句,若MySQL服务器版本是5.5会出现“ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that...”等信息,这是因为MySQL5.5版本的默认存储引擎更改为InnoDB,说明数据类型错误,把biosqldb-mysql.sql文件中的所有“TYPE”替换成“engine”。当看到biosql数据库中已生成28张表时,说明BioSQL数据库的基本结构已经定义好了。

4 导入分类数据

4.1导入NCBI taxonomy物种分类体系

在将各种序列数据导入数据库之前,先将NCBI的物种分类数据库导入,可对后续的数据处理工作提供便利。利用biosql-1.0.1中自带的perl脚本load_ncbi_taxonomy.pl,设置perl命令的–download参数从网上下载并导入数据库,这个过程大约需要7个小时。如果把taxonomy文件从该网站下载到本地,再进行导入,运行时间会大大缩短,此时还要注意,/tmp目录的空间是否充足,否则会现运行错误。

4.2导入gene ontology文件数据

由于GenBank及Fasta这两种最常用的格式sequence记录中都没有包含ontology这一部分信息,将这样的数据导入重新构建的生物二次数据库,由于序列数据的来源不同,可能会存在数据冗余或者其他相关问题,所以必须从其他途径将ontology一部分内容导入BioSQL数据库,使得新构建的数据库更加规范化。利用BioPerl-DB安装包中自带的perl脚本load_ontology.pl,把在ontology的FTP站点上下载的gene_ontology.1_2.obo文件导入库,此时要注意-safe –noobsolete参数不可缺少,否则加载本体生物过程时会出错。

导入完成后,会发现biosql库中原本空着的ontology表中已有数据。查询结果如下:

5 导入生物数据

根据实验需求,建立一个能够处理特色生物信息的二次数据库。从ftp://ftp.ebi.ae.uk/pub/datbaases/embl/下载EMBL发布的特定物种的生物信息数据包,下载到本地解压缩后,利用BioPerl-DB安装包中自带的perl脚本load_seqdatabase.pl完成GenBank格式数据的导入。导入基本数据后,剩下的工作就是随时将发布在一次数据库中相关的新数据导入二次数据库中。

6 结束语

通过上述生物二次数据库的构建,生物信息使用者不仅可以搜集并下载网络中的特定物种的信息数据,而且还可以对搜集到的数据进行格式转换。在已构建二次数据库的基础上可以根据生物信息序列对比和统计分析等需要,进行数据筛选和数据处理。

参考文献:

[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] 陆枫.真核生物基因组结构自动注释系统研究[D].华中科技大学,2006.

[6] PostgreSQL网站[EB/OL].[http://www.postgresqlL.org/,2003-4-6/2012-3-16.