我有一个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!中,因为没有什么可添加的!
提前致谢,
3条答案
按热度按时间k4ymrczo1#
这是因为
gene
列中的值不是基因ID,而是肽ID(以ENSP开头)。要获得所需信息,请尝试将ensembl_gene_id
替换为ensembl_peptide_id
:此外,您真正需要的是
hgnc_symbol
下面是获得输出的全部代码:
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”)
其他可用于转换的R包/基因数据库可以参考this GitHub page。
我在bioinformatics. stackexchange上对类似问题的回答。
sg2wtvxw3#
我可以推荐
R
包gprofiler2
,如下所示:定义集成ID:
转换为基因符号: