原文链接: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.dbexp = exp[match(gene.symbol$ENSEMBL, exp$X),]exp$X = gene.symbol$SYMBOLexp = exp[!duplicated(exp$X),]rownames(exp) = exp$Xexp = exp[,-1] # 列变行名也可以exp = tibble::column_to_rownames(exp, "gene_id")save(GSE, exp, gene.symbol, file = paste0(GSE,"_exp.Rdata"))
