JBrowse 1.7.0, now with data export, direct BAM display, and much more

I am pleased to announce the release of JBrowse 1.7.0, which includes a great many enhancements both large and small.  Very exciting!

First, the download links:

  • JBrowse-1.7.0.zip – 2.9M – Includes everything you need to display your data on the web with JBrowse, optimized for loading speed.
  • JBrowse-1.7.0-dev.zip – 27.4M – Primarily for developers. Includes additional developer documentation, developer tests suites, and full copies of Dojo and Dijit.

Now for the big new features.

Firstly, JBrowse can now quickly and efficiently display alignment data directly from BAM files over the web, with no need for any intermediate formatting steps.  Just put your .bam and .bai files on your web server, add a few lines of configuration to point JBrowse at them, and go!  Moreover, JBrowse has two new track types optimized for displaying alignment data: new “Alignments” track type, showing basepair differences and insertions between aligned reads and the reference (using a BAM alignment’s MD field), and a new FeatureCoverage track type that generates a depth-of-coverage plot from a BAM file (or from any other source of feature data).  Many thanks to Thomas Down and his Dalliance Genome Browser project, from which the JBrowse BAM data backend was derived.

The second headline feature of this release is long-awaited support for exporting and saving  sequence and annotation data in FASTA, GFF3, bed, bedGraph, and Wiggle formats.  Just turn on the track of interest and click on its track label to bring up a new menu of things you can do with that track, one of which is “Save track data”.  This has been one of the top features users have been requesting for a long time, and now it’s finally here!

Third, we have two important enhancements to JBrowse’s already-excellent support for BigWig quantitative data: a new Wiggle/Density track type, analogous to GBrowse’s popular wiggle_density track type, that shows quantitative data using varying intensity of color. Additionally, the existing Wiggle/XYPlot supports a new bg_color option that, if set, provides a background color for all data points in the track, making it easy to distinguish between regions with no data, and regions with 0-valued data.  Many thanks to Steffi Geisen at the University of Granada for her continued help driving progress on this and many other issues.

Read on for the exhaustive list of changes in this release, including bug fixes, more keyboard navigation enhancements, colored DNA basepairs, more configuration options, and speed enhancements.

1.7.0 2012-11-05 19:22:17 America/New_York

  • Added a new direct-access storage driver for BAM files, removing
    the need for bam-to-json.pl. This new method of BAM access is
    far superior to the old bam-to-json.pl in nearly every way,
    except in browser compatibility. Like the BigWig direct access
    backend added in JBrowse 1.5.0, it is based on code from Thomas
    Down’s Dalliance Genome Explorer, and works in all major browsers
    except Internet Explorer, because IE lacks support for the
    necessary web standards. It may work with Internet Explorer 10,
    but this has not been tested yet.
  • Added a new Alignments track type designed to work seamlessly
    with BAM files. This track type shows basepair differences and
    insertions between aligned reads and the reference, and highlights
    reads with missing mate-pairs in red.
  • Added the ability to export track data in FASTA, GFF3, bed,
    bedGraph, and Wiggle formats (issue #104). To export data, turn on
    the track of interest, then click on its track label to bring up
    the track menu, and select “Save track data”.
  • Added a new Wiggle/Density track type, analagous to the GBrowse
    wiggle_density glyph type. Shows the Wiggle information using
    varying intensity of color (issue #66). Renamed the Wiggle track
    to Wiggle/XYPlot, and made the old Wiggle track type an alias
    to Wiggle/XYPlot.
  • Both Wiggle/XYPlot and Wiggle/Density now support a style ->
    option. Color-density plots blend the pos_color or
    neg_color into the bg_color in amounts that vary with the
    wiggle data, and xyplots fill the background color behind all
    points that have data present, regardless of value. bg_color
    defaults to off for xy xplots, and semi-transparent gray for
    density plots. Setting this makes it easier for users to
    distinguish at a glance between regions with no data, and regions
    with a value of 0.
  • Added a new FeatureCoverage track type, which shows a
    dynamically-computed XY-plot of the depth of coverage of features
    across a genome. One good use of this track type is to provide a
    quick coverage plot directly from a BAM file. However, since this
    track calculates coverage on the fly, it can be slow when used with
    large regions or very deep coverage. In this case, it is
    recommended to generate a BigWig file containing the coverage data,
    and display it with a Wiggle/XYPlot or Wiggle/Density track.
  • DNA bases are now displayed with color-coded backgrounds, allowing
    basepair information to be discerned when zoomed somewhat further
    out, when base letter cannot be drawn. Colors are also designed to
    match the base-mismatch colors used in Alignment tracks, enabling
    clearer SNP visualization.
  • Added a vertical line cursor and labels showing the current
    basepair position of the mouse when hovering over the scale bar, or
    when doing a rubber-band zoom (Erik Derohanian) (issue #32).
  • Added an animation to make it easier to see where in the track
    selection list a closed track has gone, when using the simple track
    selector (issue #151).
  • Information dialog boxes are now easier to dismiss: clicking
    anywhere outside of them, or pressing any key, will make them go
  • Improvements to feature track configuration:
    • Feature tracks no longer use the style.subfeatureScale
      configuration variable to determine whether to show subfeatures.
      Instead, subfeatures are shown if the parent feature, when shown on
      the screen, is wider than style.minSubfeatureWidth, which
      defaults to 6 pixels.
    • Make explicitly-configured track labelScale, histScale, and
      descriptionScale not be modulated by the feature density: only
      use the feature density to pick the scale defaults
  • The default feature-detail dialog box now shows more information, adding:
    • the feature’s exact length
    • full details of its subfeatures
  • Added a locationBoxLength configuration variable that controls
    the width of the location box. In addition, the default width of
    the location box is now also smarter. Instead of a fixed 25
    characters, it is calculated to fit the largest location string
    that is likely to be produced, based on the length of the reference
    sequences and the length of their names.
  • Pressing SHIFT+-up/down arrow keys now cause the genome view to
    zoom in and out. If ALT is added, it zooms further. Thanks to
    Karsten Hokamp for the excellent suggestion.
  • Holding SHIFT while scrolling left and right with the arrow keys
    causes the view to scroll further.
  • Added a theme configuration variable to allow changing the
    graphical theme to something different from the default “tundra”.
    However, no other themes are implemented yet.
  • Greatly sped up rendering of HTML subfeatures by caching the
    heights of subfeature HTML elements.
  • Fixed bug in which the genome view executed a double-click zoom when
    users rapidly clicked on multiple track ‘close’ buttons.
  • Fixed bug with the genome view scrolling in response to arrow keys
    being pressed when typing in the location box.
  • Fixed bug in which the score display in Wiggle tracks would
    sometimes flicker when moving the mouse.
Posted in Software releases | 1 Comment

JBrowse 1.6.5 bugfix release

I’m pleased to announce the release of JBrowse 1.6.5, containing some small new features, plus fixes for some issues in the 1.6.4 release.

Files for download:

Changes in this release:

  • The location box now shows the length of the currently visible
    region in parentheses. For example: ctgB:1244..3566 (2.32 Kb).
    Thanks to Karsten Hokamp for the suggestion!
  • The arrow keys on the keyboard can now be used to pan and scroll
    around the genome view.
  • Wiggle track mouseover cursors now display the score with only 6
    significant digits, avoiding confusion over approximations
    introduced by scores being converted to IEEE floating-point numbers
    (as for BigWig files) and back to text.
  • The faceted track selector now renders any HTML that may be present
    in the track metadata by default. To turn this off, it now accepts
    an escapeHTMLInData option that, if set to true or 1, will
    not render the HTML, but will instead display the raw code
    (issue #145).
  • Upgraded to a more recent version of jszlib, which contains some
    important bugfixes (issue #157).
  • Fixed bug dealing with very large regions with the same value in
    canvas-based Wiggle tracks (also issue #157).
  • prepare-refseqs.pl now by default uses a more scalable directory
    structure for storing sequences. This fixes problems some users
    were experiencing with large numbers of reference sequences
    (issue #139).
  • ucsc-to-json.pl now supports a --primaryName option allowing
    the users to alter which UCSC data field is displayed by JBrowse as
    the primary name of the features in a track. Also,
    ucsc-to-json.pl now treats as indexable names all UCSC data
    columns called “name”, “alias”, or “id” followed by zero or more
    digits. Thanks to Steffi Geisen for this suggestion.
  • Fixed “Duplicate specification” warnings coming from
    flatfile-to-json.pl and remove-track.pl.
  • Fixed bugs in which both the first few and the last few bases of a
    reference sequence were not displaying correctly in a DNA track.
Posted in Software releases | Leave a comment

JBrowse 1.6.4 bugfix release

JBrowse 1.6.4 has been released, containing fixes for some small issues in the 1.6.3 release.

Files for download:

Changes in this release:

  • Improvements to the scalability of generate-names.pl. Many
    thanks to Steffi Geisen for her ongoing help with this.

    • Users can now manually specify which tracks will be indexed to
      enable autocompletion and searching for their feature names in
      the JBrowse location box.
    • The lazy-trie name indexing structure now correctly handles the
      case of large numbers of features that may share the same
      name. Before, it was generating files that were too large for
      the client to handle.
  • Fixed off-by-one error in Wiggle track display code: wiggle data
    was incorrectly displayed shifted one base to the left of its
    proper position. Thanks to Steffi Geisen for noticing this.
  • Fixed bug in which the reference-sequence selection box did not
    automatically update in all situations to reflect the current
    reference sequence.
Posted in Software releases | 1 Comment

JBrowse 1.6.3 bugfix release

JBrowse 1.6.3 has been released, containing fixes for some small issues in the 1.6.2 release.

Files for download:

Changes in this release:

  • Fixed bug with shift-rubberband-zooming not working on Windows
    (issue #150) (Erik Derohanian).
  • Fixed “Can’t locate JSON.pm” errors with add-track-json.pl.
  • Added a reference-sequence-selection dropdown box, similar to the
    old one, that is shown by default if fewer than 30 reference
    sequences, otherwise it’s off unless refSeqDropdown: true is set
    in the configuration (issue #138).
  • Fixed bug in which popup dialog boxes showing other websites showed
    the website in only the top portion of the dialog box. Only
    present in some browsers (issue #149).
  • Fix coordinate display bug in feature detail popups. The feature’s
    position was being displayed in interbase coordinates, but should
    be displayed in 1-based coordinates. Thanks to Steffi Geisen for
    pointing this out.
  • Added a style.height option to Wiggle tracks to control the
    track’s height in pixels (issue #131) (Erik Derohanian).
  • Added support for a style.trackLabelCss configuration variable to
    allow customizing the appearance of the label for a particular
    track (issue #4) (Erik Derohanian).
Posted in Software releases | 1 Comment

JBrowse 1.6.2 bugfix release

JBrowse 1.6.2 has been released, containing fixes for some small issues in the 1.6.1 release.

Files for download:

Changes in this release:

  • Fixed feature-layout performance problem when zoomed very far in
    on features that are much larger than the viewing window.

  • Added a default menuTemplate to all HTML-based features, so that
    all HTML features now have a right-click menu by default.

  • Add css configuration variable that allows users to specify
    either strings or URLs containing CSS to add.

  • improved bin/ucsc-to-json.pl error messages

  • bin/add-track-json.pl now replaces tracks in the target
    configuration if they have the same label.

Posted in Software releases | 1 Comment

@rbuels and JBrowse at the Semantic Web BioHackathon 2012

I had the great honor of being invited to the BioHackathon 2012, held this past week in Toyama, Japan and funded by Japan’s National Bioscience Database Center (NBDC) and Database Center for Life Science (DBCLS).  It’s been an exhausting week of immersing myself in Semantic Web technologies: RDF, SPARQL, SADI, and lots and lots of ontologies.  A lot of work still needs to be done, but there really are revolutionary capabilities coming to bioinformatics from this direction.

At the hackathon, I worked on a SPARQL-based data backend for JBrowse, which will be released as part of the upcoming JBrowse 1.7.0.  It is shaping up to be surprisingly fluid, especially given the less-than-speedy reputation of today’s triple stores.

Until it is merged into master, work on the JBrowse triple store can be seen at https://github.com/GMOD/jbrowse/compare/master…triplestore

Posted in Development | Leave a comment

JBrowse 1.6.1 bugfix release

JBrowse 1.6.1 has been released, containing fixes for some small issues in the 1.6.0 release.

Files for download:

Changes in this release:

  • JBrowse now attempts to prevent feature labels being obscured by
    track labels by keeping the feature labels a bit further away from
    the left side of the view, if possible.
  • Fixed bug in which welcome page was not shown when JBrowse has not
    been configured yet (issue #130).
  • Fixed bug in which passing tracklist=0 (as when running the
    browser in embedded mode) caused JBrowse to crash (issue #132).
  • Added dependency on Bio::GFF3::LowLevel::Parser 1.4, which has an
    important bugfix related to multi-location features (issue #109).
Posted in Software releases | 1 Comment

JBrowse 1.6.0 released, includes feature descriptions and more!

I’m very pleased to announce the release of JBrowse 1.6.0! This release is not quite as major as the previous two releases, but there are still some nice things added.

As usual, this release comes in two flavors: the “minimal” release (JBrowse-1.6.0-min.zip – 2.8M) that includes only the software and documentation necessary to format your own data and run the browser, and the “full” release (JBrowse-1.6.0-min.zip– 27.2M) that includes the developers’ test suite, more sample data files, and developer documentation. Here is the full list of new improvements in 1.6.0:

  • Added description capabilities to HTML-based features, similar to
    GBrowse’s descriptions. If zoomed in far enough (as defined by
    style.descriptionScale), adds a second line of text below the
    feature’s label that shows the content’s of the featur’s Note or
    description attribute (issue #67).

  • Give prepare-refseqs.pl the capability to load reference sequences
    from embedded FASTA sections in GFF3 files (issue #128).

  • Configuration files can now recursively include eachother, and
    tracks sections are merged intelligently.

  • Made sequence tracks not disappear when zoomed out too far to see
    base pairs. Instead, sequence tracks simply display lines
    suggesting that DNA would be visible at higher
    magnification. (issue #124).

  • Double-clicking track labels in the simple track selector now turns
    the track on (issue #123).

  • Fixed bug in BigWig tracks that use the “scale”: “log” option: did
    not render properly when the wiggle data included 0’s. This was due
    to the fact that the origin was being mapped to Infinity. Thanks to
    the Mockler Lab for the fix! (issue #127).

  • Fixed bug in NCList binary search code in which zero-length
    features at node boundaries would not be found (fix by Ed Lee).

  • Fixed bug in which dragging the scroll bar on the simple track
    selector can sometimes cause a drag-and-drop to erroneously begin
    (issue #89).

  • Fixed some bugs in the layout of HTML-based features in which
    features in different blocks would overlap in some circumstances.
    Under the hood, replaced the contour-based layout engine with a
    simpler, not-much-slower implementation that is more correct in the
    general case (issue #122).

  • Fixed a bug with vertical centering of strand arrows and other
    sub-elements of HTML-based features.

Posted in Software releases | 1 Comment

JBrowse 1.5.0 released, includes direct BigWig access!

I’m very pleased to announce the release of JBrowse 1.5.0! There are three headline features in this release. First, we’ve integrated a direct-access BigWig data backend, adapted from the Dalliance Genome Explorer that can read wiggle data directly from compressed BigWig files stored on your web server. Second, there is now a beautiful, full-featured canvas-based Wiggle track type. Third, we have a very powerful new click system that allows JBrowse administrators complete flexibility in configuring what happens when a user left- or right-clicks a feature in an HTML-based feature track, including right-click context menus.

A demonstration of JBrowse 1.5.0 showing a test BigWig-based wiggle track (alongside an old-style image-based wiggle track for comparison) can be seen here, and a whole-genome RNA-seq profile of tomato, with corresponding gene models, can be seen here.

As usual, this release comes in two flavors: the “minimal” release (JBrowse-1.5.0-min.zip – 2.8M) that includes only the software and documentation necessary to format your own data and run the browser, and the “full” release (JBrowse-1.5.0-min.zip – 27.2M) that includes the developers’ test suite, more sample data files, and developer documentation.

Here is the full list of new improvements in 1.5.0:

  • Added a direct-access storage driver for BigWig data files, based
    on code from the Dalliance Genome Explorer by Thomas Down. BigWig
    file access is supported now by the current versions of all major
    browsers except Internet Explorer (which is expected to work when
    version 10 is released along with Windows 8).

  • Added a canvas-based wiggle track implementation for quantitative
    data that, when used with the new BigWig storage backend, removes
    the need to pre-generate rendered images of wiggle data. Its
    display is also highly configurable, with configuration options
    modeled on the GBrowse wiggle_xyplot glyph type
    (i.e. Bio::Graphics::Glyph::wiggle_xyplot).

  • Added highly configurable behavior for left-clicking and
    right-clicking features in HTML-based feature tracks. If a
    menuTemplate option is specified in the track configuration,
    right-clicking a feature brings up a context menu, the items in
    which can be configured to do nearly anything, but that are easy to
    configure for the very common use case of wanting to display
    content from a certain URL. Feature left-clicks are also
    configurable using the same mechanism. Thanks to Alexie
    Papanicolaou and Temi Varghese for the initial implementation of
    context menus.

  • Improved the default HTML feature left-click dialog box. It is now
    both prettier, and more comprehensive, displaying all available
    data for the feature.

  • Added a small helper script, add-track-json.pl that developers
    and advanced users can use to programmatically add a block of track
    configuration JSON to an existing JBrowse configuration file.

  • Improved / fixed vertical alignment of sub-elements of HTML
    features, including subfeatures and the arrowheads that show
    strand. All elements in a feature are now vertically centered by

Posted in Software releases | Leave a comment

JBrowse 1.4.2 released

JBrowse 1.4.2 has been released, containing some small fixes for issues in the 1.4.1 release.

Changes in this release:

  • Restore support for histScale, subfeatureScale, and labelScale in --clientConfig command-line options and track configuration JSON. Thanks to Hernán Bondino for pointing this out.
Posted in Software releases | Leave a comment