原文链接:Ensemble ID及转换 - 何物昂 - 博客园 (cnblogs.com)

以“GSE179947”为例

高通量测序的ID转换比基因芯片方便很多,在此十分感谢Y叔的R包“clusterProfiler”

介绍一下Ensemble ID

Ensemble ID 是Ensembl 数据库使用的ID标识符,用于标识不同的分子特征,如基因,转录本,外显子,蛋白。大多数据库都有一套自己的ID命名。ID 主要是为消除歧义,在特征注释或数据库更新时也能保持一致。不像人为命名的分子名字,如基因名字那样可能发生改变。就类似于我们的身份证号, 名字方便于平常的交流使用,ID是独一无二的。

ID 格式

ENS[物种符号][独一无二的11位数字]

  • Ensemble ID 基本上是以ENS开头,后接表示物种的符号, ENSMUS: 表示Mus musculus (Mouse)
  • Homo sapiens 直接以ENS表示
  • 少部分的,以其他开头

分子特征

特征符号 特征
G gene
T transcript
E exon
P protein
R regulatory feature
FM Ensembl protein family
GT gene tree

根据以上规则,当看到一个Ensemble ID时,我们就可以判断出它来自什么物种,属于什么特征。
比如:

ENSMUSG00000000031: 小鼠基因
ENSMUST00000000031: 小鼠转录本
ENSMUSP00000000031: 小鼠蛋白
ENSG00000000031: 人基因

详细的物种符号表示,可以见:

http://asia.ensembl.org/info/genome/stable_ids/prefixes.html

版本号

通常,我们还会遇到类似这种ENSMUSG00000000031.2 ,id末尾有小数的情况。这是特征的版本号。当ID所表示的特征有变化时,版本号就会增加。版本号增加规则,详见:

http://asia.ensembl.org/info/genome/stable_ids/index.html

ID 转换

  1. # R包安装
  2. if (!requireNamespace("BiocManager", quietly = TRUE))
  3. install.packages("BiocManager")
  4. BiocManager::install("clusterProfiler")
  5. BiocManager::install("org.Mm.eg.db")
  6. # 需要用到的R包
  7. library(stringr)
  8. library(clusterProfiler)
  9. library(org.Mm.eg.db) # 如果是人就 library(org.Hs.eg.db)
  10. GSE = "GSE179947"
  11. exp = read.csv('import/GSE179947/GSE179947_mIMCD3_Normalized_Counts.csv') # 输入csv路径
  12. exp[,2:13] = as.data.frame(log2(edgeR::cpm(exp[,2:13])+1)) # 个人习惯,先log一下,因为之后会删很多基因
  13. exp$X = str_split(exp$X,pattern = '\\.',simplify = T)[,1] # .之后为版本号,匹配的时候不可以有,也可以用exp$X <- gsub("\\..*", "", exp$X))
  14. exp = exp[!duplicated(exp$X),] # 去重,行名不可以有重复
  15. gene.symbol <- bitr(geneID = exp$X,
  16. fromType = "ENSEMBL",
  17. toType = c("ENTREZID", "SYMBOL", "GENENAME"),
  18. OrgDb = org.Mm.eg.db) # 人的话就OrgDb = org.Hs.eg.db
  19. exp = exp[match(gene.symbol$ENSEMBL, exp$X),]
  20. exp$X = gene.symbol$SYMBOL
  21. exp = exp[!duplicated(exp$X),]
  22. rownames(exp) = exp$X
  23. exp = exp[,-1] # 列变行名也可以exp = tibble::column_to_rownames(exp, "gene_id")
  24. save(GSE, exp, gene.symbol, file = paste0(GSE,"_exp.Rdata"))