JBrowse 1.11.0: hierarchical track selector, easier configuration, summary mode
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 - 4.7M - [installation quick-start tutorial](https://jbrowse.org/docs/tutorial_classic.html "JBrowse Quick-Start)
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.
jbrowse_conf.json | jbrowse.conf |
---|---|
"trackSelector": { "type": "Simple" } |
[trackSelector] type = Simple |
trackList.json |
---|
"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" } ] |
tracks.conf |
[tracks.volvox-sorted-bam] storeClass = JBrowse/Store/SeqFeature/BAM urlTemplate = ../../raw/volvox/volvox-sorted.bam type = JBrowse/View/Track/Alignments2 key = My BAM track |
[tracks.my-bam-with-coverage]Of course, there are many smaller improvements and bug fixes. Read on for the complete release notes.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
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 thanfeatureScale
(or iffeatureScale
is not set, the scale determined by the store's feature density divided bymaxFeatureScreenDensity
). 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
ormetadata.category
attributes on each configured tracks in yourtrackList.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. Runbin/json2conf.pl -?
for details on how to use it. - Added a new REST backend for name lookup and autocompletion. See https://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).
- 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).
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 toflatfile-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 inbiodb-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 themetadata.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.