Skip to content

@abought abought released this Jan 15, 2020 · 1 commit to develop since this release

  • We have restored and improved gene constraint tooltips, using gnomAD as our new source of data. Using this feature on an existing site will require updating LocusZoom.Datasources options (see below). Tooltips now include o/e constraint metrics and confidence intervals. Genes with no constraint information now hide the table rather than showing blank fields.
    • Currently gene constraint information is only available for build GRCh37
  • Fix a bug where panel titles were sometimes rendered twice

Breaking changes

  • Old layouts using GeneConstraintLZ will need to be updated to use the new gnomAD API URL, as well as to correctly specify the genome build. For example: .add("constraint", ["GeneConstraintLZ", { url: "https://gnomad.broadinstitute.org/api", params: { build: 'GRCh37' } }]);
    • Although we generally try to preserve backwards compatibility, in this case, the old GeneConstraintLZ datasource was designed for a server (exAC) that is no longer available, and no custom datasources were found in an audit of users. Therefore the datasource has been redefined to use a different request and response format based on gnomAD.
Assets 2

@abought abought released this Dec 12, 2019 · 11 commits to develop since this release

New features

  • New datalayer match directive allows users to click on a point, and see corresponding points with the same value on the same/other data layers. The visualization is based on existing configurable layout directives, providing control over point size, point shape, etc.
    • This is an experimental feature; the API and features may change based on user feedback
  • Aggregation test demo now uses real data from a live server and supports more kinds of calculations
  • Add a new widget to select LD population for the plot
    • All examples have been updated to add this widget
    • This widget is designed to work with the LDLZ2 data source, and the UMich LDServer at https://portaldev.sph.umich.edu/ld/ (prebuilt populations are based on those available in the 1000G dataset). We encourage all users to migrate off the old (legacy) LD API ( http://portaldev.sph.umich.edu/api/v1/pair/LD/results ), and enjoy new features made possible by the UMich LDServer.
    • This widget is not part of the default layout, because many old LZ installations are still using the old URL
  • Dashboard widget improvements for developers
    • A new plot-level set_state dashboard widget lets users select an item from a menu to change plot.state. This can be used to modify requests dynamically- eg, to provide configuration options used to make LD requests
    • Developers can now control button text for the "Download" and "Resize to data" buttons
    • Developers can now specify a default filename other than 'locuszoom.svg" for the download image button

Bugfixes

  • The "download plot as image" button is now faster and works more reliably when saving images of large (or dense) plot regions
  • Default layouts and extensions will now more consistently apply the htmlescape filter for user-provided data
  • Fix issues where closed tooltips could reopen when panning, zooming, or other dynamic actions
  • "Full height" vertical lines will now redraw to the correct size when the plot is resized
  • Fix regression where x-axis labels did not update to show region, when the plot was dynamically redrawn

Deprecations/ breaking changes

  • The landing page for LocusZoom has been updated to emphasize CDNs. We no longer upload new versions of Locuszoom in a static asset folder on github; please migrate to using the CDN (or a build system like NPM + webpack) to get the newest code.
  • The syntax for specifying color of phewas scatter plots has changed. Users of the stock layout should automatically be upgraded, but code for custom color schemes may need to be changed.
  • All usages of the Q library have been replaced with native ES6 promises, including in the pre-bundled vendor.js. Custom code may need to be updated. In general this will involve small function renames.
    • locuszoom.vendor.js incorporates a polyfill for modern ES6 Promises, to help existing LocusZoom users ensure support for old browsers.
  • Removed the "gene constraint information" table from gene track tooltips, due to lack of a data provider. This has been replaced with a link to gnomAD.
    • This change was made because the data source (exAC) has been decommissioned, and the new gnomAD API does not yet support bulk queries. We hope to restore this feature in the future.
Assets 2

@abought abought released this Nov 11, 2019 · 20 commits to develop since this release

  • Add a new widget to select LD population for the plot
    • All examples have been updated to add this widget
    • This widget is designed to work with the LDLZ2 data source, and the UMich LDServer (prebuilt populations are based on those available in the 1000G dataset). We encourage all users to migrate off the old (legacy) URL, and enjoy new features made possible by the UMich LDServer.
    • This widget is not part of the default layout, because many old LZ installations are still using the old URL
  • Generic version: the LD picker uses the new plot-level set_state dashboard widget. This can be used to modify requests dynamically- eg, to provide configuration options used to make LD requests
  • Fix regression where x-axis labels did not update to show region
Assets 2

@abought abought released this Oct 7, 2019 · 34 commits to develop since this release

This is a preview release. It contains several minor, though possibly breaking, changes; we have posted it publicly to allow users try it out and give feedback.

New features

  • New data-layer match directive allows users to click on a point, and see corresponding points with the same value on the same/other data layers. The visualization is based on existing configurable layout directives, providing control over point size, point shape, etc.
    • This is an experimental feature; the API and features may change based on user feedback
  • Aggregation test demo now uses real data from a live server and support more kinds of calculations

Bugfixes

  • The "download plot as image" button is now more reliable for large plot regions
  • Default layouts and extensions will now more consistently apply the htmlescape filter for user-provided data

Deprecations/ breaking changes

  • The landing page for LocusZoom has been updated to emphasize CDNs. We no longer upload new versions of Locuszoom in a static asset folder on github; please migrate to using the CDN (or a package manager like NPM) to get the newest code.
  • The syntax for specifying color of phewas scatter plots has changed. Users of the stock layout should automatically be upgraded, but code for custom color schemes may need to be changed.
  • All usages of the Q library have been replaced with native ES6 promises, including in the pre-bundled vendor.js. Custom code may need to be updated. In general this will involve small function renames.
    • Vendor JS incorporates a polyfill, to help existing LocusZoom users ensure support for old browsers.
Assets 2

@abought abought released this Jul 18, 2019 · 68 commits to develop since this release

  • Bugfix: LD source will now correctly pick best variant for non-log pvalues
  • Improve aggregation test demo to use real data from UM/METSIM LDServer
  • Correctly support UMD module usage ; allows import 'LocusZoom'; for core + extensions
  • Documentation fixes

(*) This was released to NPM May 2019, and has been retroactively tagged.

Assets 2

@abought abought released this Dec 19, 2018 · 97 commits to develop since this release

Summary

  • New: configurable build 38 support for all datasources
  • New: label SNPs in a study that are in the GWAS catalog
  • Improve reusability and caching for credible set calculations
  • Forest plots have better support for handling dynamic data
  • Annotation/rug tracks are easier to click, and have a configurable tooltip position.
  • Line track now supports filled curves
  • Plots now support a "width_only" responsive resize mode. This is useful for dynamic layouts or rug tracks (where more control over panel height is desired)
  • The display_options widget has improved control over legends and item labels
  • Improvements for development and debugging
    • Many error messages now log debugging stacktraces to the console
    • Issue console warnings for certain behaviors known to cause broken layouts
  • New plot level event: notify when a panel is removed.
  • Label and element filtering options now support != to test for absence of a value.

Developer notes

Deprecation warnings

  • The original LD Source (LDLZ) is now deprecated. All examples have been upgraded to use LDLZ2, which uses the new Michigan LDServer.
    • The new source supports multiple genome builds and configurable choice of reference panels; the previous LD source does not offer this functionality, and relies on a deprecated server endpoint.
  • The plot builder tool was unmaintained, and has been removed.
  • vendor.js has been updated to use a slightly newer d3 version. (3.5.6 --> 3.5.17)

Features and layout changes

  • Where possible, most "region" data sources (genes, recomb rate, and LD) will respond to a state.genome_build parameter, and automatically attempt to select the best API source for that build.
    • params.source parameter is no longer required for many data sources. To ensure that your plot uses the newest and best version of data available, we recommend using params.build or state.genome_build instead.

Bugfixes

  • Better handling for regions with no data
Assets 2

@abought abought released this Sep 17, 2018 · 136 commits to develop since this release

Allow forest plots to operate on dynamic data from the server

New category_forest layer type that allows ticks and labels to be
determined from the server response, without having to be specified
in the layout in advance

Updated forest plot example to take advantage of these features.

Assets 2

@abought abought released this Sep 13, 2018 · 139 commits to develop since this release

  • Update demonstration pages for recent API changes
  • AssociationSource (AssociationLZ) now provides an optional {sort: true}
    parameter. Some sources do not return association data in ascending order,
    which was causing grey coloring in LD.
Assets 2

@abought abought released this Jun 26, 2018 · 147 commits to develop since this release

LocusZoom 0.8.0 adds a variety of new functionality aimed at interactive, dynamic experiences that help users explore the underlying data behind the plot. This release also adds a new demo showcasing live calculation of aggregation tests in the browser.

If you are already using LocusZoom in a complex page, there may be a few small backwards incompatible changes- particularly around event listeners and custom data sources.

New feature: "Subscribe to Data"

External widgets can now see the same data used by the plot, and update live as new data is received. For example, a table of GWAS variant data variants can update as the user pans left, or filter when a point is clicked. See plot.subscribeToData(fields, successCallback, errorCallback) for details.

New feature: Extensions

The repository now contains a place to register functionality that may be useful, but is separate from (and not required for) the core LocusZoom experience. Each extension must be included separately into your site, after the core LocusZoom JS bundle.

Dynamic URLs

The Dynamic URLs extension makes it possible to create easy sharing links to a plot. It provides a way to load the page at a specific view based on URL query params, and to update that URL as the user interacts with the plot. Clicking the back and forward buttons causes the plot to jump back to a previous view, enabling interactive experiences.

This works best with standard plots and common state parameters like chrom, start, and end. It is possible to serialize more complex behavior, but highly customized views (like dynamically adding panels) might not be a good fit for this extension.

Events

Some items in this section represent breaking API changes and are marked accordingly.

New features

  • Events can now be bubbled from panel to plot. This makes it easier to subscribe to events from a single source.
  • Events now identify the place where they originated (eg plot.genes for the genes panel)
  • Events have a new way of passing structured data to listeners.
  • A new element_selection event has been added. This is unique from element_clicked in that it conveys whether a selection is being activated vs turned off.

Breaking changes

  • When an event listener fires,this is now always the value of where the listener was attached. It is never used to pass data. (few events provide data; the change mostly affects usages of element_clicked)
    • Example: if you listen to a panel event at the plot level, this will refer to the plot instance. If you listen to the same event at the panel level, this will refer to the panel.
  • All event listener functions now receive a single argument with a consistent structure: eventContext, with {sourceID: string, data: *}. Each event determines what, if any, data to provide.
    • sourceID refers to where the event originated (eg panel) rather than where the listener was attached (eg plot level).
    • Only a few events provide data. For example, element_clicked identifies the data used to draw the item that was clicked.

The data requesting pipeline

Some items in this section represent breaking API changes and are marked accordingly.

There are times when multiple sources must be requested to build up a view. We have added some new functionality to add power to this behavior.

  • The data chain now saves a copy of the raw response payload (chain.discrete) that would be returned by a single source. This is useful when requesting information from several different sources that do not directly combine.
  • Added a new type of Connector source. This is useful when a single piece of data (such as a calculation) is used by many kinds of data layers: the data can be requested once, with separate Connectors for each use case.
    • For example, a calculation can be run once, and the results can be displayed as a table view (one connector) as well as matched to the data points on a data layer (another connector).
    • Previously the request and the merging of fields had to be part of the same data source

Breaking changes

  • DEPRECATES several data source methods: parseData, parseArrayToObjects, parseObjectsToObjects, prepareData
    • Provides stub implementations to avoid breaking legacy applications
  • parseResponse is now a wrapper for several discrete steps (normalizeResponse, annotateData, extractFields, combineChainBody). Custom data sources now have more control over how JSON data is parsed into records.

New demo: Aggregation tests

  • Add an example page based on raremetal.js, a library that performs aggregation tests in the browser.

Misc bugfixes and improvements

  • Bugfix: should now correctly render scientific notation with negative numbers
Assets 2

@abought abought released this Apr 23, 2018 · 169 commits to develop since this release

PheWAS improvements

  • Points are no longer clipped on the edge of the PheWAS. Add lower_buffer and upper_buffer to the default layout. (GH #132)
  • PheWAS plot layouts can now specify the list of colors they want rather than being forced to use a preset color palette; plots are also now better at handling a lot of categories at once. (GH #130)
  • Improved interactivity events for plot labels (GH #131)

Misc bugfixes and enhancements

  • Association plots will now work better in regions with no data ( #128 )
  • locuszoom.app.min.js now provides sourcemaps for easier development/ debugging
  • Fix an issue with how axis extents are calculated; better respect default minima
Assets 2
You can’t perform that action at this time.