[生信]biomaRt 基因ID的转换

[生信]biomaRt 基因ID的转换生信 基因 ID 的转换 Bioconductor 系列之 biomaRt 包的安装选择数据库三个主要函数 getBM getSequence getLDS 几个实用的例子一 对几个基因 symbol 注释它对应的 EnsembleID 和 ENTREZID 二 对刚才的那三个探针 ID 号进行多个内容注释 每个探针都对应着基因名已经染色体及起始终止坐标 三 对给定的基因 ID 号进行 GO 注释四 通过染色体及起始终止坐标来挑选基

Bioconductor系列之biomaRt

BiomaRt是一个超级网络资源库,里面的信息非常之多,就是网页版的biomaRt的R语言接口。谷歌搜索 the biomart user’s guide filetype:pdf 这个关键词,就看到关于这个包的详细介绍以及例子,我这里简单总结一下它的用法。

包的安装

用BiocManager来安装,R的版本为3.5.1

install.packages("BiocManager")
BiocManager::install("biomaRt")

选择数据库

然后我们就可以加载这个包来看看它的一些性质啦,大家也可以根据这个包的说明书里面的代码一行行代码敲进去看看效果,这样学习最快也最容易记住。

library("biomaRt") listMarts() #看看有多少数据库资源 ensembl=useMart("ensembl") listDatasets(ensembl) #看看选择的数据库里面有多少数据表,这个跟物种相关 ensembl = useDataset("hsapiens_gene_ensembl",mart=ensembl) ensembl = useMart("ensembl",dataset="hsapiens_gene_ensembl") # 这是一步法选择人类的ensembl数据库代码。 

三个主要函数getBM,getSequence,getLDS

首先我们讲讲getBM函数,它就四个参数。
getBM函数唯一的用处,就是做各种ID转换。

  • filter来控制根据什么东西来过滤,可是不同数据库的ID,也可以是染色体定位系统坐标
  • Attributes来控制我们想获得什么,一般是不同数据库的ID
  • Values是我们用来检索的关键词向量
  • Mart是我们前面选择好的数据库,一般都是
    ensembl = useMart(“ensembl”,dataset=”hsapiens_gene_ensembl”) 

几个实用的例子

例.对几个基因symbol,注释它对应的EnsembleID和ENTREZID

getBM(attributes = c("hgnc_symbol", "ensembl_gene_id", "entrezgene"), filters = "hgnc_symbol", values = symbol_id, mart = ensemble) # 前面选好的的数据库 

一.对几个芯片探针的ID号,注释它所捕获的基因的ENTREZID

ensembl = useMart("ensembl",dataset="hsapiens_gene_ensembl") affyids=c("_at","_s_at","_at") getBM(attributes=c('affy_hg_u133_plus_2', 'entrezgene'), filters = 'affy_hg_u133_plus_2', values = affyids, mart = ensembl) 

结果如下:

affy_hg_u133_plus_2 entrezgene
1 _at 836
2 _at 838
3 _s_at 837






二.对刚才的那三个探针ID号进行多个内容注释,每个探针都对应着基因名已经染色体及起始终止坐标。

affyids=c("_at","_s_at","_at") getBM(attributes=c('affy_hg_u133_plus_2', 'hgnc_symbol','chromosome_name','start_position','end_position', 'band'), filters = 'affy_hg_u133_plus_2', values = affyids, mart = ensembl) 

结果如下:

affy_hg_u133_plus_2 hgnc_symbol chromosome_name start_position end_position band
1 _at CASP3 4 q35.1
2 _at CASP5 11 q22.3
3 _s_at CASP4 11 q22.3






三.对给定的基因ID号进行GO注释

library("biomaRt") ensembl = useMart("ensembl",dataset="hsapiens_gene_ensembl") entrez=c("673","837") goids = getBM(attributes=c('entrezgene','go_id'), filters='entrezgene', values=entrez, mart=ensembl) head(goids) 

四.通过染色体及起始终止坐标来挑选基因

getBM(c('affy_hg_u133_plus_2','ensembl_gene_id'), filters = c('chromosome_name','start','end'), values=list(16,,), mart=ensembl) 

五.对特定的GO ID号来查询该GO通路上面的基因是哪些。

getBM(c('entrezgene','hgnc_symbol'), filters='go_id', values='GO:0004707', mart=ensembl) 

六.根据REFSEQ数据库的NM系列ID号来获取信息

refseqids = c("NM_005359","NM_000546") ipro = getBM(attributes=c("refseq_mrna","interpro","interpro_description"), filters="refseq_mrna",values=refseqids, mart=ensembl) ipro 

七.根据基因的ENTREZ ID号来挑选该基因的指定上下游区域信息或者蛋白序列Markdown

entrez=c("673","7157","837") getSequence(id = entrez, type="entrezgene",seqType="coding_gene_flank",upstream=100, mart=ensembl) 

这样就得到了三条序列,是给定基因的上游100bp序列 coding_gene_flank entrezgene

1 CCTCCGCCTCCGCCTCCGCCTCCGCCTCCCCCAGCTCTCCGCCTCCCTTCCCCCTCCCCGCCCGACAGCGGCCGCTCGGGCCCCGGCTCTCGGTTATAAG 673
2 TCCTTCTCTGCAGGCCCAGGTGACCCAGGGTTGGAAGTGTCTCATGCTGGATCCCCACTTTTCCTCTTGCAGCAGCCAGACTGCCTTCCGGGTCACTGCC 7157


3 CACGTTTCCGCCCTTTGCAATAAGGAAATACATAGTTTACTTTCATTTTTGACTCTGAGGCTCTTTCCAACGCTGTAAAAAAGGACAGAGGCTGTTCCCT 837

其实这个getSequence函数还有非常多的用法,当然主要的变化在其readme上面可以看到,主要是seqType可以有多个选择。

utr5 = getSequence(chromosome=3, start=, end=, type="entrezgene",seqType="5utr", mart=ensembl) utr5 #这样就查询到了 chromosome=3, start=, end=,这个定位里面的所有utr5信息。 protein = getSequence(id=c(100, 5728),type="entrezgene", seqType="peptide", mart=ensembl) protein #这样就查到了这两个基因转录本的所有蛋白序列,100这个基因有5条序列,5728这个基因有四条序列。 

八,选择其它数据库来进行查询,比如SNP数据库

当然还有一些数据库的小技巧,第一个是参数 archive = TRUE,设置只用能获取的数据库

 ensembl = useMart(“ensembl_mart_46”, dataset=”hsapiens_gene_ensembl”, archive = TRUE) 

然后是设置特定选取hg19对应的信息。

 listMarts(host='may2009.archive.ensembl.org') ensembl54=useMart(host='may2009.archive.ensembl.org', biomart='ENSEMBL_MART_ENSEMBL') ensembl54=useMart(host='may2009.archive.ensembl.org', biomart='ENSEMBL_MART_ENSEMBL', dataset='hsapiens_gene_ensembl') 

写在最后

最后我简单提一下select函数是如何部分替代getBM函数的,因为biomaRt是在线数据库,本来只能用它自己的getBM系列函数,但是为了对接其它bioconductor系列包,也可以用select函数来操作这个在线数据库。

mart<-useMart(dataset="hsapiens_gene_ensembl",biomart='ensembl') head(keytypes(mart), n=3) head(columns(mart), n=3) k = keys(mart, keytype="chromosome_name") head(k, n=3) k = keys(mart, keytype="chromosome_name", pattern="LRG") head(k, n=3) affy=c("_at","_s_at","_at") select(mart, keys=affy, columns=c('affy_hg_u133_plus_2','entrezgene'), keytype='affy_hg_u133_plus_2') 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216926.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:44
下一篇 2026年3月18日 上午10:45


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号