Skip to main content

Interactive Jupyter widgets for NWB video and pose visualization

Project description

nwb-video-widgets

PyPI version Python 3.10+ License: MIT

Interactive Jupyter widgets for NWB video and pose estimation visualization. Built with anywidget for compatibility across JupyterLab, Jupyter Notebook, VS Code, and Google Colab.

Table of Contents

Installation

For local only NWB file usage:

pip install nwb-video-widgets

For DANDI integration and streaming support:

pip install nwb-video-widgets[dandi]

Video Player Widgets

Multi-camera synchronized video player with configurable layout (Row, Column, or Grid).

Video Widget Demo

Features:

  • Interactive settings panel for video selection
  • Multiple layout modes (Row, Column, Grid)
  • Synchronized playback across all videos
  • Session time display with NWB timestamps

DANDI Streaming

Use NWBDANDIVideoPlayer for videos hosted on DANDI:

from dandi.dandiapi import DandiAPIClient
from nwb_video_widgets import NWBDANDIVideoPlayer

client = DandiAPIClient()
dandiset = client.get_dandiset("000409", "draft")
asset = dandiset.get_asset_by_path("sub-NYU-39/sub-NYU-39_ses-..._behavior.nwb")

widget = NWBDANDIVideoPlayer(asset=asset)
widget

Local Files

Use NWBLocalVideoPlayer for local NWB files:

from pynwb import read_nwb
from nwb_video_widgets import NWBLocalVideoPlayer

nwbfile = read_nwb("experiment.nwb")
widget = NWBLocalVideoPlayer(nwbfile)
widget

Pose Estimation Widgets

Overlays DeepLabCut keypoints on streaming video with support for camera selection.

Pose Estimation Widget Demo

Features:

  • Camera selection via settings panel
  • Keypoint visibility toggles (All/None/individual)
  • Label display toggle
  • Session time display (NWB timestamps)
  • Custom keypoint colors via colormap or explicit hex values
  • Supports split files (videos in raw file, pose in processed file)

DANDI Streaming

Use NWBDANDIPoseEstimationWidget for DANDI-hosted files:

from dandi.dandiapi import DandiAPIClient
from nwb_video_widgets import NWBDANDIPoseEstimationWidget

client = DandiAPIClient()
dandiset = client.get_dandiset("000409", "draft")

# Single file (videos + pose in same file)
asset = dandiset.get_asset_by_path("sub-.../sub-..._combined.nwb")
widget = NWBDANDIPoseEstimationWidget(asset=asset)

# Or split files (videos in raw, pose in processed)
raw_asset = dandiset.get_asset_by_path("sub-.../sub-..._desc-raw.nwb")
processed_asset = dandiset.get_asset_by_path("sub-.../sub-..._desc-processed.nwb")
widget = NWBDANDIPoseEstimationWidget(
    asset=processed_asset,
    video_asset=raw_asset,
)
widget

Local Files

Use NWBLocalPoseEstimationWidget for local NWB files:

from pynwb import read_nwb
from nwb_video_widgets import NWBLocalPoseEstimationWidget

# Single file
nwbfile = read_nwb("experiment.nwb")
widget = NWBLocalPoseEstimationWidget(nwbfile)
widget

# Or split files
nwbfile_raw = read_nwb("raw.nwb")
nwbfile_processed = read_nwb("processed.nwb")
widget = NWBLocalPoseEstimationWidget(
    nwbfile=nwbfile_processed,
    video_nwbfile=nwbfile_raw,
)
widget

Parameters:

Parameter Type Description
keypoint_colors str or dict Matplotlib colormap name (e.g., 'tab10') or dict mapping keypoint names to hex colors
default_camera str Camera to display initially

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nwb_video_widgets-0.1.0.tar.gz (3.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nwb_video_widgets-0.1.0-py3-none-any.whl (37.2 kB view details)

Uploaded Python 3

File details

Details for the file nwb_video_widgets-0.1.0.tar.gz.

File metadata

  • Download URL: nwb_video_widgets-0.1.0.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for nwb_video_widgets-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8167bf5a723cae1bf0eec82b03767a2a41ed9c58a10db85db1ac97d6bf740f84
MD5 688b8b978312656d8ed7d17e0f87c366
BLAKE2b-256 38e9915bf4f6d62b2eff2ea8764469e7371a2a21a4a19de41ccefff620f92a21

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwb_video_widgets-0.1.0.tar.gz:

Publisher: auto-publish.yml on catalystneuro/nwb-video-widgets

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nwb_video_widgets-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nwb_video_widgets-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ed07d5606056d5b92ff8c9b9f3f42b4b9a66b2bad4edc0c0dbc14e8b6e62023
MD5 eaa1d7833b494c8d1423c4e6f90644b1
BLAKE2b-256 9b7d67197ed7d6f727c54d6902aafe157565ce377efdd73afc7c549382bc52f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwb_video_widgets-0.1.0-py3-none-any.whl:

Publisher: auto-publish.yml on catalystneuro/nwb-video-widgets

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page