Attaching a DAS track to GBrowse
A colleague Frank Schwach and myself recently set up a data source to be used by the Plasmodium berghei GBrowse hosted at Plasmodb.org.
There were some complications in that the das.sanger.ac.uk/das/ data sources are provided through a proxy that sits in front of multiple DAS servers of different types i.e proserver and dazzle.
A quick summary of our experience is described by Frank below in the hope that if anyone else runs into difficulties this will help them or they will get in touch with us for help.
“Turns out that the Bio::Graphics module at some point asks the DAS
server for it’s capabilities before retrieving any data. It does to find
out which types of features it can get.
So, even if a direct request for features would be successful on its own
(which it was in our case) it doesn’t work in Gbrowse unless the DAS
server states it’s capabilities correctly.
The complication on our side is that the DAS server goes through a
proxy, which is where the POST requests failed previously and now it
turned out that the proxy didn’t send the correct headers. Jonathan had
to modify the headers and now it does return the capabilities of the
source correctly. Unfortunately, Gbrowse doesn’t report the actual
problem with the DAS source even if you switch on all debugging options
in the code. The critical query happens in Bio::Das::Segment, when the
Bio::Graphics::Browser asks the Bio::Das::Segment object for the types.”
Me: In summary I didn’t realise GBrowse would be using POST for requests instead of GET and that the DAS spec specifies that for long requests a POST should be used!!! Ideally all data sources that provide a valid features response would have a valid types response – however many do not. Ensembl doesn’t require one but probably many other clients such as GBrowse do. This sort of thing is where the lack of conformity to the DAS spec by data providers (including us at the Sanger with many old data sources) is detrimental to the DAS system. I’m pleased to see that GBrowse uses the sources.xml response to see the capabilities of sources, and it’s important for these to be stated correctly where used.