R中两个常用的基因ID转换包:BiomaRt和clusterProlifer
1. clusterProlifer
总体来说clusterProlifer用起来是比较方便的,通过现成的org.*.文件,能够满足常规的gene id转换,例如ensembl id,entrez id, gene symbol,但是需要注意的是:使用org.*.时需要考虑这个文件是基于哪个参考基因组版本构建的。例如羊的org.Ovis_aries.是用Ovis Aries 3.1参考基因组构建的,但我数据分析时用的是Ovis Aries 4作为参考基因组,那么就不能用org.Ovis_aries.。
library(clusterProfiler)
library(AnnotationHub)
ah=AnnotationHub()
query(ah,"org.Ovis_aries.")
=ah[['AH96240']]
symbol_map <- bitr(na$Symbol, OrgDb=, fromType='SYMBOL', toType='ENTREZID')
2. BiomaRt
BiomaRt用起来更加灵活,可以不同版本参考基因组ID转换,不同类型基因ID转换,甚至同基因跨物种同源基因转换,相应的,BiomaRt包信息量也就更大。下面是用BiomaRt进行基因ID转换的基因流程,附加详细的注释信息,自己操作一下基本上就能完全理解。
BiocManager::install("biomaRt")
library(biomaRt)
listMarts()
?useMart
### 1. Connects to the selected BioMart database and dataset
# 查看可用数据库
listMarts()
# 建立数据库链接,ensembl
mart<-useMart("ensembl")
### 2. lists the available BioMart databases
# 寻找目标数据库,对应的物种及参考基因组版本
dataset_list=(listDatasets(mart))
### 3. 选择绵羊数据库,重新建立数据库链接
# oarambouillet_gene_ensembl
mart_oas=useMart("ensembl", "oarambouillet_gene_ensembl")
### 4. 查看可用的输入数据类型
# 共333种
filter_list=(listFilters(mart_oas))
tail(filter_list)
### 5. 查看可用的输出数据类型
# 共3074种
attri_list=(listAttributes(mart_oas))
### 6. Retrieves information from the BioMart database
# ID 转换,不局限于ID转换,还可检索其他信息
list_gene=getBM(attributes = c("ensembl_gene_id","entrezgene_id","external_gene_name","description","chromosome_name"),
filters = "ensembl_gene_id",
values = geneid,
mart = mart_oas)
# 需要注意的是,ensembl id转换时存在三种情况
# 1. 一个ensembl_gene_id转换为多个entrezgene_id,
# 2. 一个ensembl_gene_id转换为多个gene symbol
# 3. 同时还有许多基因ID无法成功转换,标记为NA
a=list_gene[!duplicated(list_gene$ensembl_gene_id),]