@gmod/jbrowse
Version:
JBrowse - client-side genome browser
172 lines (155 loc) • 9.04 kB
Markdown
---
layout: post
title: JBrowse 1.11.0: hierarchical track selector, easier configuration, summary mode
date: 2013-12-19
tags: ["Software releases"]
---
JBrowse 1.11.0 is out today, with some major new features, and, as always, quite a lot of smaller bugfixes and improvements.
But first, the download links:
* [JBrowse-1.11.0.zip](/wordpress/wp-content/plugins/download-monitor/download.php?id=87 "download JBrowse-1.11.0.zip") - 4.7M - [installation quick-start tutorial](/code/latest-release/docs/tutorial/index.html "JBrowse Quick-Start")
<div>file SHA1 49fb7be687c5dff7857d080bf8503cddedea4e51</div>
* [JBrowse-1.11.0-dev.zip](http://jbrowse.org/wordpress/wp-content/plugins/download-monitor/download.php?id=88 "download JBrowse-1.11.0-dev.zip") - 26M
<div>file SHA1 daa4de81cb11f3d1f0406887a1fbc06efdd44fff</div>
Firstly, JBrowse has added** a third track selector type** alongside the existing Simple (small) and Faceted (large) track selectors **called Hierarchical**. It looks like the old Simple track selector (which was the default), except it pays attention to the "category" key in a track's metadata, and if it is present, it organizes the tracks into nested, collapsible panes based on that. Also, instead of the drag-and-drop paradigm used by the Simple track selector, the Hierarchical track selector turns tracks on and off by just checking and unchecking the box next to each track. I think the checkboxes are probably easier for new users to understand, as well, the Hierarchical track selector is now enabled by default. Those that prefer the old Simple selector can always turn it on by setting trackSelector.type to "Simple" in the jbrowse_conf.json file or the new jbrowse.conf file, which brings me to my next item.
Secondly, JBrowse now has a **additional text configuration format** that is designed to be easier to hand edit, and can coexist and interoperate with existing JSON configuration files. Users of GBrowse will find the syntax very familiar, since its design borrows heavily from GBrowse's configuration syntax. Here's a side-by-side comparison of what you would write in the old JSON and new text configuration formats to make JBrowse use the old Simple track selector.
<table>
<tbody>
<tr>
<th>jbrowse_conf.json</th>
<th>jbrowse.conf</th>
</tr>
<tr>
<td>
<pre>"trackSelector": {
"type": "Simple"
}</pre>
</td>
<td>
<pre>[trackSelector]
type = Simple</pre>
</td>
</tr>
</tbody>
</table>
It's easier to configure tracks in the new format, as well. Here's a typical BAM Alignments2 track configuration in both formats, for comparison.
<table>
<tbody>
<tr>
<th>trackList.json</th>
</tr>
<tr>
<td>
<pre>"tracks": [
{
"storeClass" : "JBrowse/Store/SeqFeature/BAM",
"urlTemplate" : "../../raw/volvox/volvox-sorted.bam",
"label" : "volvox-sorted-bam",
"type" : "JBrowse/View/Track/Alignments2",
"key" : "My BAM track"
}
]</pre>
</td>
</tr>
<tr>
<th>tracks.conf</th>
</tr>
<tr>
<td>
<pre>[tracks.volvox-sorted-bam]
storeClass = JBrowse/Store/SeqFeature/BAM
urlTemplate = ../../raw/volvox/volvox-sorted.bam
type = JBrowse/View/Track/Alignments2
key = My BAM track</pre>
</td>
</tr>
</tbody>
</table>
And for the final headline feature of this release, JBrowse CanvasFeatures, CanvasVariants, and Alignments2 tracks can now be configured to show** feature density histograms or coverage plots** when zoomed too far out to display individual features. They can take this quantitative data from** any type of JBrowse data store** (including REST stores), but most users would want to use a BigWig store. One caveat: this isn't a full-featured quantitative display like a Wiggle/XYPlot track, so quantitative values need to all be greater than 0, and all you can really change about how it looks is its color. Here's an example in the new text configuration syntax of an Alignments2 track that will display either alignments from a BAM file or a coverage plot from a BigWig file, depending on zoom level.
<pre>[tracks.my-bam-with-coverage]
storeClass = JBrowse/Store/SeqFeature/BAM
urlTemplate = my_alignments.bam
type = JBrowse/View/Track/Alignments2
key = My BAM track
histograms.storeClass = JBrowse/Store/SeqFeature/BigWig
histograms.urlTemplate = my_alignments.bam.coverage.bw
histograms.description = coverage plot
histograms.color = #dcdcdc</pre>
Of course, there are many smaller improvements and bug fixes. Read on for the complete release notes.
# Release 1.11.0
## Major improvements
* Introduced density/coverage histogram support for CanvasFeatures,
CanvasVariants, and Alignments2 tracks. These track types now
support an optional `histograms` configuration subsection that can
contain a definition for a second datastore that holds quantitative
data (usually either coverage depth or feature density) to be
displayed when zoomed further out than `featureScale` (or if
`featureScale` is not set, the scale determined by the store's
feature density divided by `maxFeatureScreenDensity`). Thanks to
Richard Hayes for pushing hard for this feature.
* Added a new "Hierarchical" track selector that shows tracks in a
hierarchy of collapsible categories, which is now the default track
selector. To assign categories and subcategories to your tracks,
set `category` or `metadata.category` attributes on each configured
tracks in your `trackList.json`. Thanks to the many users who have
requested this at one time or another.
* JBrowse now supports a new plaintext configuration format that
users of GBrowse will find very familiar, since it is designed to
be very similar to it. This syntax is also much easier to
hand-write than JSON. The JSON configuration syntax is not going
away, and will continue to be supported.
Thanks to Erik Derohanian for the original implementation of this
configuration adaptor, and Richard Hayes and Keiran Raine for
motivating the work to polish and more fully integrate it.
* Variables in configuration files can now be based on the contents
of other variables. For example, setting
"myCustomVariable": "/some/custom/path",
"include": "{myCustomVariable}/conf.json"
will try to include a configuration file located at
"/some/custom/path/conf.json". Interpolation is done as the final
step in configuration loading, so variables can come from anywhere
in the configuration.
* When JBrowse is started, if there are no reference sequences found
in the default `dataRoot`, but the dataset selector is configured,
JBrowse shows a simple list of links to available datasets instead
of the "Congratulations, JBrowse is on the web" page. Thanks to
Saulo Aflitos for the idea and its initial implementation.
* For users wishing to convert existing JSON configuration files to
the new format, there is a new script, `bin/json2conf.pl`, that
does a fair job. Run `bin/json2conf.pl -?` for details on how to
use it.
* Added a new REST backend for name lookup and autocompletion. See
http://gmod.org/wiki/JBrowse_Configuration_Guide#JBrowse_REST_Names_API
for details. Thanks to Erik Derohanian for implementing this, and
Ben Booth for suggesting an API design ([issue #267](https://github.com/gmod/jbrowse/issues/267)).
* Major performance and scalability improvements for
`generate-names.pl`. Now uses a different algorithm that is faster
and more scalable than before, and no longer relies on BerkeleyDB
for temporary storage. This should also alleviate the need to run
generate-names.pl with `--safeMode` in Perl 5.10 and earlier. In
fact, the `--safeMode argument` to generate-names.pl no longer has
any effect. Thanks to Cris Lawrence for pointing out the
continuing need for more scalability.
## Minor improvements
* Detail popups for CanvasVariants and HTMLVariants tracks now
display the reference sequence itself instead of just "ref" in
genotype displays. Thanks to Cris Lawrence for requesting this.
* Added a "save as FASTA" button to default feature detail popups
that downloads a FASTA file with the displayed piece of reference
sequence ([issue #299](https://github.com/gmod/jbrowse/issues/299)).
* `chunkSizeLimit` for VCF files now defaults to 1 MiB. It used to
be 15 MiB, which was really far too big for browsers to handle.
* Added support for a `--nameAttributes` argument to
`flatfile-to-json.pl` that takes a comma-separated list of feature
attributes to index for name searching and completions, or 'none'
to not make names searchable.
* Added support for a `nameAttributes` variable in `biodb-to-json.pl`
track configurations that can be set to an array of feature
attribute names to to index for name searching and completions, or
'none' to not make names searchable.
* Add a `--category` argument to bin/wig-to-json.pl that can be used
to set the `metadata.category` of a track.
## Bug fixes
* Fixed a bug in NCList data backed in which feature histograms were
often calculated very incorrectly.
* Fixed a bug in the VCF data backend that caused not all VCF
features to be shown in some files at some zoom levels.