Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8,439 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 published release candidate. Install the exact package from PyPI with:

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

RC2 supersedes RC1. In particular, macOS users should upgrade because the RC1 wheel has a native-window Vulkan-loader defect that RC2 fixes.

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.

Releases

Packages

Used by

Contributors

Languages