Skip to main content

Jupyter DICOM Viewer

Lightweight MPR + 3D DICOM viewer for Jupyter notebooks. Runs entirely in the notebook (no desktop UI), with crosshair-synced axial/coronal/sagittal views, optional 3D volume render, and mask overlays.

Install

Using pip (from a local checkout or future PyPI release ipydicom):

pip install -e .   # from this repo
# or, once published: pip install ipydicom

Quick start

%matplotlib widget is recommended for best interactivity, but the viewer calls panel/VTK extensions internally. If widgets do not render, ensure ipywidgets/ipympl/Panel are installed and the widget manager is enabled in your notebook frontend.

from jupyter_dicom.DICOMViewer import DICOMViewer

# Option A: use the file chooser in the UI
viewer = DICOMViewer()

# Option B: preload a folder or a single DICOM file
# viewer = DICOMViewer(dicom_path="/path/to/folder_or_file.dcm")

viewer.display()

UI basics:

  • File chooser: pick a DICOM folder (or pass dicom_path above).
  • Buttons: Eye/Adjust/Magic = normalization modes; 3D View = VTK volume render with locator; Metadata = current slice metadata.
  • Navigation: click any view or drag sliders; crosshair/sliders stay in sync.

Direct loading (no chooser)

You can still load programmatically:

viewer = DICOMViewer()
vol, dims = viewer.controller.dicom_handler.load_series("/path/to/folder_or_file.dcm")
viewer.controller.mpr_viewer.set_volume(vol, viewer.controller.dicom_handler.get_spacing())
viewer.display()

Overlays (masks/labelmaps)

Supports .npy masks and DICOM-SEG via load_mask_dicom_seg(path); labelmaps must match the loaded volume shape. [Requires overlay mask shape == volume shape (z, y, x); non-zero voxels are shown with the given color/alpha.]

mask = viewer.new_empty_mask()              # shape matches volume (z, y, x)
mask[10:20, 30:50, 40:60] = 1               # demo patch
viewer.set_overlay(mask, alpha=0.4, color=(0.0, 0.9, 0.2), jump_to=True)

# Multiple overlays
oid = viewer.add_overlay(mask2, color=(0.9, 0.0, 0.9), alpha=0.3, overlay_id="lesion", jump_to=True)
viewer.remove_overlay("lesion")
viewer.clear_overlay()

Navigation helpers

viewer.jump_to(x=120, y=90, z=42)  # move crosshair and 3D locator
viewer.reset_view()                # recenter crosshair

Notes

  • Panel/VTK is initialized inside the library; you usually don’t need extra %matplotlib widget setup, but having ipywidgets/ipympl installed is required.
  • Single-file DICOM or folders both work for dicom_path and for load_series. For 3D, the directory containing the file is used.
  • Sample data: see samples/README.md (small CT + DICOM-SEG from QIICR/dcmqi, Apache-2.0). Larger TCIA samples are ignored in git (samples/tcia_prostate_seg/ placeholder).
  • Publishing: package is named ipydicom (pyproject.toml). Build with python -m build and upload with twine once credentials are available.

Metadata

Release files for ipydicom 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ipydicom 0.1.0
File Size Uploaded
ipydicom-0.1.0.tar.gz 858.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ipydicom 0.1.0
File Interpreter ABI Platform
ipydicom-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 880.0 kB

Release files / ipydicom-0.1.0.tar.gz

Download URL ipydicom-0.1.0.tar.gz
Size 858.4 kB
Tags Source
SHA-256 checksum
How to use checksums
19baeefa40584b806a0a32c530f23c888b13c7019613e65dadf28b10fa9f0321
BLAKE2b-256 checksum
How to use checksums
0ca6550776b3a483b1bec5f559f3f3da98ade6a41fddd570b17b589894f4387e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release files / ipydicom-0.1.0-py3-none-any.whl

Download URL ipydicom-0.1.0-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df2bc019553b022e69a5ed40c6a0db94d18f15539cc7810d286b3533a1a7dca7
BLAKE2b-256 checksum
How to use checksums
39d22a240d2bde96f9fca6f7d2b297cd626c66ea1c213944bb44e55a2ad0ad88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page