首页 > 编程知识 正文

biomart包id转化方法,ncbi基因ID转换

时间:2023-05-05 13:55:52 阅读:278414 作者:1952

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

我怎么知道那个ID是个什么基因?于是乎,我就搜索。
用到了biomart,这个ensmbl网站上的一个工具。大致流程可以参考下面链接:
基因转换小工具很实用
批量转换基因名教程
biotools
比对着教程,做了一点操作,但是感觉很繁琐,而且,最后的结果和原来CSV文件里的顺序是不一样的,截图如下:
这样受到了限制,因为一次性最多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_idwrite.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分析代码)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。