Multichannel Timeseries#

hvplotpanelholoviewsdatashaderholonote
Published: November 20, 2024


Introduction#

Visualizing time series from various sources on a vertically stacked, time-aligned display is often the first tool employed when working with data from electrophysiological studies. These experiments generally seek to provide insight into the activities of nerve cells or muscles, as well as how they relate to each other or other measurable variables, such as the spatial position of the organism under study. Electrophysiological recording sessions can include diverse data types like electromyograms (EMG), electroencephalograms (EEG), local field potentials (LFP), or neural action potentials (spikes) - each consisting of multiple streams of information (‘channels’) that all are unified by their alignment to a single series of timestamps, but having a heterogenuous range of amplitude values.

There are many different approaches for a visualization of multichannel timeseries data, but we’ll highlight the one that we’ve found to be promising in many scenarios. If you have a dataset that is too large to fit into memory, check out the alternate approaches in the ‘Extensions and Alternate Workflows’ below the Recommended Workflow.


Key Features#

Analyzing electrophysiological data often involves searching for patterns across time, channels, and covariates. Target features that support this type of investigation for time-aligned, amplitude-diverse data include:

  • Smooth Interactions at Scale: Smooth zooming and panning across time and channels.

  • Subcoordinate Axes: Independent amplitude dimension (y-axis) per channel.

  • Instant Inspection: Quick information preview about the data under the cursor.

  • Group-Aware Handling: Zooming and y-range normalization per specified channel group/type.

  • Reference View: Minimap for navigation and contextualization in large datasets.

  • Responsive Scale Bar: Dynamic amplitude reference measurement.

  • Time-Range Annotations: Create and edit time-range annotations directly on the plot.



Extensions and Alternate Workflows#

Title

Preview

Type

Summary

Details

Minimap Widget

Minimap

Extension

Use HoloViews RangeToolLink and Datashader to rasterize an aggregate view.

Create a minimap widget that provides a condensed overview of the entire dataset, allowing users to select and zoom into areas of interest quickly in the main plot while maintaining the contextualization of the zoomed out view.

Time Range Annotation

annotation

Extension

Utilize HoloNote along with any primary workflow approach.

Create (or import), edit, and save a table of start and end times. View the categorized ranges overlaid on the multichannel timeseries plot. HoloNote allows you to interact with time range annotations directly on a plot, through widgets, or programmatically.

Standalone App

Standalone App

Extension

Deploy the visualization as a standalone, template-styled web application using HoloViz Panel.

This extension shows how to wrap your plot within a Panel Template for a styled, interactive web app that can run outside of a Jupyter Notebook. By marking the Panel component as servable, you can launch the app directly from the command line, providing a user-friendly interface in its own browser window.

Scale Bar

Scale Bar

Extension

Provides an accurate, dynamic, and customizable reference gauge of signal amplitude.

The scale bar feature in HoloViews+Bokeh allows for precise measurement indicators on plots. Requires Bokeh>=3.6.0 and HoloViews>=1.19.2

Larger Dataset
(> RAM)

Larger Dataset

Alternate Workflow

Utilize Xarray, Zarr, and Dask for dynamic access of data subsets at optimal resolution.

To handle datasets beyond available memory (RAM), we can utilize dynamic access of certain data ranges and resolutions, using a precomputed hierarchical array pyramid.

Pyramid Level Widget

Pyramid Level

Extension

Indicator for the active Pyramid Level

Use a custom HoloViews Stream to update the indicator styling of the different resolution levels of the data


Funding:#

This web page was generated from a Jupyter notebook and not all interactivity will work on this website.