Skip to main content

2023 year in review

· 3 min read

Hello all, as we wrap up the year, we can see that 2023 was a big year for JBrowse 2!

New "Faceted track selector" feature

We added a new "Faceted track selector" feature to JBrowse 2, similar to the JBrowse 1 version! This provides a data grid view of your tracks, with multiple levels of filtering capability

New theming features with dark mode support

We added the ability to choose between custom themes, which was specifically beneficial for delivering better dark mode support

SVG export of all view types

SVG export is a highly requested feature, as it enables publication quality exports of the JBrowse 2 visualizations.

This made it so synteny views, dotplot views, breakpoint split view, and circular view were all supported by the SVG export functionality!

Publication of the JBrowse 2 paper

We finally published our JBrowse 2 paper! This followed our biorxiv pre-print almost a year earlier https://genomebiology.biomedcentral.com/articles/10.1186/s13059-023-02914-z

Mac M1/M2 builds for JBrowse Desktop

This let's JBrowse Desktop take advantage of speed improvements in Mac M1/M2.

Note: we only realized we weren't publishing the right builds after a user told us that JBrowse Desktop required virtualization!

Moral of the story, feel free to let us know if you run into any problems :)

New @jbrowse/react-app NPM package

The @jbrowse/react-app package enables the NPM installation of the jbrowse-web (which is otherwise deployed as a folder of pre-built js/css/html).

We still envision jbrowse-web to be the typical way that most users deploy the app, but we think the availability of the NPM package is important for certain use cases.

Office hours and community meeting outreach effort

In Fall 2023, we created a new effort to do office hours where users can schedule 1-on-1 meetings with the dev team.

We have already conducted

  • 6 1-on-1 office hours meetings
  • 3 community meetings

We met a diverse group of users via these sessions who we had not talked to through other channels like GitHub issues/discussions. We look forward to continuing these meetings through the new year!

New structural variant visualization features

We have long had the 'circos' view of structural variants, but in 2023 we added 'arc style' rendering of SVs in the normal linear genome view from either "breakend style" VCF, "symbolic style" VCF (<INV>, <DEL>, <DUP>, <CNV>), or BEDPE

Improved synteny scalability

In v2.10.0, we created a new way to load 'indexed PAF files' that we call PIF files.

This greatly improves the speed and scalability of loading synteny data, since it allows you to load just the alignment data in a region of interest instead of the whole file!

Track selector improvements

We created a new feature for keeping track of your "Recently used tracks" and "Favorite tracks", which we think will be helpful especially for instances with large track lists!

New JBrowseR and jbrowse-jupyter releases

We have renewed our efforts and released new versions of JBrowseR and jbrowse-jupyter.

Notebook style usages of JBrowse 2 with R and Python are very compelling for certain use cases, and we look forward to seeing more usages of this in the new year!

New plugins

This year we introduced a new JBrowse 2 MAFViewer plugin (https://github.com/cmdcolin/jbrowse-plugin-mafviewer), for viewing multiple alignment format files. We have already seen integrations where a Cactus pangenome can be exported into MAF and loaded into the MAFViewer track using workflows from https://github.com/ComparativeGenomicsToolkit/cactus/blob/master/doc/progressive.md#maf

Looking forward!

We look forward to the new year, and thank everyone for their support, bug reports, and participation

v2.10.0 Release

· 3 min read

New file format for synteny tracks - PIF

This release adds a new synteny file format PIF ("pairwise indexed format"). It is essentially a small transformation of PAF ("pairwise mapping format") that allows querying the format using tabix.

Preparing a new PIF file

To prepare a PIF file, you can use the @jbrowse/cli tool:

Old workflow

minimap target.fa query.fa > query_vs_target.paf
jbrowse add-assembly target.fa
jbrowse add-assembly query.fa
gzip query_vs_target.paf # optionally gzip paf
jbrowse add-track query_vs_target.paf.gz -a query,target

New

minimap target.fa query.fa > query_vs_target.paf
jbrowse add-assembly target.fa
jbrowse add-assembly query.fa
jbrowse make-pif query_vs_target.paf # generates pif in same folder
jbrowse add-track query_vs_target.pif.gz -a query,target

Conceptually, the PIF file is just a tabix file that allows querying the PAF from either the query->target or the target->query.

Note: We have not yet improved the amount of data needed to view whole-genome overviews of the whole genome alignment, but we anticipate looking into this soon

Impact of using PIF vs PAF

This screenshot shows the example impact of loading a synteny track in the linear genome view: the indexed PIF track allows only a small amount of data to be downloaded, and so it is rendered much quicker. The data is exactly the same as a PAF file

Share link for the screenshot above https://jbrowse.org/code/jb2/main/?config=test_data%2Fhs1_vs_mm39%2Fconfig.json&session=share-DMGteXDmT3&password=6TIWA

Other new features in this release

  • added ability to create highlighted regions from the bookmark widget
  • click-and-drag or wheel side-scroll in the 'synteny area' of the linear synteny view. additionally, right context click on synteny features
  • added support for lzma compression in CRAM files (via @gmod/cram@v2.0.0)

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.19 $ lerna-changelog --silent --silent --next-version 2.10.0

2.10.0 (2023-12-15)

🚀 Enhancement

  • core
    • #4138 Speed up large FromConfigAdapter usages with alternative adapter id calculation (@cmdcolin)
    • #4114 Improve pluginManager.jexl typescript definition (@cmdcolin)
  • Other
    • #4135 Split "recently used tracks" local storage keys by view assemblies (@cmdcolin)
    • #4003 Adds the ability to highlight regions using the bookmarks widget (@carolinebridge-oicr)
    • #4123 Remove session.notify after using the Add track workflow (@cmdcolin)
    • #3859 Add new pairwise indexed PAF adapter format with CLI creation workflow (@cmdcolin)
    • #4109 Allow right clicking synteny features (@cmdcolin)
    • #4110 Scroll both panels of the linear synteny view when side scrolling the middle panel (@cmdcolin)
    • #4108 Convert to floating-ui for tooltips for small speedup (@cmdcolin)
    • #4107 Refactors and bundle size improvements (@cmdcolin)
  • app-core, core
    • #4134 Add ability to click and drag synteny area of synteny view to side scroll (@cmdcolin)

🐛 Bug Fix

  • Other
  • core
    • #4136 Fix "Export SVG" feature in next 14 (@cmdcolin)
    • #4125 Fix internet accounts not being shown in file selector after page refresh and hide HTTP basic internet accounts (@cmdcolin)
  • app-core, embedded-core
    • #4121 Fix view menu checkboxes not responding in some cases (@cmdcolin)

📝 Documentation

  • app-core, product-core, web-core

🏠 Internal

Committers: 2

v2.9.0 Release

· 2 min read

This release adds a new feature for keeping track of your "Recently used tracks" and tagging "Favorite tracks" . This will be valuable especially to users and organizations who have large tracklists!

Screenshot showing "Recently used tracks" dropdown menu

We also added the ability to load "single file hubs" from UCSC. These must be manually pasted in the "Add connection" but in the future, we may add ability to auto-load the hubs via the URL bar or similar. You can find a large amount of these single file hubs from GenArk! https://hgdownload.soe.ucsc.edu/hubs/

Finally, this release also fixes an issue people saw with auto-updates for JBrowse Desktop on Mac failing.

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.19 $ lerna-changelog --silent --silent --next-version 2.9.0

2.9.0 (2023-11-30)

🚀 Enhancement

  • Other
    • #4070 Add support for single file hubs (@cmdcolin)
    • #4096 Allow searching by gene name using linear synteny view (@cmdcolin)
    • #4068 Allow searching the text-index by gene name from the URL bar (@cmdcolin)
    • #3948 Make the default setting for the dotplot/synteny views use 'Existing tracks' by default (@cmdcolin)
    • #4039 Adds "Favorites" and "Recently used" track categories to the track selector (@carolinebridge-oicr)
    • #4067 Add arc plugin to @jbrowse/react-linear-genome-view core plugins (@cmdcolin)
  • core, product-core
    • #4091 Allow hiding subfeatures in the feature details panel (@cmdcolin)

🐛 Bug Fix

  • core
  • Other
    • #4095 Fix faceted metadata header names colliding with non-metadata header names (@cmdcolin)
    • #4071 Fix Mac auto-updates fetching non-existent zip (@cmdcolin)
    • #4062 Fix duplicate key error in hierarchical track selector from using connections (@cmdcolin)

Committers: 2

v2.8.0 Release

· 2 min read

This release improves support for BEDPE and arc rendering of structural variants.

It also adds a new CLI command called jbrowse sort-gff that intends to help simplify the loading of GFF tabix tracks.

Usage:

jbrowse sort-gff yourfile.gff | bgzip > yourfile.sorted.gff.gz
tabix yourfile.sorted.gff.gz
jbrowse add-track yourfile.sorted.gff.gz --load copy --out /var/www/html/jbrowse2

The jbrowse CLI tool can load BEDPE files with simply jbrowse add-track yourfile.bedpe (or, optionally gzipped e.g. yourfile.bedpe.gz)

Screenshot showing the same data rendered as both a BEDPE file and VCF file with different variant types (<DUP>, <DEL>, <INV>, <TRA>). Notably, this arc rendering can render 'cross-region' or 'inter-chromosomal' arcs.

Also, if you haven't seen it, check out our new office hours and community call schedule! See https://jbrowse.org/jb2/blog/2023/11/03/office-hours/

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.19 $ lerna-changelog --silent --next-version 2.8.0

2.8.0 (2023-11-09)

🚀 Enhancement

  • Other
  • product-core
  • core
    • #4035 Prompt to horizontally flip view when launching linear synteny view on inverted feature (@cmdcolin)
  • app-core

🐛 Bug Fix

  • #4052 Fix browser back button behavior in jbrowse-web (@cmdcolin)
  • #4043 Fix crash in "Open session" widget for sessions that have 'track-less views' (@cmdcolin)

📝 Documentation

Committers: 2

Office hours and community meetings

· One min read

This is a special announcement that we starting a new outreach effort for our users, which will include:

Fill out the poll on our Github Discussion thread here https://github.com/GMOD/jbrowse-components/discussions/4038 and we look forward to meeting you!

v2.7.2 Release

· 2 min read

This creates a universal build for macOS allowing improved performance on M1 type Macs. It also fixes loading bzip2 compressed CRAM files, and adds the information about what is being currently "hovered" to the app session.

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.19 $ lerna-changelog --silent --next-version 2.7.2

2.7.2 (2023-10-27)

🚀 Enhancement

  • core
  • Other
    • #4020 Allow configuring LGV trackLabels setting via config (@cmdcolin)
    • #3999 Example of using customElement + ShadowDOM for @jbrowse/react-linear-genome-view (@AcaDemIQ)
    • #4015 Create MacOS universal build of jbrowse-desktop to help M1 macs (@cmdcolin)
  • core, product-core

🐛 Bug Fix

🏠 Internal

  • core
    • #4005 Refactors and typescript improvements for jbrowse-web loader (@cmdcolin)
  • app-core, core

Committers: 3

v2.7.1 Release

· One min read

This release fixes a issue with jbrowse-desktop failing on certain platforms, adds ability to auto-render links from metadata without adding <a href='...'> tags, and fixes another issue on sparse multi-bigwigs

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.19 $ lerna-changelog --silent --next-version 2.7.1

2.7.1 (2023-10-18)

🚀 Enhancement

  • Other
    • #3986 Allow editing step size and window size of GC content adapter (@cmdcolin)
  • core
    • #3982 Allow rendering semi-circles in the arc renderer + SVG rendering of arcs (@cmdcolin)
  • __mocks__, core
    • #3981 Auto-create HTML links for URLs, and strip HTML tags where they can't be rendered (@cmdcolin)

🐛 Bug Fix

  • Other
    • #3991 Remove some non-functioning options from top level menu in @jbrowse/react-app (@cmdcolin)
    • #3980 Downgrade electron 26->25 to fix screen blanking (@cmdcolin)
  • core
    • #3971 Fix rendering multi-quantitative tracks when blank data is present (@cmdcolin)

Committers: 1

v2.7.0 Release

· 4 min read

This release contains a number of new features and improvements

  • adds the concept of a 'focused view' and keyboard shortcuts for zoom in/out (ctrl or cmd+up/down) and side to side scroll (ctrl or cmd +left/right)

  • make bookmark persistent in localstorage so that they are usable across different sessions

  • upgrades jbrowse-web and jbrowse-desktop to use React 18 and latest versions of mobx+mobx-react+mobx-state-tree, and enable React.StrictMode

Note: embedded users can also opt-into React 18 for their apps, see lgv storybook for details

See the full changelog below for details!

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

2.7.0 (2023-10-04)

🚀 Enhancement

🐛 Bug Fix

  • app-core, core
    • #3959 Remove type any from return value of getContainingView, getSession (@cmdcolin)
  • Other
    • #3946 Fix setting multiple hierarchical defaultCollapsed config options at initialization (@cmdcolin)
    • #3937 Fix dev mode error from LGV overview scalebar (@cmdcolin)
    • #3925 Reduce amount of canvas commands issued to the dotplot renderer (@cmdcolin)
    • #3924 Fix incorrect tick mark label on dotplot axes happening in some cases (@cmdcolin)
    • #3921 Fix hydration warning by only rendering the SvgFeature "selected feature" and "mouseover" client side (@cmdcolin)
    • #3910 Fix feature label offsets in SVG exports with main thread RPC (@cmdcolin)
    • #3905 Fix alignments track infinite loading when applying same "Color by" or "Sort by" setting twice (@cmdcolin)
    • #3904 Fix "Color by"->"Mapping quality" for CRAM files (@cmdcolin)
    • #3902 Fix ability to use plaintext bed in add-track CLI (@cmdcolin)
  • core
    • #3929 Fix mouse getting out of sync while dragging resize handle (@cmdcolin)
    • #3912 Avoid undefined getConf on assembly.configuration safeReference (@cmdcolin)
    • #3887 Add forwardRef to wrapped re-exported lazy components (@garrettjstevens)
    • #3866 Fix calculation of width of "view container title" (@cmdcolin)
    • #3865 Strip alpha from colors for improved SVG export compatibility (@cmdcolin)

📝 Documentation

  • #3957 Add error handler example for embedded components (@cmdcolin)
  • #3913 Add color scheme for pathogenicity for ClinVar config_demo track (@scottcain)
  • #3881 Improve some of the extension point documentation (@cmdcolin)

🏠 Internal

  • app-core, core, embedded-core
  • core
    • #3920 Remove some unused "renameReference" code in static/dynamic blocks (@cmdcolin)
  • Other
  • app-core, core, embedded-core, product-core, web-core

Committers: 4

v2.6.3 Release

· 2 min read

Small bugfix release, including some improvements to the ordering of tracks in the track selector. see changelog for details!

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.18 $ lerna-changelog 2.6.3

🚀 Enhancement

🐛 Bug Fix

  • #3839 Fix bug where multi-quantitative tracks plotted incorrectly for some bigwigs with empty regions (@cmdcolin)
  • #3837 Fix text layout in dotplots with long coordinate strings (@cmdcolin)
  • #3825 Fix SVG export compatibility by removing rgba strings (@cmdcolin)
  • #3814 Fix suspense fallback to track container for lazy loaded display components (@cmdcolin)
  • #3808 Fix track ordering of hierarchical track selector to more closely match the config.json (@cmdcolin)
  • #3806 Fix a bug on the BookmarkWidget mui data grid where labels were not saving (@carolinebridge-oicr)
  • #3804 Fix version missing from about menu in @jbrowse/react-app (@cmdcolin)

🏠 Internal

Committers: 3

v2.6.2 Release

· 2 min read

This is a small bugfix release. We removed source maps to avoid some typescript warnings for consumers of our NPM packages. This means our "src" is no longer published to NPM.

We also fixed the "Stranded sequencing" coloring option on alignments tracks, which is especially useful for stranded paired-end RNA-seq and renamed the option to "Color by->First of pair strand", which corresponds to the terminology of IGV.

Figure showing stranded paired-end RNA-seq data with a positive and negative strand gene in view

Downloads

To install JBrowse 2 for the web, you can download the link above, or you can use the JBrowse CLI to automatically download the latest version. See the JBrowse web quick start for more details.

yarn run v1.22.18 $ lerna-changelog 2.6.2

🚀 Enhancement

🐛 Bug Fix

  • Other
    • #3798 Fix VCF feature starting at 1-based 1 (@cmdcolin)
    • #3775 Fix stranded RNA-seq rendering and rename option Color by -> "First-of-pair strand" (@cmdcolin)
    • #3758 Adds safety checks on AlignmentsDisplay properties to avoid undefined rendering (@carolinebridge-oicr)
    • #3770 Fix potential issue with display searchFeatureByID being undefined (@cmdcolin)
  • core
  • app-core, core, embedded-core, product-core, text-indexing, web-core
    • #3771 Use inlineSourceMaps for tsc builds and other misc changes (@cmdcolin)

🏠 Internal

Committers: 3