Gene, ProcessedTranscript, and Segments glyphs can now render third-level subfeatures
(such as stop_codon_read_through features) as simple boxes that draw on top of the
main segment glyph. Thanks to @mpoelchau for pointing out the need for this!
(issue #584, @rbuels)
CanvasFeatures tracks, when guessing which glyph to show for a feature in a track
that does not specify glyphs in its configuration, will now use a Segments glyph
instead of a Box glyph if the feature in question has subfeatures, and is not
otherwise recognized as a gene or processed transcript. @rbuels
Added a check in the setup.sh script for NodeJS >= 6 and NPM >= 3.
(issue #1026, @rbuels)
Plugins that don't need CSS can now set jbrowsePlugin.css to false in their
package.json files to prevent JBrowse trying to load their css/main.css file,
if they don't use any CSS. (@rbuels)
Improve VCF tracks support for GVCF generated by GATK, and fix a number of related
VCF details display bugs. (issue #991, @cmdcolin)
generate-names.pl now supports indexing GFF3 files, enabling better use of
GFF3Tabix tracks. Thanks to @billzt for the initial implementation!
(issue #780, issue #900, @rbuels)
CanvasFeatures ProcessedTranscript and Gene glyphs now support a "style→utrHeightPercent" configuration variable that sets the percentage of the overall feature's height that UTRs have. This was previously hardcoded to 65, now it is customizable, defaulting to its old value of 65. @rbuels
Bug fixes
Updated NeatCanvasFeatures and NeatHTMLFeatures plugins to support a gradient
configuration variable, fix rendering of outrons, restore their default
gradient-drawing behavior, disable gradients by default on Alignments and
Alignments2 track types, and clean up their documentation. (issue #931, issue #982,
issue #985, issue #931, issue #992, issue #1011, @enuggetry)
Fixed a bug with plugin loading that was preventing some plugins from working
correctly. (issue #1025, @rbuels)
flatfile-to-json.pl will now refuse to format a track if the trackLabel
contains a '/' character. Thanks to @dytk2134 for pointing this out, and @cmdcolin
for the fix! (issue #1023, @cmdcolin)
Fixed a bug in which the viewing location would not be preserved across page reloads
if generate-names.pl had not been run, or a names store had not otherwise
been defined. Thanks to @cmdcolin for the bug report. (issue #1016, @rbuels)
I'm pleased to announce that JBrowse 1.13.0 has been released!
There are actually not a huge number of new features in this release, but there has been a significant change in the way JBrowse is built behind the scenes, and the introduction of a slight (slight! I hope it's slight!) backward incompatibility with some existing plugins.
JBrowse now uses webpack to build and package its code for consumption by web browsers, which opens up a lot of options for the development team, paving the way for a much nicer road to all of the great things coming down the road in JBrowse 2. Most importantly, it means that we can build JBrowse 2 with modern technologies, while sharing code (particularly data stores) with JBrowse 1, which should greatly accelerate JBrowse 2 development. Yeah, we're playing 4-D chess here.
However, besides the big build system overhaul, there are also some nice new improvements and bug fixes in this release, read below for the full release notes.
JBrowse now uses a Webpack-based build system, which greatly speeds up JBrowse's
initial loading time. More importantly, going forward, this change will also enable us to make much more effective use of the huge node.js ecosystem that has grown up in
recent years, as well as to use newer versions of JavaScript itself while
still maintaining compatibility with older web browsers.
Behind the scenes, the way JBrowse plugins are discovered and loaded has also
changed significantly. The most visible consequence of this change is that
installations that use plugins must now use the JBrowse-1.13.0-dev.zip release
(or check out the master branch from GitHub), and must re-run the webpack build
(most easily by running setup.sh) every time a plugin is added or removed from
JBrowse. Although we think that most users of plugins will not experience any
problems, we recommend that installations that make use of plugins other than the
standard built-in plugins (Neat*Features, RegexSearch, etc) test the compatibility
of their plugins thoroughly before deploying this release, and report any problems
either to the JBrowse issue tracker on GitHub, or to the gmod-ajax mailing list.
Again, concisely: if you use JBrowse plugins other than the "stock" ones that
come with JBrowse, you must now use the dev release of JBrowse, and re-run either
setup.sh or npm run build every time you add or remove a plugin.
(issue #981, @rbuels)
JBrowse plugins can now be published and installed with NPM. Simply publish your
plugin using the standard npm publish machinery, and make sure its package name
ends with "-jbrowse-plugin". For example, if you have a plugin named "foo", publish
it to npm as "foo-jbrowse-plugin". However, if your plugin is named MyAwesomePlugin,
which is not compatible with npmjs.org's naming conventions, you will want to publish
it as something like "myawesome-jbrowse-plugin" and add a configuration stanza to its
package.json file telling JBrowse its real plugin name. Example:
Added disableCollapsedClick and enableCollapsedMouseover track configuration options.
The enableCollapsedMouseover option is useful when features do not overlap e.g.
chromosome segmentation and disableCollapsedClick is useful when the collapsed features
are very dense. Thanks to @rdhayes for tips (issue #544, issue #870, @cmdcolin)
Removed JBrowse 1.2.1 compatibility. Please use JBrowse 1.12.5 or earlier
if you still have old data formatted with JBrowse 1.2.1. (@rbuels)
For npm installations of JBrowse, jb_run.js and jb_setup.js are now installed into
the standard node_modules/.bin location. (issue #1021, @rbuels)
Bug fixes
Fixed a bug in which adding setting tracklabels=0 in the URL failed to hide
track labels when nav=0 was also set in the URL. Thanks to Vaneet Lotay for reporting
the problem, and @cmdcolin for the fix. (issue #1017, issue #1018, @cmdcolin)
Safari versions 10 and 11 will now see buttons for downloading feature FASTA
sequences, as well as other sequences. These were turned off for all Safari
browsers back when no version of Safari could download a client-generated file,
but Safari 10 and 11 support it now. Thanks to @kkara for noticing the button
was missing and prodding us to look into it. (issue #714, @rbuels)
Changed the default color for HTMLFeatures features to be a darker gray that
is easier to see. Many thanks to @colindaven for the fix! (issue #980, @colindaven)
Added the ability to manually specify a reference sequence ordering in the
configuration. Users can now set refSeqOrder: "by_list" and then set
refSeqOrderList: "ctgX,ctgY,ctgZ" to manually specify an ordering.
Thanks to @dsenalik, @liub1993, @wkpalan, and @cmdcolin for valuable
discussions about this, and @rdhayes for the prototype implementation.
(issue #867, issue #919, issue #1007, @rdhayes)
Added a --noSort option to prepare-refseqs.pl that preserves the reference
sequence ordering in the input file, instead of sorting the reference sequences
alphabetically in the JSON. Thanks to @dsenalik for the prototype implementation
of this, and @cmdcolin and @rdhayes for valuable discussions.
(issue #925, issue #924, issue #1007, @dsenalik)
Feature tracks now support a showNoteInAttributes flag that force the feature's
Notes attribute to be displayed as a regular attribute in the feature detail
popup. This is to support the case in which users want the blue description text
on a feature to be different from the feature's Notes attribute, but still display
the Notes attribute in the detail dialog. Thanks to @loraine-gueguen and @cmdcolin
for the idea and the implementation. (issue #885, @cmdcolin)
When users click on an item in the dropdown autocompletion for the browser search
box, the browser will go directly to that item immediately, eliminating the extra
step of the user having to click "Go". Many thanks to @enuggetry for noticing the
opportunity for this nice usability enhancement! (issue #616, issue #1001, @rbuels)
The global highResolutionMode configuration is now set to auto, meaning that
JBrowse by default will now auto-detect high-DPI displays (Apple Retina displays
and similar) and draw canvas-based tracks more clearly on them. This capability
has been present in the JBrowse code for a long time, but has been turned off
by default. (@rbuels)
Added support for two new configuration variables for SNPCoverage tracks:
indicatorProp and indicatorDepth, which set the minimum proportion (indicatorProp)
and minimum depth (indicatorDepth) of alternative alleles required to render the
SNP indicator below a SNPCoverage track. Big thanks to Nathan Haigh for the idea
and implementation! (issue #951, @nathanhaigh)
Added a basic loading screen for when the page is initially loading (issue #1008,
@cmdcolin)
The subfeatureDetailLevel configuration variable for tracks now defaults to a value
of 2, meaning that the builtin JBrowse default feature detail popup dialogs will only
show one level of subfeatures by default. Most feature tracks have only one level of
subfeatures anyway, but for very complex data (like gene models with many transcripts,
each with many introns and exons), this new default will prevent a rather confusing
problem some users were seeing in which JBrowse would seem to 'hang' when clicking a
gene model to see its details. Thanks to @cmdcolin for the original implementation of the
subfeatureDetailLevel configuration variable, @kshefchek for a good bug report that
shows it, and @nathandunn and @selewis for valuable discussions.
(issue #559, issue #1010, @rbuels)
Bug fixes
Fixed a security issue with JBrowse error messages. Thanks to @GrainGenes for
noticing and reporting it! (issue #602, @rbuels)
Fixed an off-by-one error in the "Next segment position" field of BAM features.
Thanks to @keiranmraine for reporting it, and @rdhayes for tracking down the fix!
(issue #907, issue #986, @rdhayes)
Fixed the broken demo track data source in the modENCODE sample data. Thanks
to @cmdcolin for the fix! (issue #999, @cmdcolin)
Fixed bug in which dragging an Alignments or Alignments2 track into a combination
track caused the combination track to crash. (issue #771, @cmdcolin)
Feature detail dialogs for variant tracks now correctly display "no-call" in
the genotype details table for "./." alleles. Thanks to @carrere for reporting
it, and @cmdcolin for the fix. (issue #980, issue #990, @cmdcolin)
Fix parsing of the END field in VCF tracks, enabling things like CNV and deletion
variants to be visualized from variant tracks. (issue #847, @cmdcolin)
Fixed a long-standing bug in JBrowse configuration template parsing that
prevented use of dot-notation nested variable names, e.g. {foo.bar}, in
JBrowse configuration, as well as whitespace inside the braces. Big thanks to
@wuroger for finding this bug. (issue #1012, @rbuels)
JBrowse 1.12.4 has been released, with a great many improvements and bugfixes! Apologies for the long delay since the last release.
One highlight of this release is that we have fixed a severe incompatibility that prevented many of the JBrowse formatting scripts from running correctly on Perl 5.18 and above.
However, there have been a HUGE number of smaller improvements and bugfixes, have a look at the release notes below!
Fixed SEVERE performance regression that basically made flatfile-to-json.pl
unusable on Perl 5.18 and higher. Huge thanks to Colin Diesh for tracking
this down. (issue #470, issue #912, @cmdcolin)
Added code to calculate feature density histograms for Tabix-indexed GFF3
(GFF3Tabix) data sources. Thanks to @nathandunn for noticing and fixing
this! (issue #956, @nathandunn)
Added a new "Hide unspliced reads" menu item to Alignments and Alignments2
tracks that filter out reads that have no Ns in their CIGAR strings.
Thanks to Deepak Kunni and Nathan Dunn for their work on this.
(issue #921, @deepakunni3)
setup.sh now uses npm instead of Bower (which is deprecated) to install
dependencies. @enuggetry
Removed legacy wig-to-json.pl and bam-to-json.pl scripts. @rbuels
Added a --trackConfig option to prepare-refseqs.pl to allow injecting
refseq configuration variables at format time. (issue #884, @erasche)
Added trackLabels: "no-block" config feature. Moves track labels/menus
above the features so as not to obscure the features. (issue #901, #490)
Added a --category option to add-bw-track.pl and add-bam-track.pl to
set the new track's category. Thanks to @loraine-gueguen for the implementation!
(issue #911, @loraine-gueguen)
Implemented a built-in node.js Express server jb_run.js for quick JBrowse launching.
@enuggetry
Added an --unsorted option to prepare-refseqs.pl that formats reference sequences
in the same order in which they appear in the input sequence file. Thanks to
@dsenalik for the suggestion and implementation! (issue #924, @dsenalik)
If a track has no key set in its track configuration, JBrowse will now look for
a key in its track metadata, and use that if it is present. Thanks to Loraine
Guéguen for the idea (issue #957, issue #958). @rbuels
Fixed bug in maker2jbrowse script that allows maker2jbrowse to be installed
in system executable directories, and adds a --sortMem option.
(issue #877, @cmdcolin)
Fixed a cosmetic/styling bug with malformed DOM structure in feature detail popup
dialogs. Thanks to Erik Rasche for noticing and fixing this! (issue #882, @erasche)
Added a configuration option that can disable JBrowse's behavior of updating the
browser's title text as the view changes. Thanks to Luka Jeran, Primož Hadalin,
and Nathan Dunn for this! (issue #904, @lukaw3d)
Suppress execution of biodb-to-json.pl on sample data while running setup.sh
on MacOS High Sierra with stock Perl due to an issue with the stock Perl having
broken BerkeleyDB integration, which is needed by Bio::DB::SeqFeature::Store,
the main storage engine used by biodb-to-json.pl. Bug was manifesting as the script
running indefinitely and taking all available disk space.
(issue #945, issue #946, @deepakunni3 and @rbuels)
Mitigate race condition that could sometimes cause duplicate tracks to be shown
when the browser is started with the loc query parameeter set to the name of
a feature. Thanks to Colin Diesh for the fix. (issue #567, @cmdcolin)
Fixed issue in which JBrowse crashed when negative numbers were supplied for highlight
coordinates in the URL. Thanks to @h2akim for reporting, and @cmdcolin for debugging help.
(issue #769, @rbuels)
Add --config command-line option to add-bw-track.pl and add-bam-track.pl
scripts. Thanks to Chris Childers for suggesting this! (issue #620, @rbuels)
Fixed a "cannot read property 'offsetLeft'" error when using touch screens without
the old simple track selector active. (issue #893, @rbuels)
Upgraded to use new Google Analytics API for usage reporting. (@rdhayes)
Fixed bug in which start/stop codons were sometimes not displayed in the sequence
track at certain zoom levels (issue #858, pull req #859, @cmdcolin)
Fixed a regression in which the defaultTracks configuration variable was no longer
respected when set to a comma-separated list. (issue #892, issue #896, @rdhayes)
Made a cosmetic change to Alignments track detail popups, changing "Length on ref" to
be displayed as "Seq length on ref", so that it is displayed more usefully next to
"Seq length". Thanks to @colindaven for the suggestion and implementation!
(issue #939, @colindaven)
Improved the error messages displayed when a JBrowse glyph class fails to load. Thanks
to @scottcain and @cmdcolin for tracking down the issue and improving the error
handling! (issue #968, @cmdcolin)
Added support for an addFeatures URL query parameter that can inject features from
the URL query string. (issue #976, @nathandunn)
Changed the project's git workflow to utilize a dev branch that is separate from
master, with master only being updated when a new release of JBrowse is published.
(issue #975, @enuggetry)
Added a --bigwigCoverage option to add-bam-track.pl to support configuring pregenerated
coverage histograms from the command line. Thanks to @loraine-gueguen for the suggestion
and implementation! (issue #972, @loraine-gueguen)
**We are happy to announce JBrowse 1.12.3 release! **
This release includes a lot of improvements and bugfixes and we thank the community for the support. Some great new features include parsers for new file formats including 2bit format, which can be loaded via prepare-refseqs.pl. There are also new parsers for tabix BED files, tabix GFF and IonTorrent BAM files. Some other improvements include a new noFill option to display BigWig tracks as a scatter plot, the cacheMismatches option that improves performance for BAM files with long reads, and many other small improvements and fixes.
Upgraded build system to install dependencies with bower and
updated to dojo 1.9.8 (issue #718).
Added the ability to load tabix indexed GFF and BED files.
Thanks to Colin Diesh and @zhjilin for contributing (issue #670).
Added ability to open BED files in the "Open track" user interface
(issue #729).
Added ability to access SPARQL and other jbrowse data stores via
CORS. Thanks to the WebApollo hackathon and Eric Rasche for
contributing (issue #679).
Added extra coloring schemes for the Sequence track when using
protein residues. Thanks to Eric Rasche for the idea and
implementation (issue #673).
Added ability to specify custom exporter classes for the "Save
track data" option, for example, adding exporter code in plugins
(issue #682).
Added ability to specify custom name store classes via plugins,
which allows plugins to implement their own search functionality
(issue #732).
Added a timeout for the track feature density calculations which
can aid problems like consistent chunkSizeLimit issues
(issue #540, issue #730).
Added an option to specify multiple highlights, or bookmarks,
using the config file, a remote service, or the URL bar
(issue #668).
Added cacheMismatches option to improve performance when viewing
long-read alignments (issue #860).
Added subfeatureDetailLevel config item to make View details box
only load subfeatures on demand (issue #861).
Added ability to draw scatter plot from BigWig tracks. Thanks to
Keiran Raine for the contribution (issue #741).
Added a fullviewlink option for the URL bar to disable "View full
link" attribute in embedded JBrowse. Thanks to Vivek Krishnakumar
for contributing (issue #813).
Added URL parameter &tracklabels=0 and config parameter to hide
track labels (issue #869).
Added renderAlignment option which creates a per-base alignment
view of the read versus the reference (issue #795).
Added inferCdsParts option which creates CDS subfeatures from a
continuous CDS region for CanvasFeatures glyphs. Thanks to
Vivek Krishnakumar for the contribution (issue #872).
Added events tracks/focus, tracks/unfocus, allowing for context
switching based on selected track.
Bug fixes
Made the menu bar widgets centered again (issue #680).
Fixed error where the sequence track would not load after "Open
sequence file" (issue #831).
Fixed problem with persistant "Error reading from name store"
message. Thanks to Anthony Bretaudeau for contributing the fix!
(issue #820).
Reverted to standard eukaryotic codon set.
Fixed issue where saving session in JBrowse Desktop where plugins
were not saved with session.
Fixed an error if there were numerical values being used as label
or description for the CanvasFeatures type tracks. Thanks to
Eric Rasche for reporting (issue #673).
Fixed some issues where the Gene glyph would not layout some
features correctly. Thanks to Eric Rasche for reporting
(issue #686).
Fixed an issue with JBrowse Desktop where saving session would not
save the tracks that were not visible.
Added fix when using indexed fasta from prepare-refseqs.pl.
Thanks to @billzt for the report (issue #719).
Added a fix for an issue where editing the configuration of files
that were opened by a user didn't work. Thanks to @lpryszcz for
the report (issue #569).
Fixed some inconsistencies where "Open sequence" on file with a
.fasta file extension failed (issue #696).
Fixed issue where track labels would re-appear during scroll
(issue #793).
Added handler for click scrolling in genome view. Thanks to
@exogenesys for fixing (issue #709).
Fixed a rare error that only affected some versions of Chrome
(issue #758).
Removed linear gradients from some NeatFeatures tracks
(issue #721).
Fixed issue where saving GFF3 would fail if the source data
was in VCF format (issue #800).
Fixed issue where there was a mix of plugin declarations
(issue #866).
I'm pleased to introduce two Google Summer of Code students who are working actively on Jbrowse projects:
Pubudu Dodangodais working on a social commenting extension for gene features.
Saksham Saxenais working a module to manage synthetic chromosomes through GitHub.
**Pubudu** is a student of Department of Computer Science and Engineering, Faculty of Engineering, University of Moratuwa. He is planning to continue studies in the areas of Web app/service development primarily with technologies such as JS, ES2015, AngularJs, ReactJs, NodeJs etc, Human Computer Interaction(HCI), machine learning, Bioinformatics and concurrent programming.
Pubudu plays table tennis and enjoys music during his free times. He used to do some photoshop work some time back but kind of stopped it due to the workload of final year project and all. He was also a teaching assistant for 'communication skills' module during the last semester and worked as an intern at WSO2 last year.
It's been a while since we posted on here*, and while the JBrowse-o-sphere has not been silent (there's been plenty of chatter on the gmod-ajax mailing list and the GitHub issues tracker, for example) we think it's high time for an update on the main site.
In part, this update is triggered by the (near-)completion of a state-of-the-JBrowse paper, which should be published soon. That paper describes what's been happening in JBrowse over the past few years, code-wise. You can get a sense of that from the release notes. The (complementary) goal of this blog post is to give some idea of the direction we're headed in.
Kicking the Perl Habit
JBrowse was the spiritual child of GBrowse, and GBrowse was built on the good ship Perl. Sadly, those days belong to a glorious past that has not yet been resurrected in the name of vintage kitsch. Speaking as a hacker who still dreams in Perl (and sometimes talks to myself in Perl while riding the train) I'm proud to be a national monument and I'd be happy to share my memories of the 80's with you... but even I have to admit that I teach Python to my undergrads these days. They need jobs.
The ancient Perl timbers that support JBrowse are showing their age; and that's why we've been adding more and more features that allow the JBrowse client to leave its BioPerl exoskeleton behind. Most of that exoskeleton is oriented toward slurping data out of object relational databases like Chado, or from flatfiles, so as to generate JBrowse-specific JSON-based index files (using Nested Containment Lists) that allow the client to do fast range queries on feature sets.
Fans of Chado need not worry: the JBrowse distribution will keep that functionality around, but the Perl part is less fundamental: the JavaScript client can load many file formats natively now, and can make use of other (more standard) indices, like tabix and faidx in SAMTools.
A direct benefit of this is that it's possible to use JBrowse like a desktop browser, opening local files directly; either by firing up a web browser and pointing it at a JBrowse instance, or by using the new desktop version of JBrowse (built using Electron). The reduced dependency on JBrowse-specific indexing scripts also makes it conceptually a little simpler to feed data to a JBrowse instance from a server.
Repos, Man
Several plugins have been developed for JBrowse and Apollo (indeed, Apollo itself is also a plugin) and there are more on the way, both from our team and from third parties. To help admins find cool plugins, we are developing a plugin repository which will allow developers to register their plugins at jbrowse.org.
We are also close to publishing a registry of publicly accessible JBrowse instances. Over the past year, our analytics suggest that there are at least 2,600 active JBrowse hosts out there. Keeping a central, accessible list of active instances will help model organism databases and other small genome projects become more "discoverable".
Fresh Tracks
We're constantly adding new kinds of track, and there are several in the pipeline. The latest release has NeatFeatures, which finally brings intron hat cartoons to JBrowse.
Mitch Skinner, the visionary and pragmatist who was the first full-time lead dev of JBrowse, once said that "HTML can draw any shape you want, as long as it's a rectangle". Well, that may have been true back in the day, but 97% of web users now have Canvas support (and 99.9% of JBrowse users), and we feel comfortable drawing some diagonal lines.
We're also working on SVG-based tracks that remove some of the ancient legacy limitations imposed on track classes, and can play nicely with d3 for some truly cool viz. Watch for new SVG-based tracks for visualizing population-level variation in the near future.
Tips for the Server
JBrowse can be described as a static site generator: after running the indexing tools, you don't need to execute any code on the server. Just serve up the indices to the client as static files, and you're set. This has some important benefits, notably for performance (it relieves the processing burden on the server and makes distributed servers much easier) and security (e.g. you can in principle use a super-secure webserver like publicfile). However, it's also limiting for some applications.
There's nothing stopping admins from setting up JBrowse as part of a larger dynamic web application, and there are plenty of hooks in the JavaScript code that allow developers to interface to dynamic code. However, up until this point, a systematic "recommended" way to write dynamic JBrowse apps has been lacking.
That's going to change soon: JBrowse is finally growing a server-side. Although, in keeping with our general philosophy about how to do things on the bioinformatics web, our approach to this will be minimal -- and compatible with a wide range of different back-ends.
We're going to begin with basic infrastructure that most server applications will need: specifically, pub-sub messaging for notifying the client of updates. We then want to build some analysis capabilities into JBrowse -- or, more precisely, hook JBrowse up to existing analysis engines. Everyone's favorite workflow manager Galaxy will be top of the list. As usual (and this is something we view as a good sign), the community has gotten there before us: Eric Rasche, who also built an excellent Docker image for JBrowse, has developed a JBrowse Galaxy tool, which we will certainly be hoping to build on.
We recognize that there are other web-based job control shells apart from Galaxy, and some (e.g. iPlant) are already working with JBrowse. Our current plan is to write a (thin) abstraction layer that allows JBrowse to talk to Galaxy or other web shells for job control.
Dashes and Mashes
We think a big part of the future of JBrowse is in building rich, integrated bioinformatics web apps of which the genome browser is just one component. The kind of thing that used to be called a mashup but now (rather more professionally and stylishly) is known as a dashboard.
OK, technically mashups and dashboards are different: a mashup combines visualizations of multiple data sources, while a dashboard combines multiple controls in a single interface. Bioinformatics web apps, though, typically do both.
Some examples of what one might do with this sort of hybrid:
a phylogeography dashboard, combining genome/popgen views with geographical views (e.g. Google Maps)
a systems biology dashboard, combining genome view with gene network/ontology browsers, allowing visualization of RNA-seq experiments at pathway level (e.g. using Cytoscape) as well as the reference-aligned reads
a molecular evolution dashboard, with integrated browsing of phylogenetic gene trees and multiple sequence alignments (e.g. using BioJS components), alongside species trees and syntenic relationships between genomes
And so on... now, to be clear, lots of people are dreaming about, or doing, thingslikethis. We want to make JBrowse play well with those efforts, and with future dashboards/mashups in the same vein. Some critical steps are required.
First, on the UI side, JBrowse must play nicely inside a DIV or inside a jQuery element (this is in process), and must be 100% programmatically controllable via the JavaScript API (this is mostly true already).
Second, on the server side, some aspects of the basic infrastructure need to be fleshed out; for example, notifications of changes to the sequence and/or track sets. As noted above, this is very much a part of our plans.
Social, Personal
Like Mark Zuckerberg, we really just want to connect people. Some of the coolest applications that has been built with JBrowse are the collaborative ones for distributed and/or crowdsourced curation of genome features, like Apollo and Afra. We're also very excited to make JBrowse work better with personal genomics sites like myvariant.info.
We want to enable more stuff like this, and are offering several Google Summer of Code projects this year. At least one of these is social in nature (developing a chat plugin for JBrowse) and another, offered by François Moreews and Thomas Darde, uses Docker to deploy personal JBrowse instances.
That's All For Now
Watch this space for more updates!
~Ian
Updated 2/25: There are a lot of issues still on the GitHub tracker that we plan to get to but I haven't mentioned here. James Gilbert on Twitter asked about flipping the view to the reverse strand, which is issue #170 on GitHub. Rest assured that just because I didn't necessarily mention every last one of them here, that doesn't mean we've forgotten about them. We do still plan to get to those issues and to keep upgrading and refining the UI.
* OK, there was the 1.12 release, but you know. A while since we just pontificated for the hell of it.
We are happy to announce JBrowse 1.12.0 release! This new release includes some exciting new features including the ability to load new genomes from FASTA and indexed FASTA formats; in-line refseqs, and server-free desktop applications for Windows and OSX (based on Electron). New plugins beautifully enhances feature rendering with intron hats and gradients in both HTML and canvas tracks, provide URL links to call up tracks by category URL, among others. Improvements include the ability to load custom histograms for tracks loaded from flatfile-to-json.pl; a new wiggle track option scoreType: 'avgValue', which helps preserve continuity when zooming in on certain tracks like GC-content; and the ability to specify the set of startCodons and stopCodons in the config. In addition, several bugs have been addressed.
Added ability to open a new genome in FASTA format from the browser. Also supports indexed FASTA. Thanks to Bradford Powell for the original indexed FASTA contribution (issue #495, issue #647).
Support for inline reference sequence configurations.
Created stand-alone desktop version of JBrowse using the Electron platform for OSX, Windows (issue #647).
New plugins
NeatHTMLFeatures - Add the drawing of introns and gradient features to HTML tracks.
NeatCanvasFeatures - Add the drawing of introns and gradient features to Canvas tracks.
CategoryUrl - Implements a cat= URL option to display tracks for a given category (issue #618).
DebugEvents - a plugin to display global publish and milestone events on the debug console.
HideTrackLabels - Adds a toolbar button to toggle the display of track labels on and off (issue #614).
Minor improvements
Added new menu format to support loading your own genome. The open genome option can be hidden via hideGenomeOption in config, and the classic menu style can be restored via classicMenu in config.
Added ability to load custom histograms for tracks loaded from flatfile-to-json.pl (i.e. override a pre-existing histogram store). See (issue #612).
Added an option for Wiggle tracks, scoreType: 'avgValue', which helps preserve continuity when zooming in on certain tracks like GC-content. It complements the scoreType: 'maxValue' introduced in 1.11.6. Thanks to Han Lin for the pull request (issue #504).
Implement option to have a separate location box from search box (issue #611, issue #652).
Move CSS files into css folder.
Added ability to specify the set of startCodons and stopCodons in the config files. Thanks to Eric Rasche for the contribution (issue #657)!
Bug fixes
Add Travis-CI and jshint linting to build (issue #628).
Fixed a bug where the BAM popup boxes would display some incorrect info due to byte packing. Thanks to Thomas Downs for contributing the fix.
Fixed a bug where grid lines wouldn't render at some particular zoom levels (issue #514).
Fixed a bug where the user's --workdir parameter would be deleted which could have unintended side effects if the --workdir was pointing to important data, but this is uncommon (issue #563).
Allow falsey values to be used in browser.cookie.
Fix minor issue where sometimes the length field of refSeqs.json was missing.
Fix some issues that occurred when a reference sequence was named '0' (issue #662, issue #610).
I'm pleased to announce JBrowse 1.11.6 is now available! Everybody's feedback, bug reports, pull requests, and feature requests have been invaluable for making this happen. This release includes new UI options for easily setting "Log scale" on wiggle tracks and dynamically changing strandedness on RNA-seq according to multi-segment template flags and splice site (XS) flags. It also includes bug fixes for calculating SNP positions on certain flag combinations in BAM files and for reporting the correct genotypes on certain VCF tracks. Enjoy!
Added the ability to customize the contents of HTMLFeatures and CanvasFeatures mouseover tooltips more extensively. Thanks to David Muller for the original bug report and Colin Diesh for the fix (issue #480).
Added new options for BigWig files to use min/max summary values when zoomed out using scoreType. Thanks to Scott Cain for reporting the issue and to Colin Diesh for the fix (issue #518).
Added a checkbox for wiggle type tracks to have log scale. Thanks to Han Lin for the pull request (issue #502).
Added the ability to display paired-end reads in the same direction on Alignments2 tracks with the "Use reverse template" option. Thanks to Tomaz Berisa and Colin Diesh for their contributions (issue #485).
Added the ability to parse boolean literals from the .conf files.
Added the ability to specify a codon table (or partial codon table) for the Sequence track.
Added the ability to show or hide the main menu bar using the configuration file.
Bug fixes
Fixed "boolean is not a function" error when using CanvasFeatures tracks with the Segments glyph in some situations.
Fixed a dialog box display issue for VCF variants with "no call" specified (issue #513).
Fixed loading files from certain filepaths with special characters. Thanks to Ben Bimber for reporting and helping diagnose the bug (issue #508).
Fixed popup-dialog callbacks not being called on BAM Alignments tracks in 1.11.5.
Fixed systemwide installations of JBrowse perl modules when using Module::Build.
Fixed a bug when displaying SNPs on hard clipped reads. Thanks to Thon de Boer for the bug report and to Colin Diesh for the fix (issue #516).
Fixed a bug when displaying SNPs on spliced alignments. Thanks to GitHub user 09140930 for the bug report and to Colin Diesh for the fix (issue #523).
Fixed a bug that affected some VCF and GFF popup dialogs in some browsers, particularly Chrome 38 (issue #522).
Fixed a bug with the incremental indexing with generate-names that associated the wrong track with the name store. Thanks to Richard Hayes for reporting this issue and to Colin Diesh for the fix (issue #526).
Fixed the --workdir parameter in generate-names.pl (issue #506).
Fixed the display of alternative alleles in the genotype for VCF pop-ups (issue #533).
Fixed an issue where some paired-end read data wouldn't display properly if they had the same start position (issue #521).
Output .htaccess file for generate-names.pl when using the compress option. Thanks to Sebastien Carrere for reporting the bug (issue #541).
Fixed a small bug with being able to scroll past end of chromosome when using the --sizes option to prepare-refseqs.pl (issue #535).
Fixed a small internal code inconsistency with the positioning of the vertical position line. Thanks to Anurag Priyam for the fix (issue #545).
Fixed a small bug with some stylesheets not being able to be used for the CanvasFeatures coloring, for example, LESS stylesheets. Thanks to Anurag Priyam for reporting the issue (issue #527).
Fixed a small bug with mouseovers on Wiggle type tracks. Thanks to Han Lin for finding and fixing this bug (issue #503).
Removed XS tag from the strand calculation for alignments and made it an optional rendering option for BAM files with the "Use XS" option. Thanks to Kieran Raine and the pull request (issue #473).
Added a bugfix that prevented viewing the details of haploid VCF files. Thanks to Colin Diesh for finding and fixing this bug (issue #536).
Added a bugfix for an issue that made browsing very buggy when using private browsing mode in Safari.
Fixed the shortDescription option for the mouseover description of tracks in the Hierarchical track list (issue #553).
Re-added filter options that were missing for SNPCoverage tracks.