Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Genome browser #1177

Closed
julie-sullivan opened this issue Oct 19, 2015 · 16 comments
Closed

Genome browser #1177

julie-sullivan opened this issue Oct 19, 2015 · 16 comments
Assignees
Milestone

Comments

@julie-sullivan
Copy link
Member

Options:

  • Fix JBrowse
  • Find another browser to use.

Tell @rachellyne

@justinccdev
Copy link
Contributor

I've done a quick survey of the genome browsers out there. Many are old, unmaintained or wouldn't be possible to embed. Of the ones that are left

  • JBrowse (http://jbrowse.org) - written in javascript, embeddable with ability to extract data from webservices (as currently done with intermine), reasonably actively developed. A bit ugly with the -/+ buttons required to zoom in/out instead of something nice like the mouse scrollwheel.
  • biodalliance (http://www.biodalliance.org/) - written in javascript, embeddable, looks like it can get data from remote webservices, reasonably active development. Looks a bit cleaner (e.g. https://www.mousephenotype.org/data/genomeBrowser/MGI:2384795). May well be worth further investigation.
  • genome maps (http://www.genomemaps.org, https://github.com/opencb/genome-maps) - written in javascript, don't know how embeddable, reasonably active development, can get data from remote sources via OpenCGA (https://github.com/opencb/opencga/wiki, a "Big Data storage engine and analysis framework for genomic scale data analysis of hundreds of terabytes or even petabytes", but might be possible to get intermine to speak the protocol). Led by somebody from the EBI. May well be worth further investigation.

For now, I'm going to see how easy it will be to get the jbrowse issue fixed.

@justinccdev
Copy link
Contributor

The current issue with jbrowse is that it displays on Chrome but not on Firefox (blank iframe instead). The setup is that jbrowse is hosted remotely and fetches it's data via CORS requests to the mine. However, it doesn't look like CORS is the issue. jbrowse works fine both it and the mine are hosted locally. Perhaps this is some timing issue. I intend to ask on the jbrowse dev list to see if they can shed any light once I have a public example up displaying this problem.

@cmdcolin
Copy link
Contributor

I'd be happy to look at this if there is still interest. I was testing out adding the config like in 4318f0e and I saw the jbrowse frame could load, but not the features necessarily.

@justinccdev
Copy link
Contributor

Actually, after this I discovered that one of my Firefox plugins (NoScript) was stopping jbrowse displaying, though Julie has also had trouble with Chrome (which is fine for me).

I do have fixes for jbrowse integration for InterMine in branch [1]. This is not yet merged with intermine/dev. What would be really handy for InterMine is if there was some way of loading jbrowse.conf from InterMine instead of having to specify it jbrowse side, since some mines have organisms that change between builds and getting jbrowse.conf would allow us to host one jbrowse installation (on the CDN) rather than one for each mine. For some reason I thought this had already been implemented but I think I was mistaken. Any thoughts about this, Colin?

[1] https://github.com/justincc/intermine/tree/jbrowse-fixes

@julie-sullivan
Copy link
Member Author

Yes, it was blank until I turned off my adblocker. Try that @cmdcolin?

But when JBrowse did appear, the genes didn't show up as expected. There was some data if I scrolled to the left or out but there was some missing etc. It's going to take some investigation to find out why the data is wrong.

@justinccdev You got it working for synbiomine? Is that public?

@sergiocontrino You got it working for thalemine? Is that public?

@justinccdev
Copy link
Contributor

@julie I have it active on the beta Synbiomine. For instance, [1]. For me, at least for the genes I've looked at, the tracks appear as I would expect.

[1] http://beta.synbiomine.org/synbiomine/report.do?id=26026345

@cmdcolin
Copy link
Contributor

cmdcolin commented Jun 28, 2016

But when JBrowse did appear, the genes didn't show up as expected.

I see approximately this scenario on my test mine as well.

I am pretty familiar with this type of thing in jbrowse though, it is just data formatting issues I believe which the backend should be able to control.

virtualbox_lubuntu_28_06_2016_11_07_21

For example the above formatting issues are pretty typical (the one with bold letters but no features showing is one type of thing, and also features but with no subfeatures is another)

@justinccdev I'd be interested but basically something like that should be fine. JBrowse has a flexible concept of "including" config files from different locations and merging them into the final config. I note that the jbrowse instance is on the cdn, but it shouldn't be a problem to add extra custom config on the mine site too (and the settings inside for example in a trackList.json file can contain both track configs and global config settings)

@vivekkrish
Copy link
Contributor

Hi All,

In the most recent public build of ThaleMine, we (@sergiocontrino along with @justinccdev) have been able to resolve any remaining issues with the populate-child-features post-process as well as InterMine JBrowse REST-API, to ensure that the parent -> child -> grandchild hierarchy is properly established in the JSON data. For example, for a protein coding gene, the following feature hierarchy is required: gene --> mRNA --> {exon,CDS,UTR}.

Please see this example ThaleMine gene report: https://apps.araport.org/thalemine/portal.do?class=Gene&externalids=AT1G67140

Apart from the fixes on the InterMine side of things, we also had to tweak the JBrowse ProcessedTranscript glyph, so that the "CDS" feature loaded into ThaleMine, which is stored as a single block with [start, end] coordinates (similar to how it is stored in FlyMine), can be broken up into CDS parts (describing the splicing structure), and then correctly rendered in the JBrowse view.

The JBrowse code changes can be seen in this commit: Arabidopsis-Information-Portal/jbrowse@a1f7a21

In order for both these changes to work in concert, we've added a new web.properties config entry called jbrowse.featureTrack.config.inferCdsParts = true, which enables the inferCdsParts: true configuration required for JBrowse.

Hope that I've been able to explain this properly!

Thank you.

@vivekkrish
Copy link
Contributor

cc @sammyjava, the Legume Federation InterMine instances would also benefit from code fixes described in this issue.

@sammyjava
Copy link
Member

Sounds good, I'll use your jbrowse fork and the new web.properties entry. I presume your updates to PopulateChildFeatures.java will be pulled into origin/dev at some point (I'm showing Julie/Jan 11 for the current version).

@vivekkrish
Copy link
Contributor

Hi @sammyjava , that's correct. Need to extract the JBrowse specific changes and issue a PR to the main InterMine repo. Will notify you when that is done!

Thank you.

@justinccdev
Copy link
Contributor

Hi @vivekkrish. My changes are now in [1] against InterMine/dev and I believe @julie-sullivan is looking at this. @sergiocontrino 's changes after this are in his branch [2] I think - I'm not sure if there is a cleaner one since it looks like some of them might be Thalemine specific. I think it should be possible to pull out the jbrowse changes with a bit of looking if you want.

Back when I did this in December, I wrote a design doc [3] which does detail the extra mechanism for specifying jbrowse config parameters via InterMine config. Can your inferCdsParts setting conform to this format?

[1] #1426
[2] https://github.com/sergiocontrino/intermine/commits/stable-jb
[3] https://docs.google.com/document/d/1W2K7efytmgAhW-QSXw-1WaOdTlSaPyW50YJnaZAp7wQ/edit?usp=sharing

@vivekkrish
Copy link
Contributor

Hi @justinccdev , Regarding [1], was not aware of the existing PR. Thanks!
[2] Yes, we would need to extract some commits from @sergiocontrino 's branch, as they are relevant to how the gene structure hierarchy is established within the JSON object, plus some post-processor related changes. We could make a separate PR for these changes or fold them into yours.

[3], I did not know that this design doc existed, but I did figure out that such functionality exists by looking at the code/comments. However, for some reason I assumed (not sure why!) that this probably only applied to JBrowse track styling.

I would be happy to change this to use your existing config mechanism. For example, I believe I would need to add 2 new web.properties entries like so:

org.intermine.webservice.server.jbrowse.genomic.track.Gene.inferCdsParts=true
org.intermine.webservice.server.jbrowse.genomic.track.MRNA.inferCdsParts=true

This, I'm assuming, should enable inferCdsParts for just the Gene and MRNA classes. Does this look OK?

Thank you!

@justinccdev
Copy link
Contributor

Hi @vivekkrish. To answer your points:

[1] Yeah, I actually only created the PR today on request, as I did my part of the work in Dec 2015 but then for various reasons never merged it to the main InterMine dev. I just merged this PR along with a single change from @sergiocontrino's branch (d1c0550) because this was necessary to stop Checkstyle from complaining. I hope this gives you a good basis for building a further PR from @sergiocontrino's work and your changes? Will this be all the changes related to jbrowse that Sergio did or do you just need a subset? Unfortunately, I don't know exactly when Sergio might be around to comment if necessary.

[3] Yeah, sorry, I actually meant to clean up and publish this to the InterMine mailing list for comment last December but didn't because I didn't get to the point of being ready to merge back then. When jbrowse changes are completed I'll merge the documentation parts into the main documentation.

Yeah, it should be possible to do

org.intermine.webservice.server.jbrowse.genomic.track.Gene.inferCdsParts=true
org.intermine.webservice.server.jbrowse.genomic.track.MRNA.inferCdsParts=true

as anything after org.intermine.webservice.server.jbrowse.genomic.track. is passed straight through to JBrowse. The key name is a bit long-winded and fugly but I chose it to be consistent with some other config already present and (hopefully) to make it possible to pass through any config through to JBrowse via InterMine.

@sergiocontrino
Copy link
Member

hi @vivekkrish and @justinccdev, i'll do the merging of thalemine changes in a dev branch. we can then test them on humanmine when convenient for @julie-sullivan.

@julie-sullivan
Copy link
Member Author

JBrowse is working correctly in all mines now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants