JBrowse 1.10.5 maintenance release

JBrowse 1.10.5 has been released, with some important bug fixes and more performance improvements for data formatting scripts.

Files for download:

Minor improvements

  • Greatly improved the speed and reduced the memory footprint when
    running prepare-refseqs.pl with the –fasta and –gff options.

  • Added an impliedUTRs option to the ProcessedTranscript and Gene
    glyphs for CanvasFeatures tracks. Thanks to Ben Booth for pointing
    out the need for this (issue #348).

  • Upgraded flatfile-to-json.pl to use a new version of
    Bio::GFF3::LowLevel::Parser for GFF3 parser, which has a lookback
    buffer limit that makes it easier to parse large GFF3 files that do
    not contain enough ‘###’ directives.

  • Further improved the memory footprint and speed of
    generate-names.pl. Thanks to Richard Hayes for his continued help
    with testing improvements and reporting problems.

  • Removed explicit dependency on GD::Image, which is only used by the
    old tiled-image generation demo code. This will make dependency
    installation easier for many people, at a (very) small cost to
    backward compatibility.

Bug fixes

  • Fixed a bad bug that prevented combination tracks from working.
    Thanks to Harry Yoo for pointing this out (issue #351).

  • Fixed a bug in which one of the temporary files used by
    generate-names.pl was not being created in the correct location.
    Thanks to Richard Hayes for testing this.

  • Fixed a bug in which generate-names.pl could sometimes crash when
    run with the -v (verbose) switch, or in setup.sh.

  • Fixed odd behavior when entering coordinate ranges in the location
    box under Safari. Thanks to Keiran Raine for pointing this out
    (issue #341).

Posted in Software releases | Leave a comment

JBrowse 1.10.4 maintenance release

JBrowse 1.10.4 has been released, with a new simple sequence-search track tool, large performance improvements for generate-names.pl, and some new filtering options for VCF-based variant tracks.

Files for download:

Minor improvements

  • Rewrote many parts of generate-names.pl, making heavy use of
    temporary BerkeleyDB stores (using Perl’s DB_File module). This
    improves generate-names.pl performance by more than 10x.
  • Added a File->Add sequence search track menu item that can make
    tracks that show which regions of the reference sequence contain a
    given (small) sequence, or match a given regular expression.
    Thanks to Daniel Kasenberg for the initial implementation of this
    (issue #315).
  • Added a CanvasVariants track type, similar to HTMLVariants, which
    utilizes the faster CanvasFeatures rendering backend for displaying
    variant data.
  • Added checkboxes to HTMLVariants and CanvasVariants track menus
    that allow filtering displayed features based on the FILTER
    attribute in a VCF file. In addition to filtering based on the
    presence or absence of PASS, users can filter based on the custom
    filters defined in the VCF header. Thanks to Keiran Raine and
    Andrew Uzilov for suggesting this (issue #344).
  • Added “Hide forward strand” and “Hide reverse strand” checkboxes to
    Alignments and Alignments2 track menus that allow alignments on the
    forward and/or reverse strands to be hidden.

Bug fixes

  • Fixed a bug that prevented indexing of feature aliases in the names
    index when running generate-names.pl.
  • Fixed a bug that prevented proper display of the “ibeam” feature
    class in HTMLFeatures tracks. Thanks to Ed Lee for pointing this
    out.
Posted in Software releases | Leave a comment

JBrowse 1.10.3 maintenance release

JBrowse 1.10.3 has been released, with a lot of small enhancements and important bugfixes.

Files for download:

Minor improvements

  • Added options to Alignments, Alignments2, and SNPCoverage tracks to
    allow hiding reads that are duplicates, fail vendor QC, have
    missing mate pairs, are secondary alignments, and/or are
    supplementary alignments. Thanks to Kieran Raine and Andrew Uzilov
    for pointing out the need for this, and for their input on its
    design (issue #332).
  • Added support for a variables configuration for SPARQL data
    stores that can be used to specify additional variables for
    interpolating into a SPARQL query. Thanks to Toshiaki Katayama for
    suggesting this.
  • Added the ability for Sequence tracks to display a 6- or 3-frame
    translation of the reference sequence. Thanks to Daniel Kasenberg
    for implementing this (issue #221).
  • Added checkboxes in the track menu of Sequence tracks that allow
    users to toggle the display of the forward strand, reverse strand,
    and 6-frame translation.
  • Added support for an addStores variable in the query string of the
    URL used to start JBrowse. This variable accepts store
    configurations (which are a way to specify data sources separately
    from track configurations, so multiple tracks can use the same data
    source) in JSON format. For example, to add a store called
    “urlbam” that points to a BAM file, you could use the JSON:{ "urlbam": { "type": "JBrowse/Store/SeqFeature/BAM", "urlTemplate": "/path/to/my/bamfile.bam" }}

    which, when URI-escaped and put in the query string, looks like:

    addStores=%7B%20%22urlbam%22%3A%20%7B%20%22type%22%3A%20%22JBrowse%2FStore%2FSeqFeature%2FBAM%22%2C%20%22urlTemplate%22%3A%20%22%2Fpath%2Fto%2Fmy%2Fbamfile.bam%22%20%7D%7D

  • Slightly improved performance of generate-names.pl in cases where
    –completionLimit is zero. Also improved the POD documentation of
    the –completionLimit parameter for generate-names.pl. Thanks to
    Richard Hayes for his continued patience.

Bug fixes

  • Fixed some bugs that prevented proper display of BigWig files
    larger than 4GB. Thanks to Keiran Raine for pointing this out.
  • Fixed a major performance bug that unnecessarily slowed down
    display of large BigWig files with Wiggle tracks when autoscale
    is set to “local”.
  • Fixed a bug that prevented display of BAM reads that had MD tags
    but no associated CIGAR string. Thanks to Keiran Raine for point
    this out (issue #330).
  • Fixed a bug in which FixedImage tracks (e.g. legacy image-based
    Wiggle tracks) never take down the “Loading” message when
    displaying on a reference sequence for which no image data has been
    provided.
  • Fixed a bug that prevented rendering of mismatches, insertions, and
    deletions in a BAM read that occurred after a skip. Thanks to Gregg
    Helt for noticing this and fixing it (issue #325).
  • Fixed a bug in which the SNP frequencies calculated by SNPCoverage
    tracks were sometimes incorrect. Thanks to Matthew Conte for
    pointing this out (issue #335).
  • Fixed a bug in which reference sequences with a start coordinate
    other than zero would cause the overview scale track to not be
    drawn correctly. Thanks to Gregg Helt for noticing this and
    working on an initial fix (issue #324).
  • Fixed a bug in which the most recent location visited on a given
    reference sequence was not properly being restored from the saved
    cookie. Thanks to Gregg Helt for the initial fix for this
    (issue #321).
  • Fixed a bug in which event handlers and blocks in CanvasFeatures
    tracks were not being properly cleaned up. The most prominent
    visible consequences of this were duplicate dialog boxes being
    opened when clicking on a canvas feature. Thanks to Keiran Raine
    for noticing this and making sure it was fixed (issue #329).
  • Fixed a bug with flatfile-to-json.pl parsing of GenBank locations.
    Thanks to Steve Marshall for pointing this out (issue #323).
  • Fixed a bug in which SNPCoverage tracks would not always properly
    display error messages when something goes wrong, particularly
    under IE 9.
Posted in Software releases | Leave a comment

JBrowse 1.10.2 maintenance release

JBrowse 1.10.2 has been released, with fixes for some minor issues, and some minor improvements to the CanvasFeatures track.

Files for download:

Changes in this release:

  • Added mouse-over ‘tooltips’ to to CanvasFeatures tracks that show
    the a feature’s label and description when the mouse hovers over
    it. Thanks to Daniel Kasenberg for implementing this.
  • Strand arrowheads in CanvasFeatures tracks now attempt to stay
    visible on the screen, like they do in HTMLFeatures tracks. Thanks
    to Daniel Kasenberg for implementing this.
  • Fixed bugs and inefficiencies preventing JBrowse from handling very
    dense BigWig files. Thanks to Michael Axtell for pointing this out
    (issue #312).
  • Fixed a bug in which features were not always laid out correctly in
    CanvasFeature tracks when the display mode is set to “compact”.
  • Fixed a bug causing the text labels of mismatching bases in
    Alignments2 tracks (i.e. Alignments canvas glyphs) to be slightly
    misaligned vertically when feature labels are turned on (they are
    off by default for Alignments glyphs).
  • Fixed a bug preventing the defaultTracks configuration variable
    from operating correctly.
Posted in Software releases | Leave a comment

JBrowse 1.10.1 maintenance release

JBrowse 1.10.1 has been released, with fixes for some minor issues and one major issue.

Files for download:

Changes in this release:

  • Added support in maker2jbrowse for user-defined source tags in
    GFF3 output from MAKER. Thanks to Carson Holt for contributing
    this fix.

  • NCList data stores (actually the array representation used therein)
    now store feature attribute names case-insensitively.

  • Fixed a bug in which features in canvas-based feature tracks could
    not be clicked in Firefox. Thanks to GitHub user mke21 for
    pointing this out, and to Daniel Kasenberg for fixing my fix to
    work with older versions of Chrome.

  • Fixed a bug with client-side GFF3 parsing in which the strand of
    features was not being correctly parsed.

  • Fixed bug preventing backward-compatibility with 1.2.1-formatted
    data. Thanks to Daniel Kasenberg for implementing this.

  • Fixed a bug in the Gene glyph that caused the browser to crash if a
    gene feature has no subfeatures.

Posted in Software releases | Leave a comment

JBrowse 1.10.0: Combination tracks, better feature tracks, more glyphs, SPARQL support, and track pinning!

After a long, hard development push, JBrowse 1.10.0 is out today!  There are several major improvements in this release, and a huge number of smaller improvements and bugfixes.

Download links

  • JBrowse-1.10.0.zip – 5.2M – Includes everything you need to display your data on the web with JBrowse, optimized for fast loading speed.
    SHA1 file checksum: 8dddbcbc54d5be967b1d381cb6ad8ace671536e7
  • JBrowse-1.10.0-dev.zip – 26M – Primarily for developers. Includes additional developer documentation, developer test suites, and full copies of Dojo, Dijit, and DojoX.
    SHA1 file checksum: 8856e1301d90df93ba4a644bccc48c3b4d6dc07c

Major new features

  • Added powerful combination tracks, which can combine data from
    multiple other tracks using range, arithmetic, or masking
    operations. For example, a BigWig track can be masked to highlight
    only regions that lie within features from a BAM track. Or the
    intersection of two or more feature tracks can be calculated. To
    create a combination track, select “File->Add combination track”
    from the menu bar, and then add tracks to the new combination track
    by dragging them into it. A huge thanks to OICR co-op students
    Julien Smith-Roberge and Daniel Kasenberg for implementing this
    powerful feature. It’s a very significant accomplishment!
  • Added “normal”, “compact”, and “collapsed” feature layout options
    for canvas-based feature tracks (currently just Alignments2
    tracks). Thanks to OICR co-op student Daniel Kasenberg for
    implementing this!
  • Greatly improved the JBrowse/View/Track/CanvasFeatures track
    type, to the point where it is probably ready for experienced
    JBrowse users to use in earnest. It renders features using a
    modular glyph system that GBrowse users will find very familiar.
    To give it a try, simply change the type key in an existing track
    configuration to “JBrowse/View/Track/CanvasFeatures” and add a
    glyph key to set which glyph to use. Glyphs that are currently
    implemented are:

    • Box – draws a box, optionally with an arrow indicating strandedness.
    • Segments – draws a series of boxes connected with a line, for
      features with subparts.
    • ProcessedTranscript – draws CDS and UTR features, with UTRs a
      different color and thinner.
    • Gene – draws a group of aligned ProcessedTranscript glyphs for
      mRNAs that are subfeatures of a top-level gene feature.

    Each of these glyphs have been patterned as near-clones of the
    (very popular) analogous glyphs in GBrowse.

  • Added a SPARQL data backend to allow displaying features directly
    from a SPARQL endpoint. Many thanks to the NDBC/DBCLS BioHackathon
    2012 and 2013 participants for suggesting this and helping with
    this work! See http://www.biohackathon.org for more on this
    fantastic (and I think very important) series of hackathons.
  • There is a new “Highlight” button next to the “Go” button that lets
    a user quickly and easily highlight a region with the mouse.
  • Added the ability to “pin” some tracks to the top of the display,
  • so that they stay at the top of the pane while the rest of the
    tracks are scrolled vertically. Thanks to the WebApollo project
    for suggesting this.
  • Integrated a maker2jbrowse script into the core JBrowse
    distribution. You can now visualize your MAKER results in JBrowse
    with a single command:
    bin/maker2jbrowse -d /path/to/your/maker/master_datastore_index.log
    Thanks to the MAKER team and Yandell lab for providing the initial
    implementation of maker2jbrowse.

Minor improvements

  • Added support for an addFeatures variable in the query string of
    the URL used to start JBrowse. This variable accepts feature data
    in JSON format in the form:[{ "seq_id":"ctgA", "start": 123, "end": 456, "name": "MyBLASTHit"},...}]which, when URI-escaped and put in the query string, looks like:addFeatures=%5B%7B%20%22seq_id%22%3A%22ctgA%22%2C%20%22start%22%3A%20123%2C%20%22end%22%3A%20456%2C%20%22name%22%3A%20%22MyBLASTHit%22%7D%5DDevelopers integrating JBrowse into larger project may find this
    feature useful for displaying results from other
    non-JavaScript-based applications (such as legacy web BLAST tools)
    in JBrowse.Features added to JBrowse in this way are available in a special
    data store named url, which can be specified in a track
    configuration by adding "store":"url".
  • Added support for an addTracks variable in the query string of
    the URL used to start JBrowse. This variable accepts track
    configurations in JSON format in the form:[{"label":"mytrack","store":"url","type":"JBrowse/View/Track/HTMLFeatures"},...]which, when URI-escaped and put in the query string, looks like:addTracks=%5B%7B%22label%22%3A%22mytrack%22%2C%22store%22%3A%22url%22%2C%22type%22%3A%22JBrowse%2FView%2FTrack%2FHTMLFeatures%22%7D%5D
  • Added “Save track data” option to Alignments2 tracks. This option
    should have been there all along, but somehow slipped through the
    cracks. Thanks to Valerie Wong for pointing this out at the 2013
    GMOD Summer School!
  • Statistics about a track’s features are now shown in its “About
    this track” dialog, if available.
  • Added support for a –reftypes argument to prepare-refseqs.pl,
    allowing you to search a database for reference sequences based on
    the type of the reference sequences, e.g. ‘chromosome’. Thanks to
    Gaelen Burke at the 2013 GMOD Summer School for pointing out the
    need for this, and for assistance in testing the new feature.
  • Added a --gbk option to flatfile-to-json.pl that accepts a
    GenBank-format text file as input for loading annotation data.
    Thanks to Justin Reese for the initial implementation of this.
  • When formatting features with flatfile-to-json.pl, multi-valued
    feature attributes are now only flattened (renamed foo, foo2, foo3,
    etc) for “name”, “id”, “start”, “end”, “score”, “strand”,
    “description”, and “note” attributes. Formerly, all attributes
    were flattened. This improves the default display of features that
    have many values for some attributes, such as Dbxrefs or GO terms.
  • Further improved scrolling smoothness of HTML-based feature tracks.
  • flatfile-to-json.pl now supports a --trackType option that can
    be used to set the JavaScript track class that will be used for the
    formatted data (e.g. “JBrowse/View/Track/CanvasFeatures” to use the
    new, improved HTML5 canvas-based feature tracks).
  • biodb-to-json.pl configuration files now support a trackType
    configuration key in each track configuration that can be used to
    set the JavaScript track class that will be used for the formatted
    data (e.g. “JBrowse/View/Track/CanvasFeatures” to use the new,
    improved HTML5 canvas-based feature tracks).
  • prepare-refseqs.pl can now format reference sequences from a
    common .sizes (aka .len) file that is just a two-column
    tab-separated list of reference sequence names and their lengths,
    run like:
    bin/prepare-refseqs.pl –sizes myrefs.sizes
  • prepare-refseqs.pl can now format reference sequences from a
    gzipped GFF3 if the file’s name ends with the suffix “.gz”.
  • Added a ‘–noSubfeatures’ option for flatfile-to-json.pl to skip
    importing subfeatures (since --getSubfeatures is on by default
    for some time).
  • The style.label configuration variable in HTMLFeatures (and
    CanvasFeatures) tracks can now accept a comma-separated string of
    field names in addition to a function callback. Defaults to
    ‘name,id’;
  • The “Save track data” (data exporting) menu now has “Highlighted
    region” as one of the choices of which range to export, if there is
    something highlighted.
  • The “JBrowse” link on the left side of the menu bar, and the
    browser title, now display the “About this browser” title instead
    of JBrowse, if aboutThisBrowser is set in the configuration.
    Thanks to Joanna Kelley at the 2013 GMOD Summer School for
    suggesting this.
  • Tweaked styling of inactive track handles in the default Simple
    track selector to make them look less like pressable buttons.
    Thanks to Pedro Pagan at the 2013 GMOD Summer School for pointing
    out the need for this, and helping to brainstorm how the new styles
    should look.
  • Horizontal mouse-wheel (or trackpad) events can now scroll the
    genome view horizontally. Thanks to Mara Kim for help testing this
    at the 2013 GMOD Summer School.
  • The “content” of configurable information popups (such as can be
    shown when clicking on features) can now accept a dojo/Deferred or
    other promise object that will provide the content to be shown
    asynchronously.
  • Added a JBrowse/Store/SeqFeature/FromConfig feature store adapter
    that can display feature data that is specified directly in
    configuration. This is mostly used to implement the support for
    addFeatures in the JBrowse URL, but some administrators and
    developers may find it conventient as well to define feature data
    directly in the JBrowse configuration.
  • Added a track.maxFeatureSizeForUnderlyingRefSeq configuration
    variable, defaulting to 250 Kbp, that sets the maximum length of a
    feature for which the default feature detail popup will attempt to
    display the underlying reference sequence. Thanks to Colin
    Davenport for pointing out the need for this (issue #291).
  • Added the ability to specify the file name when exporting track
    data to a file. Thanks to Daniel Kasenberg for implementing this.
  • Added a track.noExportFiles configuration variable that, if set
    to true, disables exporting files from the “Save” menu of tracks.

Bug fixes

  • Fixed a bug that prevented clicking on features in Alignments2 (and
    other canvas feature tracks) in Internet Explorer.
  • Fixed a bad design decision with respect to track metadata stores.
    Before, a given metadata key (“Category”, “Conditions”, etc) was
    allowed to only be present in one source of track metadata (CSV
    file, configuration file, etc). The original thinking behind this
    was that it would be better for people to be forced to keep each
    kind of metadata in only one place. This was silly thinking.
    Thanks to the 2013 GMOD Summer School participants for helping me
    to see the error of my ways.
  • Fixed a bug in which turning off the HTMLFeatures track’s “Show
    Labels” did not remove labels for features with descriptions.
  • Fixed a bug with prepare-refseqs.pl in which, when multiple
    definitions of a reference sequence are found (as in a GFF3 file
    with both ##sequence-region directives and a FASTA section), the
    seqChunkSize value is not recorded in refSeqs.json and the sequence
    bases cannot be displayed in the “Reference sequence” track.
  • Fixed a synchronization bug in NCList-based feature data stores
    that causes some features to be missing when displaying with a
    CanvasFeatures track. This bug may also have affected ‘Save track
    data’ (data export) in some situations.
  • Fixed a bug with GFF3 export in which the phase(!) column was
    missing. Thanks to Michael Campbell at the 2013 GMOD Summer School
    for helping track this down!
  • Fixed another bug with GFF3 export in which an extra comma would
    sometimes be added at the beginning of GFF3 lines for some child
    features.
  • Fixed a bug in which the global highlighted region was not correctly drawn
    when switching reference sequences.
  • Fixed a minor bug in which the REST store backend did not coerce
    start, end, strand, and score to be numeric if the input JSON had
    them as strings.
Posted in Software releases | Leave a comment

JBrowse 1.9.8 maintenance release

JBrowse 1.9.8 has been released, with fixes for some minor issues, a performance improvement when many HTML-based tracks are open, and a new yScalePosition configuration option for all tracks can can be set to “left”, “right”, or “center” to change where the y-axis scale is displayed.

Files for download:

Changes in this release:

  • Removed “XX has no data for this chromosome” popup warning message.
    It was just annoying and not very useful.
  • Added an optional “yScalePosition” element to track configs that
    allows configs with Y axes to have those axes positioned on the
    left or right side of the view, as well as in the center. Thanks
    to Alexis Grimaldi for making this change.
  • Fixed a bug in which NCList-based tracks display with an error for
    reference sequences on which they have no data. Thanks to Michael
    Axtell for pointing this out.
  • Improved GFF3 handling in the File->Open tool, fixed a bug in the
    GFF3 parser in which an empty (.) source column caused the GFF3
    parser to crash.
  • Improved scrolling speed when many HTML feature tracks are active.
  • Fixed a bug in which the browser can fail to start for a reference
    sequence that has never been seen before.
  • Fixed a confusing behavior in JBrowse/Store/SeqFeature/REST in
    which the URLs it constructs to fetch from did not always have a
    ‘/’ where one would expect. Thanks to Alex Kalderimis for pointing
    this out.
Posted in Software releases | Leave a comment

About JBrowse version numbers

Just so everybody’s on the same page, I thought I should point out that from 1.2.0 onward, JBrowse version numbers follow a predictable scheme that encodes a bit of information about what is contained in a release.

JBrowse version numbers look like “A.B.C”, where A, B, and C are positive integer numbers, which might have multiple digits.  Each new JBrowse release increments one of these numbers.

Incrementing C means that only bug fixes and small refinements have been added.

Incrementing B means that major new features have been added, and C is reset to 0.

Incrementing A means that major new features have been added, and that the new release is not backward-compatible with previous releases.  B and C are reset to 0.

So, JBrowse 1.9.5 has the same major features as all the other 1.9.x releases, it just has bugs fixed.  JBrowse 1.10.0 (if there is one) will have some major new features not in 1.9.x.  And JBrowse 2.0.0 will have major new features, and will not be (completely) backward compatible with 1.x.x.

(This, by the way, is more or less the semantic versioning scheme proposed at semver.org, which is pretty sensible.)

(Also, this is a cross-post from a message I sent to the gmod-ajax mailing list.)

Posted in Development | Leave a comment

JBrowse 1.9.7 maintenance release

JBrowse 1.9.7 has been released, with an important fix for a race condition that intermittently causes some NCList-based tracks to show the wrong genomic region when the browser is first started, and a fix for a bug in how JBrowse plugin paths are calculated.

Files for download:

Changes in this release:

  • Fixed a bug in which the initial viewing location (passed from a
    URL parameter or similar) is not always set correctly in NCList-based tracks. Thanks to Steffi Geisen for pointing this out.

  • Fixed a bug in which JavaScript paths for plugins were incorrectly
    calculated when a baseUrl global configuration variable was set.
    Thanks to Matt Bomhoff for pointing this out.

Posted in Software releases | Leave a comment

JBrowse 1.9.6 maintenance release

JBrowse 1.9.6 has been released, with a few more bug fixes and a new --workdir option for generate-names.pl.

Files for download:

Changes in this release:

  • Fixed a bug in which the reference sequence selection dropdown menu
    did not work for purely numeric reference sequence names. Thanks
    to Matt Bomhoff for pointing this out.

  • Fixed a bug with some types of BAM files in which not all BAM
    features would be displayed. Thanks to Ignazio Carbone for
    pointing this out. (issue #276).

  • Fixed bug in which File->Open failed to open GFF3 files with
    embedded sequences in a FASTA section.

  • Added a --workdir option to generate-names.pl to allow name
    index building on a faster filesystem than the one that will
    ultimately store the name index. Thanks to Alexie Papanicolaou for
    suggesting this. (issue #273).

Posted in Software releases | Leave a comment