从 ensembl_gene_id 获得 hgnc_symbol/gene_name

Get hgnc_symbol/gene_name from ensembl_gene_id

我有这个代码(来自):

library('biomaRt')
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- rownames(res)
G_list <- getBM(filters= "ensembl_gene_id", attributes=c("ensembl_gene_id","entrezgene", "description","hgnc_symbol"),values=genes,mart= mart)

但是当我检查G_list时:它是空的。

我明白为什么:

这里是我的 ensembl_gene_id 在 genes 中的一些例子:

"ENSG00000260727.1", "ENSG00000277521.1", "ENSG00000116514.16"

如果我将此 ID 提供给 getBM(),它 returns 什么都没有。

但是如果我删除点和点之后的数字是这样的:

"ENSG00000260727", "ENSG00000277521", "ENSG00000116514"

我得到了预期的结果。

有没有办法给gene_ID加分并得到预期的结果?

不是答案,但对于评论来说有点太长了;如果认为不合适,很乐意删除。

简而言之,是的,您需要删除 Ensembl 基因名称的 "dot digit" 部分。这些数字表示与稳定的 Ensembl 标识符关联的不同版本号。

来自the Ensembl documentation on stable IDs

When reassigning stable identifiers between reannotation we can optionally choose to increment the version number assigned with a stable identifier. We do so to indicate an underlying change in the entity.

对于基因(即 ENSG* 形式的 Ensembl 标识符),当与基因相关联的转录本集发生变化时,版本号会增加。

这个 post 实际上是 Biostars 上 post 的副本:Question: Mapping Ensembl Gene IDs with dot suffix;您应该看看那里讨论的一些 R 解决方案。


后记

通常 better/faster 使用一些现有的 annotation packages from Bioconductor 而不是使用 Biomart。例如,看看