Skip to main content

Datoviz: high-performance rendering for scientific data visualization

Project description

Datoviz

Build and test Documentation Python 3.10–3.14 License: MIT

Datoviz is a GPU-powered visualization engine for interactive scientific data. Use it when dense points, images, meshes, volumes, annotations, linked panels, or custom scientific scenes need more control and performance than an ordinary plotting library provides.

Interactive 3D protein visualization rendered with Datoviz

Allen mouse brain volume rendered with Datoviz Large colorized LiDAR point cloud rendered with Datoviz U.S. state population choropleth rendered with Datoviz
Allen mouse brain Point cloud U.S. state choropleth

Browse the full gallery →

Datoviz v0.4 provides a retained scene model, native Vulkan rendering, desktop and offscreen presentation, reproducible capture, and direct use from C or Python. Python users call the generated binding with import datoviz as dvz and pass NumPy arrays directly to supported data-upload APIs.

Install

Datoviz v0.4.0rc2 is the active release candidate. Its replacement wheels are being validated; after publication, install the exact package with:

python -m pip install --pre datoviz==0.4.0rc2

Until RC2 is published, v0.4.0rc1 remains the package available from PyPI. Its macOS wheel has a known native-window Vulkan-loader defect; build v0.4-dev from source when testing native windows.

After the final v0.4 release, the normal command will be:

python -m pip install datoviz

Use the source build below for development or platforms without a published wheel. The full installation guide covers macOS, Linux, Windows, Python, and C/C++ integration.

Minimal Python Example

This deterministic example creates the scatter plot shown in the documentation: 10,000 random points with random colors and sizes.

import numpy as np
import datoviz as dvz

# Create deterministic NumPy arrays for one point per row.
n = 10_000
rng = np.random.default_rng(12345)
positions = rng.uniform(-1, 1, (n, 3)).astype(np.float32)
positions[:, 2] = 0
colors = rng.integers(0, 256, (n, 4), dtype=np.uint8)
colors[:, 3] = 200
diameters = rng.uniform(4, 12, n).astype(np.float32)

# Create the retained scene, its output figure, and one full-size panel.
scene = dvz.dvz_scene()
figure = dvz.dvz_figure(scene, 1280, 720, 0)
panel = dvz.dvz_panel_full(figure)

# Attach the arrays to a point visual, then add it to the panel.
points = dvz.dvz_point(scene, 0)
dvz.dvz_visual_set_data_many(
    points,
    {"position": positions, "color": colors, "diameter_px": diameters},
)
dvz.dvz_panel_add_visual(panel, points, None)

# Bind 2D pan and zoom interaction, then open the native window.
panzoom = dvz.dvz_panzoom(scene, None)
dvz.dvz_panel_bind_controller(panel, panzoom, dvz.DVZ_DIM_MASK_XY)

dvz.run(scene, figure, title="Datoviz Quickstart")

Continue with the annotated Quickstart or browse the example gallery.

v0.4 Release Status

The v0.4-dev branch is the active v0.4 release-candidate line. The native C and Python/NumPy paths are release-facing; experimental and deferred surfaces remain explicitly labeled throughout the documentation.

Surface v0.4 status
Native C scene/app API supported, with feature-specific gaps
Python API with NumPy adaptation and exact raw calls supported
Offscreen rendering and capture supported
Qt/PyQt hosted rendering supported, optional provider
Retained visual families supported/experimental by family
WebGPU/WASM browser path experimental
Scene compute-to-render integration experimental
DRP2 command streams and runtime internals advanced/unstable
High-level plotting API external/GSP

See the detailed feature status, platform support, and v0.3 capability disposition before relying on an experimental or backend-specific feature.

C And C++

Datoviz is a native C library. Installed packages expose headers and a CMake package for C and C++ applications:

find_package(datoviz CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE datoviz::datoviz)

The public API uses C linkage and can be called directly from C++. See C/C++ integration and the generated C API reference.

Build From Source

Source builds require Git, CMake 3.21+, Ninja, just, Python 3.10+, a supported C/C++ compiler, shader tools, and a Vulkan-capable runtime. Clone the active branch with its submodules, then build and test:

git clone --branch v0.4-dev --recursive https://github.com/datoviz/datoviz.git
cd datoviz
just build
just test
python -m pip install -e .

Platform packages, compiler versions, Vulkan/MoltenVK requirements, and native Windows guidance are maintained in the installation guide. Contributors should also read CONTRIBUTING.md and BUILD.md.

Which Layer Should I Use?

Need Use
Python with Datoviz visuals and NumPy arrays import datoviz as dvz
Native application or C/C++ integration C scene/app API
Exact pointer/count form of the Python binding datoviz.raw
Browser rendering for promoted examples experimental WebGPU/WASM subset
High-level functions such as scatter() or imshow() Not in v0.4 — use the scene API today; GSP/VisPy2 later

Datoviz v0.4 is the explicit engine layer: scenes, visuals, data uploads, controllers, windows, captures, and integration surfaces. The old high-level Datoviz Python plotting API is not part of v0.4; that role belongs to the developing GSP/VisPy2 layer. See Choose Your Layer for the complete comparison.

Documentation

License And Credits

Datoviz is released under the MIT license. It is developed by Cyrille Rossant at the International Brain Laboratory, with support from the Wellcome Trust, Simons Foundation, and Chan Zuckerberg Initiative.

If you use Datoviz in research, follow the current citation guidance and repository metadata in CITATION.cff. The final v0.4.0 release is planned for archival with Zenodo and a version-specific DOI.

Datoviz builds on earlier open-source GPU visualization work including VisPy, Glumpy, Galry, and the Vulkan-based Datoviz releases. Development of v0.4 was assisted by OpenAI Codex for implementation, review, testing, documentation, and release preparation. All changes were directed, reviewed, and validated by the project maintainer.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

datoviz-0.4.0rc2-py3-none-win_arm64.whl (10.2 MB view details)

Uploaded Python 3Windows ARM64

datoviz-0.4.0rc2-py3-none-win_amd64.whl (10.7 MB view details)

Uploaded Python 3Windows x86-64

datoviz-0.4.0rc2-py3-none-manylinux_2_34_x86_64.whl (19.1 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ x86-64

datoviz-0.4.0rc2-py3-none-manylinux_2_34_aarch64.whl (18.8 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ ARM64

datoviz-0.4.0rc2-py3-none-macosx_15_0_x86_64.whl (9.4 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

datoviz-0.4.0rc2-py3-none-macosx_15_0_arm64.whl (8.8 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

File details

Details for the file datoviz-0.4.0rc2-py3-none-win_arm64.whl.

File metadata

  • Download URL: datoviz-0.4.0rc2-py3-none-win_arm64.whl
  • Upload date:
  • Size: 10.2 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.13

File hashes

Hashes for datoviz-0.4.0rc2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 2e0b0d22234b0e0449e8ddbd60d328357fc2eb94b6c1012a159ce1db5e523471
MD5 34348a8ebdeb3e06fde8877395096e8e
BLAKE2b-256 e00d0a4f8452566576ab3b700c07d0d17655774a3fa30687edc8d929a2f34aa0

See more details on using hashes here.

File details

Details for the file datoviz-0.4.0rc2-py3-none-win_amd64.whl.

File metadata

  • Download URL: datoviz-0.4.0rc2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 10.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.13

File hashes

Hashes for datoviz-0.4.0rc2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 5ad18a1165fe8ffc0857ccd7d40d19ffa3528aaa230568975122a9d1b1aab951
MD5 d400d65a646c2bfaa983f8a82f6ba1d2
BLAKE2b-256 6af9cb3e24c94fba637e59d72889c88f1ed1fdfe06ef0335099d2f605c7ad34b

See more details on using hashes here.

File details

Details for the file datoviz-0.4.0rc2-py3-none-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for datoviz-0.4.0rc2-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ba0824db1d47fa55676193839a635aee79bca4cb0ebcf5c462b42a4411403595
MD5 003f736684f2e7b1c0928ed058b062d3
BLAKE2b-256 e4e7fc73ec987bfbce42947ce88d51f03b8247c307f18788212147b0da6c9ee2

See more details on using hashes here.

File details

Details for the file datoviz-0.4.0rc2-py3-none-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for datoviz-0.4.0rc2-py3-none-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 46d220a5c56510433d6937da1b1003185a7439c95666df45b6f2307bf77b4da0
MD5 b72eb0bdbede3d9515789cba70f0f1bf
BLAKE2b-256 164f103a4dd0db9288ec61130b6fdee10c94d4cb0c8ef154e6f57b9d335031da

See more details on using hashes here.

File details

Details for the file datoviz-0.4.0rc2-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for datoviz-0.4.0rc2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d3e10bea002d26d245e9f6f5b89c37a0ee3ec7a1c6e19136d93bbca390a96849
MD5 7754dcf09efdc7753f042e8b38e758f0
BLAKE2b-256 beee6b4b97a30a2dd419413db88a306d0e1d9afa921bd4ac316d530c8d442958

See more details on using hashes here.

File details

Details for the file datoviz-0.4.0rc2-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for datoviz-0.4.0rc2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1277afcf1d017b9c421e8d149ede6deabc82d859e3a67eb85c6ecbf82a8a8f59
MD5 1cf91632269357be82aba06de9626f62
BLAKE2b-256 092b0a93491cd7e86978237b895f3fa4ee23da848758f7c4276fd554b7320746

See more details on using hashes here.

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