应用BiomaRt获取实验数据与注释信息

应用BiomaRt获取实验数据与注释信息

获取数据是生物信息分析的第一步,经常使用的一个示例数据是Bioconductor 中的慢性淋巴细胞白血病(Chronic Lymphocytic Leukemia, CLL)实验数据包,其安装办法是在启动R主程序并运行:

#安装CLL数据包。

BiocManager::install("CLL")

#载入CLL数据包。

library(CLL)

#载入数据(库文件中附带的示例数据)。

data(CLLbatch)

#查看数据内容与结构。

phenoData(CLLbatch)
应用BiomaRt获取实验数据与注释信息

从上图,我们可以看到CLL数据集一共有24个样本,在实际应用中, 需要读取所有样本对应的CEL文件。

把一些实验数据制作成包,便于用户下载和使用,也便于开发者开发和测试算法。但是对于比较大的数据或者经常动态更新的数据或注释,包就显得力不从心。

一个简单的解决办法:

Bioconductor只需要提供一个包就能实现Bioconductor与所有在线生物数据库的接口,用户就可以根据需要通过操作这个包获取数据和注释信息。

这样大大简化了数据和注释信息的获取,但是不同的数据库对外提供数据的标准和方式都不同,如何统一生物信息数据库的数据访问就成为了一个关键问题。

因此,有必要介绍一下由欧洲生物信息研究所(EBI)和冷泉港实验室(ESHL)共同开发的BioMart数据管理系统。BioMart系统可以管理任意格式的数据库,也可以按照不同的需求安装不同的查询工具和界面,由于其内部采用关系型的数据组织模式,所以更易于进行复杂的数据挖掘研究,读者可以通过官方网站(htp://www.biomart.org) 进一步了解BioMart。

当前各主要生物信息数据库(如EBI维护的Ensembl数据库)都提供了基于BioMart管理系统的批量数据访问服务,这些数据库也可以统称为BioMart数据库。

下载数据有两种方式:

  • ①登陆官方网站htp//ww.ensembl.org/下载
  • ②R语言程序下载

我们今天学习的是R语言程序下载数据。

biomaRt包不仅可以轻松获取数据库中的数据和注释,还能够获取相关数据或注释在不同数据库间的关联信息,为生物数据和注释的获取提供了极大的便利,这是一般的 R扩展包无法实现的。

#安装biomaRt包。

BiocManager::install("biomaRt")

#载入biomaRt包。

library(biomaRt)

#获取当前可用的数据源,一个数据源叫做一个mart。

marts 

#只查看前几个。

head(marts)
应用BiomaRt获取实验数据与注释信息

#使用ensembl数据源,如果知道用这个,前面没必要查看所有数据源。

ensembl_mart 

#获取ensembl_mart 中可用数据集。

datasets 

#查看前10个。

datasets[1:10, ]
应用BiomaRt获取实验数据与注释信息

#使用猪基因组数据集。

dataset_pig 

#获取dataset_pig数据集上可用的筛选器。

filters 

#只查看前几个,后面没用到任何筛选器。

head(filters)
应用BiomaRt获取实验数据与注释信息

attributes 

#只查看前几个

head(attributes)
 
应用BiomaRt获取实验数据与注释信息

#从dataset_pig数据集中提取ensembl_transcript_id和description信息。

idlist 

#从dataset_pig数据集中根据ensembl_transcript_id提取序列。

seqs=getSequence(id=idlist["ensembl_transcript_id"],
type="ensembl_transcript_id",
seqType="3utr", mart = dataset_pig)

#去除没有序列内容的数据记录。

seqs = seqs[!seqs[,1]== "Sequence unavailable", ]

#去除没有UTR注释的数据记录。

seqs = seqs[!seqs[,1]=="No UTR is annotated for this transcript", ]

#提取序列的内容。

x=seqs[ ,1]

#提取序列的ID。

names(x)=seqs[ ,2]

#结果存入文件"UTR3seqs-1.fa",格式为fasta。

writeXStringSet(DNAStringSet(x, use.names=TRUE),"UTR3seqs-1.fa")

#同时提取对应3'UTR序列的cDNA序列。

cDNAseqs = getSequence(id=idlist"ensembl_transcript_id"],type="ensembl_transcript_id",seqType="cdna", mart = dataset_pig)
x=cDNAseqs[ ,1]
names(x)=cDNAseqs[ ,2]

#结果存入文件"UTR3seqs-1.fa",格式为fasta。

writeXStringSet(DNAStringSet(x, use.names=TRUE), "transcriptom.fasta")

读者运行并对比两次下载的结果会发现,编程下载的数据没有添加注释信息,其实该信息已经包含在变量"idlist" 中,只需稍稍改动一点程序,即可以得到含有注释信息的数据。

使用biomaRt 包应特别注意两点:

  • 其一是该包很多函数运行速度严重依赖网络速度,有些在线数据库对每次下载的数据量的大小作出了限制,在批处理数据的过程中,还可能发生不可意料的错误
  • 其二是biomaRt包中可用的数据库和数据集合的版本与该数据库官方网站的版本不保证同步更新,如biomaRt包中Ensembl 数据库版本已经更新到"ENSEMBL GENES 73",而官方网站的BioMart数据库则可能还是"ENSEMBL GENES 70",因此使用数据时,一定要记录好数据库版本,否则将来无法重复计算结果。


分享到:


相關文章: