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