Skip to main content

Python library for Neurovolume. Build VDBs for scientific visualizations

Project description

Render of a non-skull stripped MNI Template

Neurovolume is a Python library for manipulating and visualizing volumetric data. It includes a custom-built, scientific data-focused, VDB writer. The VDB writer is written in Zig with no external dependencies.

While this project focuses on neuroscience, it includes ndarray to VDB to support virtually any volumetric data pipeline.

This project is under active development and might not have everything you need. Please reference reference our roadmap to see what is in the works!

This project is available as a pre-release alpha on pypi. Presently it is only available for arm64. More operating systems coming soon!

🏗️ Building

If you are building locally, we use uv to build and test the project:

uv run python -m ziglang build && uv run pytest tests -s

This is how you might overlay a BOLD sequence onto an anatomical scan:

# acquire arrays and fps from the nibable image (see test_integration.py)

bold_diff = nv.Channel(
    "bold",
    sub(nv.prep_ndarray(bold_arr)),
    transform=bold_affine,
    source_fps=fps,
    playback_fps=24,
    speed=1,
    interpolation=nv.modes.Interpolation.direct,
)
t1 = nv.Channel(
    "t1",
    nv.prep_ndarray(t1_arr),
    transform=t1_affine,
    num_source_frames=bold_diff.num_output_frames,
    interpolation=nv.modes.Interpolation.frozen,
    prune=np.float32(0.1),
)

save_config = nv.SaveConfig("fmri_bold_sub_fade", folder=vdb_out / "fmri_seq")
fmri = nv.Sequence([bold_diff, t1], save_config)
fmri.write()

See tests/test_integration.py for

Higher sparsity amounts will result in better performance and lower disk space usage. However, after a certain point, they begin to degrade the VDB quality.

📀 Projects

  • BoldViz: a Blender plugin for fMRI and MRI visualizations. It was used to create the renders in this README. A great place to start if you don't want to deal with writing any Python.
  • Neurovolume Examples and Physarum include some good starting points for how one might use this library with numpy.
  • The nibabel example shows how to use an external NIfTI parser, which could be of use for not-yet-supported filetypes. We're moving away from native file parsing as everyone seems to use numpy, but please reach out if this is something that you'd want!

☁️ Why VDB?

VDBs are a highly performant, art-directable, sparse volumetric data structure. Our volume-based approach aims to provide easy access to the original density data throughout the visualization and analysis pipeline. Unlike the openVDB repo, our smaller version is much more readable and does not need to be run in a docker container.

🧠 Dataset Citation

This software was tested using the following datasets.

Isaac David and Victor Olalde-Mathieu and Ana Y. Martínez and Lluviana Rodríguez-Vidal and Fernando A. Barrios (2021). Emotion Category and Face Perception Task Optimized for Multivariate Pattern Analysis. OpenNeuro. [Dataset] doi: 10.18112/openneuro.ds003548.v1.0.1

OpenNeuro Study Link

Direct Download Link for T1 Anat test file

Direct Download Link for BOLD test file

The MNI Template can be found Here

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

neurovolume-0.1.0a18.tar.gz (522.2 kB view details)

Uploaded Source

Built Distribution

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

neurovolume-0.1.0a18-py3-none-any.whl (521.8 kB view details)

Uploaded Python 3

File details

Details for the file neurovolume-0.1.0a18.tar.gz.

File metadata

  • Download URL: neurovolume-0.1.0a18.tar.gz
  • Upload date:
  • Size: 522.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for neurovolume-0.1.0a18.tar.gz
Algorithm Hash digest
SHA256 580a5bc76ecddb97cc2c7e0ac79c6f48a57df8c608040ece03aee5d61cc25c85
MD5 67d965c2bd8cf9ea59c1af66e9793798
BLAKE2b-256 653bb24ff14efe3990b75a9dd5884eb9bdf72bc8a2e65bee7e1345c8e427633c

See more details on using hashes here.

File details

Details for the file neurovolume-0.1.0a18-py3-none-any.whl.

File metadata

  • Download URL: neurovolume-0.1.0a18-py3-none-any.whl
  • Upload date:
  • Size: 521.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for neurovolume-0.1.0a18-py3-none-any.whl
Algorithm Hash digest
SHA256 bd653c268a8c1c3cf76a01e76f9bc09dac8f88f24cf678b8dc8de7d0de5227c2
MD5 086c4976e6fad5e684d6c9f557a61b4a
BLAKE2b-256 85ae612712bc93658615191f613ab2bc02de1eed013dfbdefcd8a5509691475a

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