【问题标题】:convert Ensembl ID to gene name using biomaRt使用 biomaRt 将 Ensembl ID 转换为基因名称
【发布时间】:2019-11-15 10:08:25
【问题描述】:

我有一个名为 kidney_ensembl 的数据集,我需要将 Ensembl ID 转换为基因名称。

我正在尝试下面的代码,但它不起作用。有人可以帮助我吗?

我知道有类似的问题,但它们对我没有帮助。非常感谢!

converting from Ensembl gene ID's to different identifier

How can I convert Ensembl ID to gene symbol in R?

library(tidyverse)
kidney <- data.frame(gene_id = c("ENSG00000000003.10","ENSG00000000005.5",
"ENSG00000000419.8","ENSG00000000457.9","ENSG00000000460.12")
)
#kidney <- read_delim("Desktop/kidney_ensembl.txt", delim = "\t")

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

library("biomaRt")

mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <-  kidney$gene_id
gene_IDs <- getBM(filters= "ensembl_gene_id", attributes= c("ensembl_gene_id","hgnc_symbol"),
              values = genes, mart= mart)

kidney_final <- left_join(kidney, gene_IDs, by = NULL)

【问题讨论】:

  • 嗨,你介意举几个你的肾脏$gene_id 的例子吗,做 head(kidney$gene_id) 并将例子粘贴到你的帖子中。更容易找出问题所在

标签: r biomart


【解决方案1】:

biomart 部分起作用了,因为没有公共列,所以您的左连接失败了,gene_IDs 在“ensembl_gene_id”下有集成 id,而您的肾脏数据框在“gene_id”下有它。

您还需要检查它们是 gencode 还是 ensembl。 Gencode ids 通常有一个 .[number] 例如,ENSG00000000003.10,在 ensembl 数据库中它是 ENSG00000000003。

library("biomaRt")
library("dplyr")

kidney <- data.frame(gene_id = 
c("ENSG00000000003.10","ENSG00000000005.5",
"ENSG00000000419.8","ENSG00000000457.9","ENSG00000000460.12"),
vals=runif(5)
)
#make this a character, otherwise it will throw errors with left_join
kidney$gene_id <- as.character(kidney$gene_id)
# in case it's gencode, this mostly works
#if ensembl, will leave it alone
kidney$gene_id <- sub("[.][0-9]*","",kidney$gene_id)

mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <-  kidney$gene_id
gene_IDs <- getBM(filters= "ensembl_gene_id", attributes= c("ensembl_gene_id","hgnc_symbol"),
              values = genes, mart= mart)

left_join(kidney, gene_IDs, by = c("gene_id"="ensembl_gene_id"))

          gene_id      vals hgnc_symbol
1 ENSG00000000003 0.2298255      TSPAN6
2 ENSG00000000005 0.4662570        TNMD
3 ENSG00000000419 0.7279107        DPM1
4 ENSG00000000457 0.3240166       SCYL3
5 ENSG00000000460 0.3038986    C1orf112

【讨论】:

  • 当我运行代码生成gene_IDs分配时,就在left_join之前,R连接到BioMart,但我得到0个观察值和2个变量。
  • 你能输入(肾)并粘贴输出吗?我不知道你有什么 ensembl id
  • head(kidney) # A tibble: 6 x 36 gene_id TPM TPM.1 TPM.2 TPM.3 TPM.4 TPM.5 TPM.6 TPM.7 TPM.8 TPM.9 TPM。 10 TPM.11 1 ENSG00…4.04 0.3 0 0 0 25.8 34.9 10.6 0 0 3.81 9.58 2 ENSG00… 0 0 0 0 0 0 0 0 0 0 0 0 3 ENSG00… 85.0 162. 44.3 48.4 7.45 181. 163. 125. 69.4 0 149. 101.
  • kidney$gene_id [1] "ENSG00000000003.10" "ENSG00000000005.5" "ENSG00000000419.8" "ENSG00000000457.9" [5] "ENSG00000000460.12" "00001000009"00009"00000000009" 11“”ENSG00000001036.9“”ENSG00000001167.6“”ENSG00000001460.13“”ENSG00000001461.12“”“ENSG00000001497.12”“ensg00000001613.7”“ensg00000001626” .10"
  • 是的,你有 gencode 注释。例如在 ENSG00000000003.10 中有 .10
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多