用biomaRt进行基因ID转换

今天,终于学会了之前看上去很神奇的ID转换。之前分析RNA-seq数据结果之后,拿到的结果很让我烦躁,因为,如图。
用biomaRt进行基因ID转换_第1张图片

我怎么知道那个ID是个什么基因?于是乎,我就搜索。
用到了biomart,这个ensmbl网站上的一个工具。大致流程可以参考下面两个链接:
基因转换小工具很实用
批量转换基因名教程

比对着教程,做了一点操作,但是感觉很繁琐,而且,最后的结果和原来CSV文件里的顺序是不一样的,截图如下:
用biomaRt进行基因ID转换_第2张图片这样受到了限制,因为一次性最多500个基因名,那么我要是有1500个,我要分三次检索,整个过程还算可以忍受,但是,我要比对上原来的gene_id,就要一个个去找,这样太麻烦了,我中间真的想要放弃,好在我想,代码是不是可以解决这个问题?
没错,的确可以,就是R语言包的biomart.

source("http://bioconductor.org/biocLite.R")
biocLite('biomaRt')
library(biomaRt)

先加载出来。

随后,读数据。

data<-read.csv("C:/Users/Desktop/GSE96518_DESeq2_results.csv",header=T,sep=",")

加载数据库,这儿用到了小鼠的。

mart <- useMart("ensembl","mmusculus_gene_ensembl")
##人类选择hsapiens_gene_ensembl

读数据:

gene<-read.csv("C:/Users/dell/Desktop/GSE96518_DESeq2_results.csv",header=T,sep=",")[,1] #第一列为ID,所以取第一列

转化成基因的名称:

gene_name<-getBM(attributes=c("ensembl_gene_id","external_gene_name"),filters = "ensembl_gene_id",values = gene, mart = mart)
#如果是转录本,要改一下,成 ensembl_transcript_id

究竟biomaRt支持哪些ID类型的输入,可以通过以下命令查看:

listFilters(mart)
listAttributes(mart)

filters指定输入ID的类型,attributes为输出ID的类型。

这个时候就可以看到有多少的ID找到了对应的name。我这个测试里面大约有500个没有找到,找到的27355占大多数,足够了。
在这里插入图片描述在这里插入图片描述
这个时候,我们就成功拿到了转化之后的基因我们就知道那一大串符号代表了那个基因了。接下来我们可以做一个整合:

gene_data<-merge(data,gene_name,by="ensembl_gene_id")#ensembl_transcript_id这一列的列名均为ensembl_transcript_id
write.csv( gene_data,"gene_data_name.csv",row.names=FALSE)#保存

这儿需要注意一下,by 后面的一定要是机器认识且在我们的文件里存在的,所以我把原文件的ID 改成了ensembl_gene_id。

然后就可以了。这儿机器就直接保存了文件,文件在哪儿?一个命令解决。还是会代码爽啊。

getwd()

其实也可以设定好路径,这样就保存到具体的文件里了。

setwd()

上述用代码换时间的过程参考了下面两篇文章:
Transcript ID(ENST/ENSMUST/NM_123456)转换为gene ID(ENSG/ENSMUSG/Gene ID)和Gene name/Symbol
从biomaRt到clusterProfiler(里面还讲了KEGG/GO分析代码)

你可能感兴趣的:(生信分析,经验分享)