如何在R中将Ensembl ID转换为基因符号?

rdlzhqv9  于 2023-01-15  发布在  其他
关注(0)|答案(3)|浏览(371)

我有一个data.frame,其中一列包含Ensembl ID;我想找到该列值的相应基因符号,并将它们添加到我的数据框中的新列。我使用bioMaRt,但它无法找到任何Ensembl ID!
下面是我的示例数据(df[1:2,]):

row.names organism    gene
41  Homo-Sapiens ENSP00000335357
115 Homo-Sapiens ENSP00000227378

我想得到这样的东西

row.names organism    gene         id
41  Homo-Sapiens ENSP00000335357   CDKN3
115 Homo-Sapiens ENSP00000227378   HSPA8

这是我的代码:

library('biomaRt')
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- df$genes
df$id <- NA
G_list <- getBM(filters= "ensembl_gene_id", attributes= c("ensembl_gene_id",
"entrezgene", "description"),values=genes,mart= mart)

然后在检查G_list时得到这个

[1] ensembl_gene_id entrezgene      description  <0 rows> (or 0-length row.names)

所以我无法将G_list添加到我的df!中,因为没有什么可添加的!
提前致谢,

k4ymrczo

k4ymrczo1#

这是因为gene列中的值不是基因ID,而是肽ID(以ENSP开头)。要获得所需信息,请尝试将ensembl_gene_id替换为ensembl_peptide_id

G_list <- getBM(filters = "ensembl_peptide_id", 
                attributes = c("ensembl_peptide_id", "entrezgene", "description"),
                values = genes, mart = mart)

此外,您真正需要的是hgnc_symbol
下面是获得输出的全部代码:

library('biomaRt')
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- df$genes
df<-df[,-4]
G_list <- getBM(filters= "ensembl_peptide_id", attributes= c("ensembl_peptide_id","hgnc_symbol"),values=genes,mart= mart)
merge(df,G_list,by.x="gene",by.y="ensembl_peptide_id")
x9ybnkn6

x9ybnkn62#

我尝试了几个R包(mugene、org.Hs.eg.db、biomRt、EnsDb.Hsapiens.v79)将Ensembl.gene转换为gene.symbol,发现EnsDb.Hsapiens.v79包/ gene数据库提供了最好的转换质量(就能够将大部分Ensembl.gene转换为gene.symbol而言)。
如果尚未安装,请通过运行以下命令安装程序包:生物管理器::安装(“EnsDb.Hsapiens.v79”)

library(EnsDb.Hsapiens.v79)

# 1. Convert from ensembl.gene to gene.symbol
ensembl.genes <- c("ENSG00000150676", "ENSG00000099308", "ENSG00000142676", "ENSG00000180776", "ENSG00000108848", "ENSG00000277370", "ENSG00000103811", "ENSG00000101473")

geneIDs1 <- ensembldb::select(EnsDb.Hsapiens.v79, keys= ensembl.genes, keytype = "GENEID", columns = c("SYMBOL","GENEID"))

# 2. Convert from gene.symbol to ensembl.gene
geneSymbols <-  c('DDX26B','CCDC83',  'MAST3', 'RPL11', 'ZDHHC20',  'LUC7L3',  'SNORD49A',  'CTSH', 'ACOT8')

geneIDs2 <- ensembldb::select(EnsDb.Hsapiens.v79, keys= geneSymbols, keytype = "SYMBOL", columns = c("SYMBOL","GENEID"))

其他可用于转换的R包/基因数据库可以参考this GitHub page
我在bioinformatics. stackexchange上对类似问题的回答。

sg2wtvxw

sg2wtvxw3#

我可以推荐Rgprofiler2,如下所示:

library(gprofiler2)

定义集成ID:

ensembl.genes <- c("ENSG00000150676", "ENSG00000099308", "ENSG00000142676", "ENSG00000180776", "ENSG00000108848", "ENSG00000277370", "ENSG00000103811", "ENSG00000101473")

转换为基因符号:

gene.symbols <- gconvert(ensembl.genes,organism="hsapiens",target="ENTREZGENE",filter_na = F)$target

相关问题