JBrowse 1.9.5 maintenance release

JBrowse 1.9.5 has been released, with some small new features, and fixes for many small issues.

Files for download:

Changes in this release:

  • Added a trackSelector.initialSortColumn configuration variable
    to the faceted track selector that can be used to set the initial
    sort order for the grid in the faceted track selector. Thanks to
    Alexie Papanicolaou for suggesting this.

  • Made Wiggle density tracks indicate out-of-range values using
    separate clip markers at the top and bottom of the color field,
    rather than showing the out-of-range region as a third color (or
    black or white). Thanks to Gregg Helt for suggesting this.

  • Added support for a quickHelp configuration variable that lets
    administrators customize the contents of the Help->General dialog.
    Thanks to Gregg Helt for suggesting this.

  • Rewrote GFF3 direct-access backend to make it more
    standards-compliant and capable of parsing all attributes of a
    feature. Thanks to Jillian Rowe and Colin Davenport for pointing
    out the need for this.

  • Fixed arrowheads on HTMLFeatures not always being visible when the
    viewing region is being panned back and forth. Thanks to Gregg
    Helt for pointing this out.

  • Fixed a bug in which editing a track’s configuration JSON through
    the track menu when the faceted track selector was enabled
    sometimes caused another track to be deactivated. Thanks to Steffi
    Geisen for pointing this out.

  • Fixed a subtle bug in which not completing a track-dragging gesture
    from the Simple track selector into the genome view caused the
    track handle to not disappear from the track selector when the
    track is turned on later. Thanks to Gregg Helt for pointing this
    out.

  • Fixed a bug in which prepare-refseqs.pl can crash when used with
    Bio::DB::Das::BioSQL. Thanks to Brian Osborne for contributing the
    fix.

  • Fixed failures of setup.sh legacy BAM support installation caused
    by samtools taking down their old SourceForge subversion
    repository.

  • Fixed a bug in which highlighted regions were not always drawn
    correctly at initial load time. Thanks to Steffi Geisen for
    pointing this out.

  • Added support for a plugins->[]->location configuration
    attribute, making it possible for plugins to be loaded from outside
    the JBrowse plugins directory.

  • Fixed a bug in which Wiggle track value displays behaved a bit
    oddly with some kinds of mouse movements. Thanks to Gwendoline
    Andres for pointing this out.

  • Added a logMessages global configuration variable that, if set to
    true, records messages on the JBrowse message bus in the browser
    log.

  • Added a workaround for problems with some types of nonstandard Perl
    installations. Thanks to Rebecca Boes for pointing this out.

Posted in Software releases | Leave a comment

JBrowse 1.9.4 maintenance release

JBrowse 1.9.4 has been released, with fixes for a number of smaller issues present in the 1.9.3 release.

Files for download:

Changes in this release:

  • Fixed a bug with configuration handling that preventing disabling
    right-click feature menus, and probably had other undesirable
    effects. Thanks to Daniel Troesser for pointing this out
    (issue #260).
  • Fixed a bug in which facet renaming specified in the
    trackSelector.renameFacets configuration variable was not
    properly applied to facet titles in the accordion widget on the
    left side of the faceted track selector (issue #251). Thanks to
    Jason Gao for pointing this out.
  • Fixed a bug with GFF3 and Sequin Table export of GFF3
    alternate_allele attributes. Thanks to Jillian Rowe for pointing
    this out (issue #256).
  • Fixed some hard-coded image paths that were not respecting the
    setting of the browserRoot configuration variable. Thanks to
    Harry Yoo for pointing this out (issue #258).
  • Fixed a bug in which running biodb-to-json.pl with no arguments
    caused it to crash instead of producing help output. Thanks to
    GitHub user sreyesch for pointing this out (issue #257).
  • Fixed a bug in which some browsers report that
    src/dijit/_editor/nls/commands.js is missing. Thanks to Steffi
    Geisen for pointing this out.
Posted in Software releases | Leave a comment

JBrowse 1.9.3 maintenance release

JBrowse 1.9.3 has been released, with fixes for a number of smaller issues present in the 1.9.2 release.

Files for download:

Changes in this release:

  • Fixed a bug in VCF backend that prevented display of VCF features
    containing lines in which the ALT column was ‘.’ or not provided.
    Thanks to Ignazio Carbone for pointing this out.

  • Fixed a display bug in faceted track selector in which selected
    facets that have no available matches were squashed to the left
    side.

  • Fixed issue with HTMLVariants track type not being available for
    selection from the File->Open dialog.

Posted in Software releases | Leave a comment

JBrowse 1.9.2 maintenance release

JBrowse 1.9.2 has been released, with fixes for a number of smaller issues present in the 1.9.1 release.

Files for download:

Changes in this release:

  • Fixed bug in which JBrowse could not properly display all data in
    BAM files with reference sequence name sections bigger than 64KB.
    Thanks to GitHub user lfgu for pointing this out (issue #245).
  • Made REST feature store backend less sensitive more tolerant of
    stringification of start, end, strand, and score in feature
    JSON. Thanks to Matt Bomhoff for pointing this out.
  • Fixed bug in which URLs for plugin resources were not assembled
    relative to the browserRoot config variable. Thanks to Matt
    Bomhoff for pointing this out.
  • Fixed bug in which missing fields in a VCF variant’s genotype
    prevented display of a variant’s details. Thanks to Jillian Rowe
    for pointing this out.
  • Fixed some minor issues related to the handling of empty BigWig
    files. Thanks to Nathan Boley for pointing this out (issue #252).
  • The trackSelector.type global config variable can now contain
    fully-qualified class names, so plugins can contain their own
    tracklist classes. Thanks to Matt Bomhoff for pointing this out.
  • Moved the “Select tracks” tab used to open the faceted track
    selector downward, so that it does not block access to the left
    side of the reference sequence overview.
Posted in Software releases | Leave a comment

JBrowse 1.9.1 maintenance release

JBrowse 1.9.1 has been released, with performance improvements in both BAM and VCF tracks, and lots of smaller fixes and improvements.

Files for download:

Changes in this release:

  • Significant speed and memory optimizations in BAM data backend
    (issue #242).
  • Significant speed and memory optimizations in VCF data backend.
  • JBrowse now attempts to smooth over mismatches in the naming of
    reference sequences between various datasets. For instance, if a
    BAM file contains reference sequences named like “chrom1”, and the
    canonical reference sequences used in a JBrowse installation are
    named like “chr1”, JBrowse will recognize these two names as
    equivalent for the purposes of displaying the BAM data. This
    behavior can be disabled by setting the global configuration
    variable exactReferenceSequenceNames to true. (issue #239).
  • Removed support for track blockDisplayTimeout configuration
    variable. It never worked very well, and the problem it was meant
    to address (delays caused by large data) are better mitigated by
    maxHeight and the faster rendering offered by canvas-based track
    types.
  • Fixed a bug that prevented displaying some VCF files. Thanks to
    Steffi Geisen for pointing this out.
  • Reduced the default value of maxHeight for canvas-based feature
    tracks (like Alignments2) from 1000 to 600.
  • Fixed a bug in the Alignments track type where BAM features with
    missing mate pairs that are not drawn due to their position above
    the track’s maxHeight caused the track rendering to crash.
    Thanks to Tristan Lubinski for reporting this.
  • If no global refSeqOrder is specified in the configuration, the
    reference sequences are now not sorted. Currently, this means that
    they will appear in the same order as loaded by
    prepare-refseqs.pl. Users with a very large number of (more than
    10,000) reference sequences may wish to avoid specifying a
    refSeqOrder, since sorting the reference sequences is done at
    JBrowse startup time. Thanks to Tristan Lubinski for reporting
    this.
  • Fixed bug preventing display of quantitative data from files loaded
    with flatfile-to-json.pl. Thanks to Gwendoline Andres for pointing
    this out.
  • Instead of quantitative (wiggle) tracks throwing an error when they
    cannot choose a min and max for the display scale, they now just
    make a guess. While probably wrong, this at least has the track
    displaying something, and users can then look up how to fix the
    display scale.
  • Added support for a chunkSizeLimit configuration variable for BAM
    and VCF-based tracks, which defaults to 5MB for BAM and 15MB for
    VCF. When fetching data, if a given region requires fetching a
    file chunk that is larger than this limit, a ‘Too much data’
    message is displayed. This helps prevent speed and memory problems
    when displaying deep-coverage BAM tracks and large VCF tracks
    (issue #242). Thanks to Gustavo Cerquiera (GitHub user cerca11)
    for pushing for progress on this.
  • Fixed a regression in which callbacks and interpolations were not
    evaluated in left-click and right-click menu configurations.
  • Fixed incorrect display of negative values in log-scale wiggle
    tracks. Thanks to GitHub user drusch for pointing this out
    (issue #244).
  • Fixed more minor errors when running under IE 7.
  • Fixed “Max height reached” message sometimes being drawn under
    instead of over HTML-based features.
Posted in Software releases | Leave a comment

JBrowse 1.9.0: VCF support, dataset switching, wiggle track dynamic scaling, REST backend

JBrowse 1.9.0 is out today, with some great new features, and lots of smaller improvements and bug fixes.

Download links:

  • JBrowse-1.9.0.zip – 5.0M – Includes everything you need to display your data on the web with JBrowse, optimized for fast loading speed.
    SHA1 file checksum: 98bc85d50827db05ad89863c723f0fab54af3dfe
  • JBrowse-1.9.0-dev.zip – 28M – Primarily for developers. Includes additional developer documentation, developer test suites, and full copies of Dojo and Dijit.
    SHA1 file checksum: 83bd7c1d630dee7019662f60f0a0b13164e6aa93

Headline features for this release:

  • VCF variants support: we’ve added a new direct-access data backend for reading VCF files that have been compressed and indexed with bgzip and tabix, along with a new track type (HTMLVariants) optimized for viewing the sometimes-huge amounts of detail (particularly genotypes) associated with VCF variants.
  • Wiggle track types now by default choose a y-axis scale dynamically for the region being displayed (set as "autoscale": "local" in JBrowse configuration JSON).  This is a big win for usability!  Thanks to Gregor Rot and Raymond Wan for pushing for this feature!
  • If configured to do so, JBrowse can now display a dropdown dataset selector on the left side of the menu bar (similar to the one in GBrowse) that lets users switch between multiple datasets in the same JBrowse installation.
  • The default “Simple” track selector now has a search input at the top that can quickly filter the list of displayed tracks to find the text you type.
  • JBrowse now ships with a REST datastore backend that lets developers serve data to JBrowse from custom back-end systems.  See the JBrowse REST feature store API documentation on the GMOD wiki.

And the full release notes:

  • Added a direct-access data backend for reading variation data
    directly from VCF files that have been compressed with bgzip and
    indexed with tabix. See the JBrowse Configuration Guide on the
    GMOD wiki for details about how to add directly-displayed VCF files
    (issue #211).
  • Added a new HTMLVariants track type based on HTMLFeatures with a
    feature-details popup optimized for displaying variant details.
  • Added a text box at the top of the simple (i.e. the default) track
    selector that finds tracks in the track list matching the typed
    text (issue #210).
  • Added support for autoscale: "local" in Wiggle, FeatureCoverage,
    and SNPCoverage tracks, which automatically sets the scale of the
    y-axis based on the range of the data being displayed in the
    current view. Thanks to Gregor Rot and Raymond Wan for championing
    the need for this (issue #203).
  • Added an optional dropdown selector in the menu bar that allows
    switching between multiple datasets. To enable it, add a
    datasets array in your JBrowse configuration, and set a
    dataset_id in each of the trackList.json (or other) files that
    are optionally loaded by the dataset selector. See the JBrowse
    Configuration Guide on the GMOD wiki for details (issue #134).
  • Added a new datastore class, JBrowse/Store/SeqFeature/REST that
    fetches data from any back end system that implements the simple
    REST API it uses. See the JBrowse Configuration Guide for details
    on how to implement its REST API. Thanks to Brett Thomas, Daniel
    Troesser, and Brad Chapman for pointing out the need for this
    (issue #227).
  • By default, JBrowse now continuously updates the browser’s URL bar
    to contain a URL that will show the current JBrowse view directly.
    This is enabled by default only if JBrowse is running from the
    default index.html included in the JBrowse distribution.
  • HTMLFeatures, Alignments, and Alignments2 tracks now accept a
    maxHeight configuration variable specifying the maximum displayed
    height of a track in pixels. Features that would cause the track
    to grow beyond its maximum height will not be drawn (issue #222).
  • The refSeqDropdown configuration variable; the reference sequence
    selector is now shown for any number of reference sequences, with
    its length limited by the refSeqSelectorMaxSize variable (see
    next item).
  • Added support for optional refSeqSelectorMaxSize and
    refSeqOrder global configuration variables that set the maximum
    length of the reference sequence dropdown selector, and specify the
    sort order of the reference sequences in that selector,
    respectively. One instance in which this is particularly useful is
    in displaying annotations on early-stage, incomplete genomic
    assemblies: to display the N biggest contigs in the assembly in the
    reference sequence selector dropdown, one can set refSeqOrder to
    length descending, and set refSeqSelectorMaxSize to N. Thanks
    to Ignazio Carbone for pointing out the need for this. (issues #234
    and #235).
  • Fixed some bugs causing memory leaks when scrolling and zooming,
    especially on tracks with a lot of data like BAM tracks. Thanks to
    Gustavo Cerquiera for pointing this out (issue #220).
  • HTMLFeatures tracks now accept style->label and
    style->description configuration variables variable that can be
    set to a function callback that returns a string with the feature’s
    label or long description, respectively (issue #9).
  • Wiggle/XYPlot, Wiggle/Density, and FeatureCoverage tracks now
    accept function callbacks in their style->pos_color,
    style->neg_color, style->bg_color, and
    style->clip_marker_color configuration variables. Function
    callbacks are passed two arguments: the feature object (with start
    bp, end bp, and score of the quanititative region being shown, and
    the track object (which can be used to access track configuration
    data, along with many other things). (issue #133).
  • Wiggle/XYPlot tracks now accept an array for their variance_band
    argument, allowing users to set the position of the variance bands
    to show (issue #133).
  • Wiggle/XYPlot tracks now accept a style->variance_band_color
    configuration variable, allowing users to set the colors of the
    variance bands. The variance band color should usually be specified
    with a partial opacity. Default is ‘rgba(0,0,0,0.3)’, which is
    black with 30% opacity (issue #133).
  • Added an “About JBrowse” popup dialog, which supports an
    aboutThisBrowser configuration stanza containing a title for the
    main browser window, and a description to be shown in a pop-up
    dialog when the title is clicked (issue #206).
  • Where possible (i.e. supported by the data store), JBrowse will now
    pop up a warning if a local data file is opened that contains no
    data for the current reference sequence (issue #178).
  • Fixed bug in which hard- and soft-clipped regions were erroneously
    counted toward the overall length of a BAM alignment (issue #229).
  • Fixed bug in which dragging the vertical scroll bar marker on the
    right side of the track pane did not behave correctly. (Julien
    Smith-Roberge, issue #223).
  • Fixed bug in which the navigation location for some reference
    sequences can get messed up when ref.start != 0, or ref.end !=
    ref.length (issue #215).
  • Fixed bug in which navigating via sequence dropdown selection
    ignores previous location on selected sequence, whereas with
    navigation text box entering just a sequence name navigates to
    previous location on that sequence (if visited previously). Thanks
    to Gregg Helt for implementing this fix (issue #216).
  • Fixed bug in which the initial default view of a previously
    unviewed reference sequencestarts at 80% centered view, but any use
    of reference sequence selection pulldown takes it to 100%. Big
    thanks to Gregg Helt for implementing this fix (issue #217).
  • Fixed bug in which iframe popups did not display correctly in
    Internet Explorer 9. Thanks to Steffi Geisen for pointing this out
    (issue #233).
  • Improved JSON syntax error messages in server-side scripts (issue #214).
  • Increased the default display timeout (blockDisplayTimeout) on
    HTML-based features tracks from 5 seconds to 20 seconds.
  • Added a new-plugin.pl helper script that makes the skeleton of a
    new JBrowse plugin.
  • Added an add-json.pl helper script that advanced users can use to
    set arbitrary value in JSON files from the command line.
  • Fixed a bug in which the --conf option to prepare-refseqs.pl
    did not support comments in JSON conf files (issue #213). Thanks
    to Keiran Raine for pointing this out.
  • Fixed some missing dojo/dijit nls directories in the non-dev
    release zipfile.
  • Fixed a bug with handling of timeout events in HTMLFeatures tracks.
    Thanks to Matt Henderson of KBase for pointing this out.
Posted in Software releases | Leave a comment

JBrowse 1.8.1 bugfix release

JBrowse 1.8.1 has been released, with several small fixes and additional features, mostly related to displaying features on peptide sequences.

Files for download:

Changes in this release:

  • Added support for cigarAttribute and mdAttributes configuration
    variables to Alignments and Alignments2 tracks, allowing users to
    change which feature attribute is used for showing mismatches
    (issue #200).
  • Fixed some bugs preventing Alignments and Alignments2 tracks
    from working with non-BAM data backends.
  • Added --trackLabel and --key options to prepare-refseqs.pl,
    allowing users to specify the sequence track’s label and title.
  • Added --seqType option to prepare-refseqs.pl, allowing users to
    specify the type of sequences being formatted, usually either
    ‘dna’, ‘rna’, or ‘protein’. Additionally, if –seqType is
    something over than DNA (case insensitive), “showReverseStrand” is
    set to false on the reference sequence track.
  • Added a shareURL configuration option that accepts a JS function
    to assemble the URL that users will get when clicking the “Share”
    button or the “Full view” link in embedded mode (issue #198).
  • Fixed annoying bug in which popup feature detail boxes are
    initially scrolled all the way to the bottom.
Posted in Software releases | Leave a comment

JBrowse 1.8.0: opens local files, new BAM track types, new plugin system

JBrowse 1.8.0 is finally here, with some great new features, and lots of smaller improvements.

Download links:

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

The number 1 new feature is: JBrowse can now open local BAM, BigWig, and GFF3 files that reside on the user’s computer, without the need to transfer any data over the network. For example, if a user is viewing a genome in JBrowse 1.8 at her favorite database website, and she has a 20GB BAM file on her computer for that same genome, she can just open her local BAM file and view it alongside the data from the website, without needing to upload the BAM file anywhere. Give this new feature a try, and let us know how it goes! The File->Open dialog works for remote URLs too, or even mixtures of local files and URLs.

The new file -> open dialog

The new file -> open dialog

There are also two new track types designed for even better display of BAM data:

First, there is the new Alignments2 track type, which is a faster, <canvas>-based track for viewing alignments, including base-level indels and mismatches. It is much more performant when viewing very dense or deep sets of alignments, and is meant to largely replace the HTML-based Alignments track type that was introduced in JBrowse 1.7.0.

Second, there is a new SNPCoverage track, that draws the coverage of alignment features along the genome, along with a graphical representation of SNP distribution, and tables showing frequencies for each SNP. Thanks and great job to Julien Smith-Roberge, a co-op student at the Ontario Institute for Cancer Research for the initial implementation of this!

SNPCoverage track

SNPCoverage track

The last headline feature, which will be of interest primarily for developers, is the introduction of a new plugin system for JBrowse. It’s still a work in progress, the details of the plugin API will probably not be finalized for a while, but the broad strokes of it are set out on the JBrowse Plugin API page on the GMOD wiki.  If you are interested in living on the bleeding edge and  developing a JBrowse plugin, contact the gmod-ajax mailing list, or contact me directly.

And now for the full release notes:

  • Added new “File -> Open” function that can display BAM, BigWig, and
    GFF3 files located on the user’s machine, at remote URLs, or a
    mixture of both. When opening local files, everything is done
    locally, no data is transferred to the server.
  • Added a new “SNPCoverage” track type, designed for use with BAM
    files (but which works with any features that have MD fields), that
    shows a coverage plot with a graphical representation of SNP
    distribution, and tables showing frequencies for each SNP.
  • Added a new “Alignments2” track type, which is a much faster
    implementation of the “Alignments” track type. It is more suitable
    for very deep BAM alignments, but has a slightly different
    configuration scheme.
  • Added a flexible plugin system whereby external code can be loaded
    as part of JBrowse. Plugin JavaScript has full access to customize
    nearly everything in JBrowse. The plugin system is quite new, but
    many hooks are available that plugins can use to safely modify
    JBrowse’s behavior, and more are on the way. See the JBrowse wiki
    for details on how to write your own plugins. Thanks to Gregg Helt
    and the other members of the WebApollo project for helping to drive
    development of the new plugin system.
  • JBrowse feature name indexing (generate-names.pl) now uses an
    all-new hash-based filesystem backend. Although
    generate-names.pl now takes longer to run, it can handle much
    larger numbers of names to index, and uses much less RAM to do it.
    As a side benefit, the JBrowse location box’s autocompletion
    feature is now faster and more reliable. Thanks to Steffi Geisen
    and Volodymyr Zavidovych for pointing out the issues with name
    indexing scalability and reliability.
  • Added support in “HTMLFeatures”, “Alignments”, and “Alignments2”
    tracks for a style.featureScale configuration variable, which, if
    set, specifies a minimum zoom scale (pixels per basepair) for
    displaying features. If zoomed out more than this (i.e. fewer
    pixels per bp), either histograms or a “too many features” message
    will be displayed.
  • Changed binning algorithm of “FeatureCoverage” tracks when zoomed
    out. Now calculates the average base coverage in each bin, rather
    than the absolute number of features that overlap each bin.
  • “HTMLFeatures” tracks now accept a comma-separated list of field
    names in their description configuration variable, allowing users
    to customize which attribute(s) of a feature hold the description.
  • Added a timeout to HTMLFeatures and Alignments tracks to prevent
    data-heavy tracks (like BAM tracks with very deep coverage) from
    freezing or crashing a user’s browser.
  • Improved graphical look of canvas-based tracks during zoom
    operations. Thanks to Mitch Skinner for implementing this!
  • Fixed a bug in which the Y-axis scale for feature density
    histograms in HTMLFeatures tracks was sometimes drawn incorrectly.
  • Greatly improved speed and responsiveness of BAM data backend.
  • Fixed yet another bug that prevented display of some types of BAM files.
Posted in Software releases | Leave a comment

JBrowse 1.7.6 bugfix release

JBrowse 1.7.6 has been released, containing a fix for yet another bug that prevented display of certain kinds of BAM files. The rate of bug reports for BAM support is tailing off, and it’s starting to look pretty solid. Thanks to everyone who has helped!

Files for download:

Changes in this release:

  • Fixed a bug in the BAM direct-access backend that prevented some
    BAM files from being displayed.
Posted in Software releases | Leave a comment

JBrowse 1.7.5 bugfix release

JBrowse 1.7.5 has been released, containing fixes for some more issues found in the 1.7.4 release and earlier releases in the 1.7.x series.

Files for download:

Changes in this release:

  • Fixed a bug in which typing a key that is bound to a global
    keyboard shortcut (currently only ‘t’ or ‘?’) in the location box
    would erroneously execute the action for that global shortcut.
    Thanks to Gregor Rot for pointing this out.

  • Fixed a bug in which toggling ‘Show labels’ in the track menu did
    not re-layout the track on the first toggling.

  • Make columns in the faceted track selector initially each be an
    equal percentage of the total width of the grid. Thanks to Steffi
    Geisen for pointing this out.

Posted in Software releases | Leave a comment