Hello, I want to retrieve set_gene_id (ENSG), set_transcript_id (ENST) from a file containing the rsIDs of many SNPs. After a lot of research, the BioMart package from R would allow me to do this. After some research, I saw that I had to use the argument refsnp_id to tell the program that I wanted to provide them with the rsIDs of my SNPs to perform the search and retrieve the gene and transcript ID.
Here is the code:
library(biomaRt)
Data <- readLines ("rsID.txt")
length(Data)
for (i in 1:length(Data)){
mart <- useMart(biomart = "ensembl", dataset = "hsapiens_gene_ensembl")
results <- getBM(attributes = c("refsnp_id", "ensembl_gene_id", "ensembl_transcript_id"),
filters = "refsnp_id", values = "i",
mart = mart)
}
However, it returns the following error :
Error in getBM(attributes = c("refsnp_id", "ensembl_gene_id", "ensembl_transcript_id"), :
Invalid attribute(s): refsnp_id
Please use the function 'listAttributes' to get valid attribute names
How to tell it that I want to give him rsIDs ?
Second, is this the right way to read a txt file line by line and thus search for gene and transcript names for each sNP?
Thank you in advance for your help.
3 answers
You need to use a different mart. Take a look at my answer, here: A: How to retrieve Gene name from SNP ID using biomaRt
To see all attributes that are available, type:
listAttributes(mart)
Kevin
As Kevin says, you need to use the SNPs mart rather than the Genes mart.
You also don't need to do this inside a loop. You can provide a vector of rsIDs to the values argument and the function will run the query for all of them. This will be much faster than doing them one at a time within the loop.
Thank you for your answers, indeed, I should not use biomart correctly and especially not be in snp mode. But how do I transform my text file into a vector? I've tried different commands that always send me the same message. How to do this?
What has been tried:
Data_vec <- as.vector(Data)
Data_vec<-c("Data")
library(biomaRt) Data <- readLines ("file.txt") length(Data)
#Data_vec <- as.vector(Data)
#Data_vec<-c(Data)
require(biomaRt) ensembl <- useMart("ENSEMBL_MART_SNP", dataset =
"hsapiens_snp") getBM(attributes=c( "refsnp_id",
"ensembl_gene_stable_id", "ensembl_transcript_stable_id"),
filters="snp_filter", values="Data_vec", mart=ensembl, uniqueRows=TRUE)
Error :
[1] refsnp_id ensembl_gene_stable_id ensembl_transcript_stable_id
<0 rows> (or 0-length row.names)
Log in to answer this question.