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.

Scientific wind-field visualization rendered with Datoviz

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.

v0.4 Release Status

The v0.4-dev branch is the first v0.4 release candidate. 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.

Install

Once a v0.4 release candidate is published on PyPI, use the exact command from its release notes. A pre-release install will normally look like:

python -m pip install --pre datoviz

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

python -m pip install datoviz

Until packages are published for your platform, use the source build below. 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 on a dark background.

import ctypes

import numpy as np
import datoviz as dvz

N = 10_000
rng = np.random.default_rng(12345)
pos = np.zeros((N, 3), dtype=np.float32)
pos[:, :2] = rng.uniform(-1, 1, (N, 2))
color = rng.integers(0, 255, (N, 4), dtype=np.uint8)
color[:, 3] = 200
diameter = rng.uniform(4, 12, N).astype(np.float32)

scene = dvz.dvz_scene()
figure = dvz.dvz_figure(scene, 1280, 720, 0)
panel = dvz.dvz_panel_full(figure)
dvz.dvz_panel_set_background_color(panel, dvz.DvzColor(13, 18, 25, 255))

panzoom = dvz.dvz_panzoom(scene, None)
dvz.dvz_panel_bind_controller(panel, panzoom, dvz.DvzDimMaskFlag.DVZ_DIM_MASK_XY)

points = dvz.dvz_point(scene, 0)
dvz.dvz_visual_set_data(points, "position", pos)
dvz.dvz_visual_set_data(points, "color", color)
dvz.dvz_visual_set_data(points, "diameter_px", diameter)

style = dvz.dvz_point_style_desc()
style.aspect = dvz.DVZ_SHAPE_ASPECT_FILLED
style.stroke_width_px = 0
dvz.dvz_point_set_style(points, ctypes.byref(style))
dvz.dvz_visual_set_depth_test(points, False)
dvz.dvz_visual_set_alpha_mode(points, dvz.DVZ_ALPHA_BLENDED)
dvz.dvz_panel_add_visual(panel, points, None)

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

Continue with the annotated Quickstart or browse the example gallery.

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() GSP/VisPy2 when available

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.0rc1-py3-none-win_arm64.whl (10.0 MB view details)

Uploaded Python 3Windows ARM64

datoviz-0.4.0rc1-py3-none-win_amd64.whl (10.6 MB view details)

Uploaded Python 3Windows x86-64

datoviz-0.4.0rc1-py3-none-manylinux_2_34_x86_64.whl (19.0 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ x86-64

datoviz-0.4.0rc1-py3-none-manylinux_2_34_aarch64.whl (18.6 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ ARM64

datoviz-0.4.0rc1-py3-none-macosx_15_0_x86_64.whl (9.2 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

datoviz-0.4.0rc1-py3-none-macosx_15_0_arm64.whl (8.6 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: datoviz-0.4.0rc1-py3-none-win_arm64.whl
  • Upload date:
  • Size: 10.0 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.0rc1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 5d4484ff35c4e4ef9f6cd1a12ddf804ea1628d6f4bb0a710d5f6803356982657
MD5 f065d4e554be1fb9d97336cf1360e5d9
BLAKE2b-256 1066deb1fd9ee967b102ada52ef1989fedc9ca73857f62459f2617bcd43aeced

See more details on using hashes here.

File details

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

File metadata

  • Download URL: datoviz-0.4.0rc1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 10.6 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.0rc1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 47fc52f93674ef36ff48aa779fe00ce2643ba9d77fb17d5cbcc01b27a9727a15
MD5 1808472f98477d9d5c946ff1140f78db
BLAKE2b-256 ea45e0935bfd09402e753021fe24bdb24e72643c419ed2a77beb0ecfaf1f3840

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for datoviz-0.4.0rc1-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5f310133c604ef0348ca17a24454f62cea3f9687e2faaacd7701ac187ab988a2
MD5 aad2c77205f2d767597af769c5c39e8c
BLAKE2b-256 b9097f370922ad449003ff93d87dd16247d2cf0f6b0909ab606ecf52ab94c367

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for datoviz-0.4.0rc1-py3-none-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 50b6aee85fb389534f42c1fdf50e8c2401a71527f20ee00f2584e814188c2529
MD5 62c320dd8aeb2d0a438b6578d4e8527c
BLAKE2b-256 e20eb77ea851d5a4a761b9690b9e3509609b65a596de6a85f2b4111a8a5c9409

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for datoviz-0.4.0rc1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 2876bad136b952bf45b15649b0740ecc35378731ba5b5917f7f3100c6b02d10c
MD5 6e51137c61da0d784507e28f245d1f8f
BLAKE2b-256 7181194f3ad1d94003cff240050dded63fa5ec0776915ca31c10c839639c689e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for datoviz-0.4.0rc1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 21c1f68e852d92c7a8134867c5f5455442a37f73dfb57b8b40752fce871a26e2
MD5 b02f2c0277d3c7dce51763806948e691
BLAKE2b-256 b45f505279a8938d8ea34570557f2dc02f6fa9fca0116ea336003c7037d9b1c1

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