Assets 6

Minor improvements

  • Added support for bgzipped indexed FASTA. To use, bgzip your FASTA with
    bgzip -i file.fa, which generates file.fa.gz and file.fa.gzi and then use
    samtools faidx file.fa.gz. If you specify the .fa.gz in the track config e.g.
    "urlTemplate": "file.fa.gz" and have all three files in your data directory,
    then they will automatically be detected (issue #1152, pull #1200, @cmdcolin)

  • Allow fna and mfa file extensions for FASTA to be recognized by default in
    the Open sequence dialog (issue #1205, @cmdcolin)

  • Improve the layout slightly for dense features (issue #1210, @cmdcolin)

  • Added a topLevelFeaturesPercent configuration variable that can be used to
    correct feature statistics estimates when topLevelFeatures is being used for
    a track, or when it contains deeply-nested features. This configuration variable
    is currently only used by BAM, BEDTabix, GFF3Tabix, and VCFTabix stores.
    (issue #1147, pull #1209, @rbuels)

  • Tabix-based data stores use a new storage backend based on the @gmod/tabix npm
    module. Users should see some modest performance improvements for Tabix-based
    tracks. (issue #1195, pull #1209, @rbuels)

  • Added hideSequenceBox config to allow hiding the FASTA boxes in the View details
    popups. Thanks to @andreamini for reporting (issue #1211, pull #1219, @cmdcolin)

  • Added categoryOrder config to allow sorting the categories in the Hierarchical
    track selector. For example, categoryOrder=VCF,Quantitative/Density,BAM. Note
    that we specify a lowest level subcategory e.g. Quantitative/Density to sort the
    parent category Quantitative to a position (issue #1203, pull #1208, @cmdcolin)

Bug fixes

  • Fixed a bug in which feature labels would sometimes be repeated across the view,
    in the wrong locations. (@rbuels)

  • Fixed error where a chunk size limit error during histogram display would not be
    displayed (@cmdcolin)

  • Fixed issue where Open sequence dialog will open up the default "data" directory
    instead of a blank instance (issue #1207, @cmdcolin)

  • Added check for PCR duplicates for CRAM features (@cmdcolin)

  • Fixed issue where editing the track names and types in the "Open track" dialog box
    was not working when editing multiple tracks (issue #1217, @cmdcolin)

  • Fixed issue in which large VCF headers were not always correctly parsed by JBrowse
    (issue #1139, pull #1209, @rbuels)

  • Fixed issue where the histogram Y-scale bar would appear over features (issue
    #1214, pull #1218, @cmdcolin)

@rbuels rbuels released this Aug 29, 2018 · 101 commits to master since this release

Assets 6

Minor improvements

  • Add ability to automatically deduce the storeClass and trackType of files based on
    the file extension of urlTemplate. This allows very minimal configs where only
    track label and urlTemplate can be specified. (pull #1189, @cmdcolin)

Bug fixes

  • Fixed an issue with servers that use HTTP Basic Authentication on certain browsers,
    notably some Chromium, Firefox 60 and earlier, and Safari. Thanks to Keiran Raine
    for reporting and @cmdcolin for debugging. (issue #1186, @rbuels)

  • Fix issue where searching for reference sequence names would not be navigate to the
    typed in reference sequence (issue #1193, @cmdcolin)

@rbuels rbuels released this Aug 16, 2018 · 126 commits to master since this release

Assets 6

Minor improvements

  • Created "index stats estimation" which overrides the older "global stats estimation"
    that randomly samples genomic regions of BAM, VCF, etc to find feature density. This
    allows initial track load to be faster automatically. (issue #1092, pull #1167,

  • Removed the "full" or "dev" releases from the build. If you need a "dev" release, you
    can simply download the JBrowse "source code" link from the GitHub releases page, or
    use a git clone of the JBrowse repository. This will behave the same as the "dev"
    release. (issue #1160, pull #1170, @cmdcolin)

  • JBrowse now uses a new binary-file caching and fetching backend based on the
    http-range-fetcher and
    tenacious-fetch npm modules. Users
    may see slightly higher performance when viewing indexed binary formats such as BAM,
    CRAM, 2bit, etc. (issue #1155, issue #1175, pull #1165, @rbuels)

  • Updated the main website to use the docusaurus platform. The main docs
    for the website are now moved from the server to You can find
    the latest documentation in the header bar. We hope you will enjoy this upgrade!
    There is also a new quick start guide based on setting up JBrowse with indexed file
    formats. (issue #1153, issue #1137, pull #1173, @cmdcolin)

Bug fixes

  • Added a more robust HTML processing in Util.js. Thanks to @hkmoon for the idea and
    implementation. (pull #1169, @hkmoon)

  • Remove utils/jb_run.js from the minified release (issue #1161, issue #1160, @cmdcolin)

  • Fixes issue where navigating away from genome browser and returning would not remember
    the location. Thanks to Vaneet Lotay for reporting. (issue #1168, @cmdcolin)

  • Fixes off-by-one in the display of the size of the genomic region being viewed. Thanks
    to @sammyjava for the bug report! (issue #1176, @cmdcolin)

@rbuels rbuels released this Aug 2, 2018 · 326 commits to dev since this release

Assets 7

Minor Improvements

  • Add a internal code attribute for XHR requests that use byte-range headers so that if a
    server does not support it, an error is returned immediately. Thanks to @theChinster
    for the motivating example (issue #1131, issue #1132, pull #1134, @cmdcolin).

  • Speed up TwoBit file processing with a robust implementation of the file spec. The
    improvements are contained in a new npm module @gmod/twobit.
    Thanks to @cmdcolin for some testing and motivating examples. (issue #1116, pull #1146,

  • Added feature.get('seq') to CRAM features which enables detailed comparison of the
    read versus the reference with the renderAlignment configuration. (issue #1126,
    pull #1149, @rbuels)

  • Added support for 1000genomes CRAM 2.0 codecs via updates to the @gmod/cram npm module.

  • Add some better formatting for rich metadata in the "About this track" dialog boxes for
    tracks. Thanks to Wojtek Bażant for the idea and implementation! (pull #1148, @wbazant)

Bug fixes

  • Fix bug where prepare-refseqs with indexed FASTA would allows scrolling past the end of
    the chromosome (@cmdcolin).

  • Fix long standing bug related to not being able to configure dataRoot in the config file.
    Now you can set dataRoot=mydirectory to make JBrowse load mydirectory instead of the
    default data by default (issue #627, pull #1144, @cmdcolin).

  • Added hashing of the BAM feature data to generate unique IDs in order to distinguish
    reads that have nearly identical information (same read name, start, end, seq, etc).
    If the reads literally have identical information in them JBrowse is still unable to
    display but this generally seems to be due to limited use case such as secondary
    alignments in RNA-seq (issue #1108, pull #1145, @cmdcolin)

@rbuels rbuels released this Jul 20, 2018 · 377 commits to dev since this release

Assets 7

Major improvements

  • Added support for displaying alignments from CRAM files, using the new npm module @gmod/cram. Thanks to @keiranmraine, @cmdcolin, @nathanhaigh, and the authors of htslib and htsjdk for invaluable test data and suggestions during this major effort. (issue #546, pull #1120, @rbuels)

  • Added support for the CSI index format for tabix VCF/BED/GFF and BAM files! This allows
    individual chromosomes longer than ~537MB (2^29 bases) to be used in JBrowse. To enable,
    use the csiUrlTemplate config to point to the file. The "Open track" dialog also allows
    CSI to be used. Thanks to Keiran Raine for initial report and Nathan S Watson-Haigh for
    catching a bug in the initial implementation! (issue #926, pull #1086, @cmdcolin)

  • Added a new search dialog box via the View->Search features menubar. It will search the
    currently configured store for features. You can also configure the dialog class in the
    configuration with names.dialog entry, or disable search dialog with disableSearch.
    Thanks to the #GCCBOSC hackathon for the idea and feedback (pull #1101, @cmdcolin).

Minor improvements

  • Re-enabled JBrowse Desktop builds for releases! The Windows, Mac, and Linux binaries for
    JBrowse Desktop are uploaded automatically to GitHub releases page. JBrowse Desktop is a
    standalone app that can be used without a web server, similar to IGV or IGB (@cmdcolin)

  • Added a dontRedispatch option for GFF3Tabix stores. Example: set dontRedispatch=region
    if there are very large region biotype features in the GFF that do not have subfeatures
    which will speed up loading times significantly (issue #1076, pull #1084, @cmdcolin)

  • Add auto-lower-casing to the feature.get('...') function, commonly used for callback
    customizations. Now, for example, feature.get('ID') works as well as feature.get('id').
    Thanks to @nvteja for motivating this! (issue #1068, pull #1074, @cmdcolin)

  • Added cache-busting for track config files which actively prevents stale configuration files
    from being loaded (pull #1080, @cmdcolin)

  • Added indexing of both Name and ID from GFF3Tabix files from Thanks to
    @billzt for the implementation! (issue #1069)

  • Made the color of the guanine (G) residue more orangey than yellow to help visibility.
    Thanks to Keiran Raine for the implementation! (issue #1079)

  • Refactored NeatCanvasFeatures and NeatHTMLFeatures as track types. You can enable the track
    style on specific tracks instead of globally this way by modifying the track type to be
    NeatCanvasFeatures/View/Track/NeatFeatures or NeatHTMLFeatures/View/Track/NeatFeatures.
    (pull #889, @cmdcolin).

  • In the location box, allow strings with format ctgA:1-100 e.g. with a hyphen instead of ...
    Big thanks to Nathan S Watson-Haigh for the idea and implementation! The default display
    remains .. but - is allowed. (issue #1100, pull #1102, @nathanhaigh)

  • Allow sequences with a colon in their name to be used in the location box. This includes
    the HLA reference sequences in hg38. Thanks again to Nathan S Watson-Haigh for the
    implementation of this feature. (pull #1119, @nathanhaigh)

  • Fix sensitivity to .gff.gz vs .gff3.gz in GFF3Tabix tracks opened via the "Open track"
    dialog for GFF3Tabix. (issue #1125, @cmdcolin)

  • Feature detail dialog boxes now display subfeatures of features on the reverse strand in
    upstream-to-downstream order, instead of in genomic coordinate order. Thanks to
    @nathanhaigh for suggesting this and contributing the fix! (issue #1071, pull #1114, @nathanhaigh)

Bug fixes

  • Fixed a potential cross-site-scripting (XSS) vulnerability by disallowing dataRoot config
    values or ?data= URL parameters that point to a different server from the one serving
    JBrowse. Users can disable this security check by setting allowCrossOriginDataRoot = true
    in their configuration. (@cmdcolin, @rbuels)

  • Fixed a memory leak that was introduced in JBrowse 1.13.1 in Thanks to
    @scottcain for reporting (issue #1058, @cmdcolin)

  • Fix the error checking in if no node is installed at all (pull #1083, @cmdcolin)

  • Fix calculation of histograms on GFF3 and GFF3Tabix stores. Thanks to @thomasvangurp for
    the bug report and sample data! (issue #1103, @cmdcolin)

  • Fix the representation of array-valued attributes in column 9 for GFF3Tabix. Thanks to
    @loraine-gueguen for the bug report! (issue #1122, @cmdcolin)

  • Fixed a bug in which visibleRegion() in GenomeView.js sometimes returned a non-integer value for end, which interfered with some scripts and plugins. Thanks to @rdhayes for noticing and contributing the fix! (issue #491, @rdhayes)

  • Fixed bug where reference sequences with names containing the : character could not be switched to by typing their name in the search box. (issue #1118, pull #1119, @nathanhaigh)

  • Fixed behavior when node is not installed, printing a decent error message. (issue #1082, pull #1083, @cmdcolin)

Jun 13, 2018
Backport location fix

@rbuels rbuels released this Jun 5, 2018 · 575 commits to dev since this release

Assets 4

Minor improvements

  • Added a datasetSelectorWidth configuration key that sets the width of the dataset
    selector. The width defaults to 15em. Example setting in tracks.conf:

    classicMenu = true
    datasetSelectorWidth = 20em

    Thanks to @srobb1 for pointing out the need for this. (issue #1059, @rbuels)

  • When exporting GFF3 from the 'Save track data' menu, the ##sequence-region pragma now
    specifies the exact sequence region that was exported from the UI. Thanks to @mwdavis2
    for pointing this out! (issue #905, @rbuels)

  • Improved the welcome screen for the desktop version of JBrowse
    (issue #1045, pull #1050, @cmdcolin)

Bug fixes

  • Fixed the --config option for Although documented in the script's POD,
    it was not actually being processed. Thanks to @loraine-gueguen for noticing it, and for
    contributing the fix! (issue #1063, pull #1064, @loraine-gueguen)

  • Fixed a bug in which failed if run twice in a row under some circumstances.
    (pull #1053, @cmdcolin)

  • Fixed a bug in which did not accept nodejs version 10 as sufficiently recent.
    (pull #1048, @cmdcolin)

  • Fixed a bug in which the "Loading..." message erroneously appeared at the top of the
    dataset-selection page. Many thanks to @srobb1 for noticing this and reporting it!
    (issue #1057, @rbuels)

  • JSON syntax errors in the new configuration loading code now have better error messages.
    Thanks to @billzt for pointing out the need for this! (issue #1061, @rbuels)

@rbuels rbuels released this May 2, 2018 · 654 commits to dev since this release

Assets 4

Minor improvements

  • JBrowse now supports .idx indexes for VCFs that are generated by igvtools or GATK. Currently
    only VCF files can be used with this index type, but this could be expanded to other file types
    if users are interested. Thanks to @thon-deboer for suggesting this! (issue #1019, @rbuels)

  • The dropdown dataset selector in "classic menu" mode is now a type-ahead combo box, enabling
    fast searching through large numbers of datasets. Thanks to @keiranmraine for the suggestion!
    (issue #752, @rbuels)

  • There is now a new event named /jbrowse/v1/n/tracks/redrawFinished that fires after the
    view is refreshed, when all of the visible tracks are finished drawing (or have errored).
    Thanks to @scottcain for suggesting this. (issue #1027, @rbuels)

  • Improve the calculation of feature density for GFF3Tabix and add new one for GFF3 in-memory.
    Thanks to @hkmoon for the suggestion! (issue #1039, issue #913, @cmdcolin)

  • Re-enabled JBrowse Desktop builds based on automatically building on Travis-CI
    (issue #1028, @cmdcolin)

Bug fixes

  • Fixed several bugs related to the file-opening dialog's handling of indexed file types
    (bam+bai, gz+tbi, etc). Thanks to @sletort for submitting the bug report! (issue #1033, @rbuels)

  • The Perl formatting tools now properly read include-ed configuration files. Thanks to @carrere
    for pointing out this bug. (issue #551, @rbuels)

  • Fixed a bug in which the faceted track selector was nonfunctional in Internet Explorer 11.
    (issue #1036, @rbuels)

@rbuels rbuels released this Apr 18, 2018 · 747 commits to dev since this release

Assets 4

Major improvements

  • JBrowse now behaves much better when embedded in a webpage without using an iframe. See tests/drupal.htm in the JBrowse code for an example of this usage. Thanks to @laceysanderson for her patiently championing this feature all the way through the long road to completion! (issue #777, issue #844, @cmdcolin)

  • There is a new BigBed store type, for opening BigBed files. An example BigBed track configuration:

        storeClass = JBrowse/Store/SeqFeature/BigBed
        type = CanvasFeatures
        urlTemplate =
        style.label = gene_name,name,id
        style.description = gene_bio_type
  • JBrowse now has much better support for UCSC-style BED and BigBed features, via the new BED glyph type for CanvasFeatures. Rather than rendering a complex feature hierarchy like many of the other CanvasFeatures glyphs, the BED glyph draws sub-blocks with thick and thin regions, for compatibility with the UCSC browser. CanvasFeatures will automatically use the JBrowse/View/FeatureGlyph/UCSC/BED glyph type if a feature has no subfeatures, but has blockCount or thickStart attributes. This means that, in practice, a BigBed file will display very well with just the default configuration. Also for compatibility with the UCSC browser, JBrowse will set a BED feature's background color if one is included in the feature data (turn this off by setting itemRgb = false).

Minor improvements

  • The current dataset name is now displayed in the top right portion of the menu bar. (issue #767, @rbuels)

  • now accepts a --gff-sizes option to allow defining reference sequence sizes from the ##sequence-region directives in a GFF3 file. @rbuels

  • Some store types now support a topLevelFeatures configuration variable, which allows tracks to treat certain types of features as 'top-level', even the actual track data has them as children of other features. One common use case for this would be if you have gene models in a GFF3 structured as gene→mRNA→exon/CDS/UTR, but you want to display the "mRNA" features as top-level, i.e. ignore the gene container that they are in. Now you can set topLevelFeatures = mRNA in the track configuration, and the track will display only "mRNA" features on the top level, ignoring any other existing top-level features, and ignoring the containing "gene" features. This helps address what seems to be a common pain point of having to "filter" tabix-formatted GFF3 before using it with Apollo. One important caveat is that users that configure tracks to use an "out of band" source of feature density or coverage data, like a separate wiggle file that shows feature density, will have to make sure that the density data is correct for this filter setting if they use it. Thanks to @Yating-L, @nathandunn, and @cmdcolin for valuable discussions. Stores that support topLevelFeatures currently are: GFF3Tabix, GFF3, BED, BEDTabix, GTF, and REST (issue #974, issue #969, @rbuels)

  • JBrowse can now accept additional configuration from a data-config attribute on its container element. This is useful for embedding JBrowse in other sites, particularly in cases where the JBrowse assets and configuration are stored or referenced from a different location from the page displaying the embedded JBrowse. For example: html <div class="jbrowse" data-config='"baseUrl": "../jbrowse"' id="GenomeBrowser" style="height: 600px; width: 100%; padding: 0; border: 0;" > </div> would tell JBrowse to look for its configuration and assets at the relative base URL "../jbrowse". @rbuels

  • JBrowse now has a favicon! (issue #973, @rbuels)

  • Added additional caching code to SequenceChunks and NCList stores, reducing duplicate network requests and increasing performance in some circumstances (issue #855, @cmdcolin)

Bug fixes

  • Fix a bug in which saving exported data to a file was nonfunctional for some export data types. @rbuels

  • Fix a bug in which subfeatures were not always fetched correctly when using the GFF3Tabix store (issue #780, @rbuels)

  • Fixed several bugs with specific cases of relative URLs used in configuration. @rbuels

@rbuels rbuels released this Mar 29, 2018 · 937 commits to dev since this release

Assets 4

Minor improvements

  • 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 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)

  • Add ability for the CanvasFeatures feature labels to stay visible on the screen.
    (issue #390, pull #971, @cmdcolin, @rbuels)

  • Improve VCF tracks support for GVCF generated by GATK, and fix a number of related
    VCF details display bugs. (pull #991, @cmdcolin)

  • now supports indexing GFF3 files, enabling better use of
    GFF3Tabix tracks. Thanks to @billzt for the initial implementation!
    (issue #780, pull #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 a UTR 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, pull #1011, @enuggetry)

  • Fixed a bug with plugin loading that was preventing some plugins from working
    correctly. (issue #1025, @rbuels)

  • 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 had not been run, or a names store had not otherwise
    been defined. Thanks to @cmdcolin for the bug report. (issue #1016, @rbuels)