I have a data.frame containing Ensembl IDs in one column; I would like to find corresponding gene symbols for the values of that column and add them to a new column in my data frame. I used bioMaRt but It couldn't find any of the Ensembl IDs!
Here is my sample data (df[1:2,]
):
row.names organism gene
41 Homo-Sapiens ENSP00000335357
115 Homo-Sapiens ENSP00000227378
and I want to get something like this
row.names organism gene id
41 Homo-Sapiens ENSP00000335357 CDKN3
115 Homo-Sapiens ENSP00000227378 HSPA8
and here is my code:
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)
Then I get this when I check the G_list
[1] ensembl_gene_id entrezgene description <0 rows> (or 0-length row.names)
So I couldn't add G_list to my df! because there is nothing to add!
This is because the values you have in your gene
column are not gene ids, they are peptide id (they start with ENSP). To get the info you need, try replacing ensembl_gene_id
by ensembl_peptide_id
:
G_list <- getBM(filters = "ensembl_peptide_id",
attributes = c("ensembl_peptide_id", "entrezgene", "description"),
values = genes, mart = mart)
Also, what you are really looking for is the hgnc_symbol
Here is the total code to get your output:
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")