输出人类全部基因的全名和别名

2023-02-28 11:26:50 浏览数 (2)

TP53基因大家都有所耳闻,而且也大概都知道它是 tumor protein p53的简称,其实它还有很多别名,比如BCC7;LFS1;P53;TRP53;

如果你通过数据分析拿到了一系列感兴趣的基因,但是只有类似于TP53这样的基因标准symbol名字,想批量拿到全部的基因的全名和别名,这里有一个代码分享给大家。

代码语言:javascript复制
rm(list=ls())
library(org.Hs.eg.db)
eg2symbol=toTable(org.Hs.egSYMBOL)
eg2name=toTable(org.Hs.egGENENAME)
eg2alias=toTable(org.Hs.egALIAS2EG)
eg2alis_list=lapply(split(eg2alias,eg2alias$gene_id),function(x){paste0(x[,2],collapse = ";")})
GeneList=mappedLkeys(org.Hs.egSYMBOL)

GeneList[1]
if( GeneList[1] %in% eg2symbol$symbol ){
  symbols=GeneList
  geneIds=eg2symbol[match(symbols,eg2symbol$symbol),'gene_id']
}else{
  geneIds=GeneList
  symbols=eg2symbol[match(geneIds,eg2symbol$gene_id),'symbol']
}
geneNames=eg2name[match(geneIds,eg2name$gene_id),'gene_name']
geneAlias=sapply(geneIds,function(x){ifelse(is.null(eg2alis_list[[x]]),"no_alias",eg2alis_list[[x]])})

借助于 org.Hs.eg.db 包,我们已经拿到了全部的人类全部基因的全名和别名,就是如下所示的4个变量:

  • geneIds
  • symbols
  • geneNames
  • geneAlias

接下来可以做一个简单的HTML报表输出,代码如下所示:

代码语言:javascript复制
createLink <- function(base,val) {
   sprintf('<a href="%s" class="btn btn-link" target="_blank" >%s</a>',base,val) ##target="_blank" 
}
gene_info=data.frame(   symbols=symbols,
                        geneIds=createLink(paste0("http://www.ncbi.nlm.nih.gov/gene/",geneIds),geneIds),
                        geneNames=geneNames,
                        geneAlias=geneAlias,
                        stringsAsFactors = F
)  
#library("xtable") 
#print(xtable(gene_info), type="html",include.rownames=F, file='all_gene.anno',sanitize.text.function = force)
file='all_gene_bioconductor.html'
y <- DT::datatable(gene_info,escape = F,rownames=F)
DT::saveWidget(y,file) 

可以看到输出的报表清晰简洁,而且还支持搜索:

清晰简洁

学徒作业

把我上面的代码扩充,给全部的基因同步加上对应的go和kegg信息,也是借助于R里面的包即可。

0 人点赞