本文将逐步增加各种方法,有时间再研究各个方法的区别。
每个人在转换id格式时,可能会遇到很多与以下流程不同的情况。比如说gene id有小版本、去重后数据大量丢失等等,建议具体问题再去查询解决方案,也可以把问题私信给我,我学习后整理在此文最后。
假设文件名文“genes_exp”,其中有一列为需要转换的“geneid”
1、使用gtf文件注释
可在以下两个链接下载gtf文件(分别是GENCODE和Ensembl):
https://www.gencodegenes.org/human/#
http://ftp.ensembl.org/pub/release-104/gtf/homo_sapiens/
library(rtracklayer)
gff<-readGFF(“”)#自己修改路径
#提取所需要的部分注释,假设是从“gene_id”转换到”gene_name”
anno<-gff[gff$type == “gene”, c(“gene_id”,”gene_name”)]
#根据“gene_id”匹配转换genes_exp与anno,自己修改by.y参数
result<-merge(anno,genes_exp, by.x= “gene_id”, by.y= “geneid”)
#去重与检查空值与NA
result<-result[!duplicated(result$gene_name),]
table(result$gene_name == “”)
table(is.na(result$gene_name))
2、使用bitr(clusterProfiler包)
有些人的数据有小数点,可以用str_sub处理一下
library(clusterProfiler)
library(org.Hs.eg.db)
# 查看有哪些gene id格式
keytypes(org.Hs.eg.db)
#适用bitr()函数进行转换,可同时转换成多种格式
result$gene_name<-bitr(genes_exp$geneid, fromType= “ENSEMBL”, toType= c(“SYMBOL”)
#接下来去重,检查空值与NA