GSoC Students Do Cool JBrowse Projects
Pubudu Dodangoda is working on a social commenting extension for gene features.
Saksham Saxena is working a module to manage synthetic chromosomes through GitHub.
GitHub: https://github.com/
June 3, 2016
GitHub: https://github.com/
March 1, 2016
We are happy to announce JBrowse 1.12.1 release! This is a maintenance release.
February 25, 2016
It's been a while since we posted on here*, and while the JBrowse-o-sphere has not been silent (there's been plenty of chatter on the gmod-ajax mailing list and the GitHub issues tracker, for example) we think it's high time for an update on the main site.
In part, this update is triggered by the (near-)completion of a state-of-the-JBrowse paper, which should be published soon. That paper describes what's been happening in JBrowse over the past few years, code-wise. You can get a sense of that from the release notes. The (complementary) goal of this blog post is to give some idea of the direction we're headed in.
JBrowse was the spiritual child of GBrowse, and GBrowse was built on the good ship Perl. Sadly, those days belong to a glorious past that has not yet been resurrected in the name of vintage kitsch. Speaking as a hacker who still dreams in Perl (and sometimes talks to myself in Perl while riding the train) I'm proud to be a national monument and I'd be happy to share my memories of the 80's with you... but even I have to admit that I teach Python to my undergrads these days. They need jobs.
The ancient Perl timbers that support JBrowse are showing their age; and that's why we've been adding more and more features that allow the JBrowse client to leave its BioPerl exoskeleton behind. Most of that exoskeleton is oriented toward slurping data out of object relational databases like Chado, or from flatfiles, so as to generate JBrowse-specific JSON-based index files (using Nested Containment Lists) that allow the client to do fast range queries on feature sets.
Fans of Chado need not worry: the JBrowse distribution will keep that functionality around, but the Perl part is less fundamental: the JavaScript client can load many file formats natively now, and can make use of other (more standard) indices, like tabix and faidx in SAMTools.
A direct benefit of this is that it's possible to use JBrowse like a desktop browser, opening local files directly; either by firing up a web browser and pointing it at a JBrowse instance, or by using the new desktop version of JBrowse (built using Electron). The reduced dependency on JBrowse-specific indexing scripts also makes it conceptually a little simpler to feed data to a JBrowse instance from a server.
Several plugins have been developed for JBrowse and Apollo (indeed, Apollo itself is also a plugin) and there are more on the way, both from our team and from third parties. To help admins find cool plugins, we are developing a plugin repository which will allow developers to register their plugins at jbrowse.org.
We are also close to publishing a registry of publicly accessible JBrowse instances. Over the past year, our analytics suggest that there are at least 2,600 active JBrowse hosts out there. Keeping a central, accessible list of active instances will help model organism databases and other small genome projects become more "discoverable".
We're constantly adding new kinds of track, and there are several in the pipeline. The latest release has NeatFeatures, which finally brings intron hat cartoons to JBrowse.
Mitch Skinner, the visionary and pragmatist who was the first full-time lead dev of JBrowse, once said that "HTML can draw any shape you want, as long as it's a rectangle". Well, that may have been true back in the day, but 97% of web users now have Canvas support (and 99.9% of JBrowse users), and we feel comfortable drawing some diagonal lines.
We're also working on SVG-based tracks that remove some of the ancient legacy limitations imposed on track classes, and can play nicely with d3 for some truly cool viz. Watch for new SVG-based tracks for visualizing population-level variation in the near future.
JBrowse can be described as a static site generator: after running the indexing tools, you don't need to execute any code on the server. Just serve up the indices to the client as static files, and you're set. This has some important benefits, notably for performance (it relieves the processing burden on the server and makes distributed servers much easier) and security (e.g. you can in principle use a super-secure webserver like publicfile). However, it's also limiting for some applications.
There's nothing stopping admins from setting up JBrowse as part of a larger dynamic web application, and there are plenty of hooks in the JavaScript code that allow developers to interface to dynamic code. However, up until this point, a systematic "recommended" way to write dynamic JBrowse apps has been lacking.
That's going to change soon: JBrowse is finally growing a server-side. Although, in keeping with our general philosophy about how to do things on the bioinformatics web, our approach to this will be minimal -- and compatible with a wide range of different back-ends.
We're going to begin with basic infrastructure that most server applications will need: specifically, pub-sub messaging for notifying the client of updates. We then want to build some analysis capabilities into JBrowse -- or, more precisely, hook JBrowse up to existing analysis engines. Everyone's favorite workflow manager Galaxy will be top of the list. As usual (and this is something we view as a good sign), the community has gotten there before us: Eric Rasche, who also built an excellent Docker image for JBrowse, has developed a JBrowse Galaxy tool, which we will certainly be hoping to build on.
We recognize that there are other web-based job control shells apart from Galaxy, and some (e.g. iPlant) are already working with JBrowse. Our current plan is to write a (thin) abstraction layer that allows JBrowse to talk to Galaxy or other web shells for job control.
We think a big part of the future of JBrowse is in building rich, integrated bioinformatics web apps of which the genome browser is just one component. The kind of thing that used to be called a mashup but now (rather more professionally and stylishly) is known as a dashboard.
OK, technically mashups and dashboards are different: a mashup combines visualizations of multiple data sources, while a dashboard combines multiple controls in a single interface. Bioinformatics web apps, though, typically do both.
Some examples of what one might do with this sort of hybrid:
First, on the UI side, JBrowse must play nicely inside a DIV or inside a jQuery element (this is in process), and must be 100% programmatically controllable via the JavaScript API (this is mostly true already).
Second, on the server side, some aspects of the basic infrastructure need to be fleshed out; for example, notifications of changes to the sequence and/or track sets. As noted above, this is very much a part of our plans.
Like Mark Zuckerberg, we really just want to connect people. Some of the coolest applications that has been built with JBrowse are the collaborative ones for distributed and/or crowdsourced curation of genome features, like Apollo and Afra. We're also very excited to make JBrowse work better with personal genomics sites like myvariant.info.
We want to enable more stuff like this, and are offering several Google Summer of Code projects this year. At least one of these is social in nature (developing a chat plugin for JBrowse) and another, offered by François Moreews and Thomas Darde, uses Docker to deploy personal JBrowse instances.
Watch this space for more updates!
~Ian
Updated 2/25: There are a lot of issues still on the GitHub tracker that we plan to get to but I haven't mentioned here. James Gilbert on Twitter asked about flipping the view to the reverse strand, which is issue #170 on GitHub. Rest assured that just because I didn't necessarily mention every last one of them here, that doesn't mean we've forgotten about them. We do still plan to get to those issues and to keep upgrading and refining the UI.
* OK, there was the 1.12 release, but you know. A while since we just pontificated for the hell of it.
December 17, 2015
We are happy to announce JBrowse 1.12.0 release! This new release includes some exciting new features including the ability to load new genomes from FASTA and indexed FASTA formats; in-line refseqs, and server-free desktop applications for Windows and OSX (based on Electron). New plugins beautifully enhances feature rendering with intron hats and gradients in both HTML and canvas tracks, provide URL links to call up tracks by category URL, among others. Improvements include the ability to load custom histograms for tracks loaded from flatfile-to-json.pl; a new wiggle track option scoreType: 'avgValue', which helps preserve continuity when zooming in on certain tracks like GC-content; and the ability to specify the set of startCodons and stopCodons in the config. In addition, several bugs have been addressed.
hideGenomeOption in config, and the classic menu style can be restored via classicMenu in config.February 12, 2015
I'm pleased to announce JBrowse 1.11.6 is now available! Everybody's feedback, bug reports, pull requests, and feature requests have been invaluable for making this happen. This release includes new UI options for easily setting "Log scale" on wiggle tracks and dynamically changing strandedness on RNA-seq according to multi-segment template flags and splice site (XS) flags. It also includes bug fixes for calculating SNP positions on certain flag combinations in BAM files and for reporting the correct genotypes on certain VCF tracks. Enjoy!
scoreType. Thanks to Scott Cain for reporting the issue and to Colin Diesh for the fix (issue #518).--workdir parameter in generate-names.pl (issue #506).--sizes option to prepare-refseqs.pl (issue #535).shortDescription option for the mouseover description of tracks in the Hierarchical track list (issue #553).September 4, 2014
A new JBrowse release has arrived! JBrowse 1.11.5 incorporates many valuable contributions and feedback from the community which has been overwhelmingly positive. Some notable bugs have been fixed, including a long-standing VCF file parsing bug, a scrolling bug that affected popup boxes for variants on JBrowse 1.11.4, and a patch for setup.sh build errors. There are also some new configuration options for the tracklist and dialog boxes, and the ability to use tablet and touch-screen devices has been fixed!
May 14, 2014
I am happy to announce the release of JBrowse 1.11.4. This is the first release after Rob's leave, and it represents the great community effort to keep things going. There are some exciting new developments in this version, including high-resolution rendering of canvas-based tracks and a basic GTF file parser. There are also several important bug fixes, including an update to the setup.sh script in order to maintain compatibility with the latest BioPerl.
March 7, 2014
JBrowse 1.11.3 has been released, with quite a few improvements and bugfixes, including a new coloring scheme for BAM alignment tracks (Alignments2 tracks), a fix for some annoying bugs with the feature arrowheads, and some nice new configuration variables for customizing the display of certain fields in the default feature detail popup dialog boxes (see the JBrowse Configuration Guide for details).
In addition, this will be my last JBrowse release in my position as JBrowse lead developer. Thank you all for the past two years of development; we've made some exciting strides, and it's been great!
Files for download:
Alignments2 tracks to show
different shades of color indications of reads with missing mate
pairs, improperly aligned reads, and reads with mate pairs on
different reference sequences. Thanks to Keiran Raine for
implementing this (issue #443).*.coverage.* or
*.density.* as histograms to newly-opened tracks if the file
basenames match. For example, if both mysample.bam and
mysample.coverage.bw are present, mysample.coverage.bw will be
added as a histogram source for mysample.bam. Thanks to Keiran
Raine and Alexander Stoddard for suggesting this (issue #423).February 12, 2014
We recently used JBrowse in the 150 Tomato Genome ReSequencing project, and it worked great!
The aim of the 150 Tomato Genome ReSequencing project (http://www.tomatogenome.net) is to reveal and explore the genetic variation available in tomato. Tomato has been selected as target crop because it is economically one of the most important crop species for the Dutch breeding industry, and is one the most important vegetables globally. However, since the tomato shows only limited genetic diversity in commercial breeding lines, valuable alleles will be available in wild tomato relatives. Since breeding and selection was targeted at only a narrow range of desirable agricultural traits, also old breeding material could be source of interesting alleles that have been lost during domestication.
In order to identify the sequence diversity within tomato, 83 genotypes including 10 old varieties, 43 land races and 30 wild accessions were seqeunced. These wild tomato species represent the full range of expected genetic variation around _S. lycopersicum _that can still be used as potential breeding material.
Sequences have been mapped against the reference genome of S. lycopersicum cv. Heinz (SL2.40) and SNP and INDEL variation has been determined.
JBrowse is a fast, embeddable genome browser built completely with JavaScript and HTML5, with optional run-once data formatting tools written in Perl.
The SNP and INDEL variants have been made available using JBowse (http://www.tomatogenome.net/VariantBrowser/) and an tutorial (http://gmod.org/wiki/JBrowse#Tutorials) on how to explore this data resource by the community has been written.
In addition to variants from the 150+ Tomato Genome ReSequencing project, we will add publicly available variant datasets as well.
February 10, 2014
JBrowse 1.11.2 has been released, with some new controls to adjust the size of quantitative tracks (thanks to Evan Briones at University of Arizona!), added support for the new text-based tracks.conf files to generate-names.pl, and quite a few other small improvements.
Files for download:
JBrowse/View/FeatureGlyph/Diamond glyph that draws
diamond-shaped features instead of boxes. Thanks to OICR Co-op
student Kevin Mohamed for implementing this!--config option to flatfile-to-json.pl that accepts
additional configuration variables that will be merged into the top
level of the track configuration. Thanks to Mikael Brandström
Durling for the initial implementation of this.generate-names.pl now indexes VCF files from track definitions in
tracks.conf files. Thanks to Paul Halle for pointing this out
(issue #434).