Hello, I usually use biomart with my own perl scripts using the RESTful service and I point to "http://grch37.ensembl.org/biomart/martservice"
But now I have been playing with BiomaRt during this week and seems that biomart has changed their martservice from GRCh37 to GRCh38.
I read the docs for my biomaRt version: 2.18.0 (R 3.1.0) and found that I can change host and path but I am having trouble doing it.
First I checked that the biomaRt was working:
> ensembl <- useMart("ensembl", dataset="hsapiens_gene_ensembl")
But wen I tried to define a host and path I had an error:
# change host and path => ERROR
> ensembl <- useMart("ensembl", dataset="hsapiens_gene_ensembl", host="http://grch37.ensembl.org", path="/biomart/martservice")
Request to BioMart web service failed. Verify if you are still connected to the internet. Alternatively the BioMart web service is temporarily down. Check http://www.biomart.org and verify if this website is available.
Error: XML content does not seem to be XML:
# To check if there is a problem with the url I have put the URL as in the default @host
> ensembl <- useMart("ensembl", dataset="hsapiens_gene_ensembl", host="http://www.biomart.org", path="/biomart/martservice")
Request to BioMart web service failed. Verify if you are still connected to the internet. Alternatively the BioMart web service is temporarily down. Check http://www.biomart.org and verify if this website is available.
Error: XML content does not seem to be XML:
I am missing something?
Do the host and path options need something extra I am missing?
Why is expecting a XML at the point of initialization?
Regards
Thanks Thomas, by the way I am a bit confuse with the circularity of BiomaRt. useMart needs a biomart datbase, If you don't know a biomart database you can list them with listMarts that needs the biomaRt object created with useMart that needs a biomart database....Doh?!. From where can I have a list of biomart databases for a host BEFORE creating a biomart object?
You can get a list of the marts without creating an object but only for the mart databases located on biomart.org (biomaRt connect to this server by default):
If you want to know the mart databases from an external server, you can do the following if you are using biomaRt 2.21.4 or above:
Then you can run the following command to get a list of all the datasets:
Hope this helps,
Regards,
Thomas
As you can see below, I've tried your solution but it keeps loading version 77 ...
> library(biomaRt)
> grch37 = useMart(biomart="ENSEMBL_MART_ENSEMBL", host="grch37.ensembl.org", path="/biomart/martservice")
> head(listMarts(grch37))
biomart version
1 ensembl ENSEMBL GENES 77 (SANGER UK)
2 snp ENSEMBL VARIATION 77 (SANGER UK)
3 functional_genomics ENSEMBL REGULATION 77 (SANGER UK)
4 vega VEGA 57 (SANGER UK)
5 fungi_mart_23 ENSEMBL FUNGI 23 (EBI UK)
6 fungi_variations_23 ENSEMBL FUNGI VARIATION 23 (EBI UK)
Dear Mathieu,
The listMarts function was updated in biomaRt 2.21.4 to improve the compatibility with external host so if you update your Bioconductor code to the latest version by running the following:
Then you should be able to get the following:
Please note that biomaRt did managed to connect to "grch37.ensembl.org", it's just the listMarts function which is returning the list of marts from biomart.org instead of grch37.ensembl.org.
Hope this helps,
Regards,
Thomas
Hi, Pablo
Thanks for your question. I encountered the same problem that I got quite different results using biomaRt now than about a month ago.
And regarding this circularity thing, in function listMarts, you can specify 'host' and 'path' like what you do in function useMart.
Hope this helps.
Sincerely,
Ting