前几天拿到了一个数据,需要做基因注释,是从转录本ID(ENST xxxxxxxxxx)转为基因ID。
> head(PTC_true_072822$isoform_id,10)
[1] "ENST00000167218.9" "ENST00000167825.5" "ENST00000207636.9" "ENST00000210227.4" "ENST00000215376.7"
[6] "ENST00000215587.11" "ENST00000216019.11" "ENST00000216658.9" "ENST00000221818.5" "ENST00000223084.7"
1. 常用基因ID编号都有哪些?
Symbol ID
为我们常在文献中看到的基因名称。如TP53基因的Symbol ID为TP53。
Entrez ID
由美国NCBI旗下的Entrez gene数据库所使用的编号,通常为纯数字,如TP53基因的Entrez ID为:7157。
Ensemble ID
由欧洲生物信息数据库提供,一般以ENSG开头,后边跟11位数字。如TP53基因:ENSG00000141510。这个数据库对于基因的注释十分的详细且权威,所以也就形成了很多个基因不同情况下的ID了。关于Ensembl ID,不管是什么类型的,其ID号的前三个开头都是以ENS开头的。剩下的可以再看第四位。
- G代表是Gene。是这个基因的的唯一编码,类似于Gene数据库里面的数字。
- T代表Transcript,即ENST开头的为转录本ID(Transcript ID)。是数据库对于不同转录本的ID号。这个类似于上面gene数据库当中的NM编号开头的ID。同一个基因由于选择性剪切,可以存在多个转录本,所以一个基因ID可能对应几个不同的Transcript ID。
- P代表protein。是数据库对于不同蛋白的ID号。这个类似于上面gene数据库的NP编号开头的ID。
Refseq ID
NCBI提供的参考序列数据库:可以是NG、NM、NP开头,代表基因,转录本和蛋白质。如TP53基因的某个转录本信息可为NM_000546。
2. 基因注释方法合集
2.1 Y叔叔的clusterProfiler包中bitr()函数注释
这个方法之前小编在做基因芯片分析、GO、KEGG、GSEA时最为常用(似乎由Symbol ID转为其他类型ID时比较常用)。所以,想着想着这不信手拈来、分分钟钟搞定的事情,没想到猝不及防的翻车。
PTC_true_072822 <- read_excel("PTC true 072822.xlsx")
PTC_true_072822$ENST_id <- map_chr(str_split(PTC_true_072822$isoform_id, "[.]"), 1)
library(clusterProfiler)
library(org.Hs.eg.db)
keytypes(org.Hs.eg.db) #查看注释包中的可以进行ID转换的项目
gene_annote <- bitr(PTC_true_072822$ENST_id, #一个含有gene_name的矢量
fromType = "ENSEMBLTRANS", #fromType是指你的数据ID的类型
toType = c("ENTREZID", "SYMBOL","ENSEMBL"), #需要转换成的gene_name的类型,可以是多种类型,用大写character类型向量表示 #toType是指你要转换成哪种ID类型,可以写多种,也可以只写一种
OrgDb = org.Hs.eg.db) #Orgdb是指对应的注释包是哪个,人类的注释包是 org.Hs.eg.db
clusterProfiler包注释结果发现:用92.26% 的转录本ID都没有找到对应的SYMBOL,小编推测:这可能是org.Hs.eg.db更新不及时导致的。所以小编尝试其他方法进行注释。
2.2 biomaRt
library(biomaRt)
listMarts()
# 用useMart函数链接到人类的数据库
mart <- useMart("ensembl","hsapiens_gene_ensembl")
listFilters(mart)
attributes <- listAttributes(mart)
head(attributes,20)
View(attributes)
values <- PTC_true_072822$isoform_id
hg_symbols<- getBM(attributes=c("ensembl_transcript_id_version", "ensembl_gene_id", "hgnc_symbol"),
filters = "ensembl_transcript_id_version",
values = values,
mart= mart)
PTC_true_072822$ensembl_transcript_id_version <- PTC_true_072822$isoform_id
PTC_true_072822 <- left_join(PTC_true_072822,hg_symbols,by="ensembl_transcript_id_version")
2.3 用GTF文件进行注释
load("gtf_GRCh37.Rdata")
gtf <- gtf_GRCh37[,c(5,7,14)]
gtf$ENST_id <- map_chr(str_split(gtf$transcript_id, "[.]"), 1)
gtf <- gtf[!is.na(gtf$ENST_id),]
dim(gtf)
gtf <- gtf[!duplicated(gtf$ENST_id),]
dim(gtf)
PTC_true_072822 <- left_join(PTC_true_072822,gtf,by="ENST_id")
https://www.yuque.com/docs/share/6980be28-b38b-494e-9b78-c92e43ef7edc?# 《【必备技能】基因注释方法合集》