【问题标题】:How can I convert Ensembl ID to gene symbol in R?如何将 Ensembl ID 转换为 R 中的基因符号?
【发布时间】:2015-04-17 02:05:45
【问题描述】:

我有一列包含 Ensembl ID 的 data.frame;我想为该列的值找到相应的基因符号,并将它们添加到我的数据框中的新列中。 我使用了 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 中!因为没有什么要补充的!

提前致谢,

【问题讨论】:

    标签: r dataframe bioinformatics bioconductor


    【解决方案1】:

    这是因为您在 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")
    

    【讨论】:

    • 您也忘记将过滤器切换为ensembl_peptide_id
    • 谢谢,我切换了属性而不是过滤器,现在改了
    【解决方案2】:

    我尝试了几个R包(mygene、org.Hs.eg.db、biomaRt、EnsDb.Hsapiens.v79)将Ensembl.gene转换为gene.symbol,发现EnsDb.Hsapiens.v79包/基因数据库提供最佳的转换质量(就能够将大部分 Ensembl.gene 转换为gene.symbol 而言)。

    如果尚未安装,请运行以下命令安装包: BiocManager::install("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中对类似问题的回答。

    【讨论】:

    • 你是救生员。
    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多