A simple array based volume renderer
Project description
vanilla-roll
vanilla-roll is volume renderer using array-api as backend.
Why vanilla-roll ?
VTK is one of the most excellent volume renderers in the world. It has good performance and many features. But I think that the installation process is not easy. So vanilla-roll is motivated to solve this problem.
Features
- IO
- MRA
- NIFTI
- DICOM
- NRRD
- Rendering Algorithm
- Sampling
- Shear-Warp
- Raycast
- Rendering Mode
- MIP
- MinP
- Average
- VolumeRendering
- Ambient
- Shading
- Backend
- numpy
- pytorch
- cupy
- jax
- numbda
Installation
$ pip install vanilla-roll
vanilla-roll supports following extras
- torch
- dicom
- mha
- nifti
Example
Code
import urllib.request
from pathlib import Path
from tempfile import TemporaryDirectory
import numpy as np
import skimage.io
import vanilla_roll as vr
# from A high-resolution 7-Tesla fMRI dataset from complex natural stimulation with an audio movie
# https://www.openfmri.org/dataset/ds000113/
MRA_FILE_URL = "https://s3.amazonaws.com/openneuro/ds000113/ds000113_unrevisioned/uncompressed/sub003/angio/angio001.nii.gz" # noqa: E501
def fetch_mra_volume() -> vr.volume.Volume:
with TemporaryDirectory() as tmpdir:
mra_file = Path(tmpdir) / "mra.nii.gz"
urllib.request.urlretrieve(MRA_FILE_URL, mra_file)
return vr.io.read_nifti(mra_file)
def save_result(ret: vr.rendering.types.RenderingResult, path: str):
img_array = vr.rendering.convert_image_to_array(ret.image)
skimage.io.imsave(path, np.from_dlpack(img_array)) # type: ignore
def main():
volume = fetch_mra_volume()
ret = vr.render(volume, mode=vr.rendering.mode.MIP())
save_result(ret, f"result.png")
if __name__ == "__main__":
main()
Output
If you need more exmplaes, please check the examples.
For development
Install Poery plugins
$ poetry self add 'poethepoet[poetry_plugin]'
Install all extra packages
$ poetry poe install-all-extras
Run tests
$ poetry poe test
Run linter and formatter
$ poetry poe check
See Also
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vanilla_roll-0.3.0.tar.gz.
File metadata
- Download URL: vanilla_roll-0.3.0.tar.gz
- Upload date:
- Size: 31.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.8 Linux/5.15.0-1022-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88d66f7c55eaba7d245b8bcadfdf1efcbf54a755735fab75e63abf9a16b09e8a
|
|
| MD5 |
299d0f3bb12e476989ddc54c1367ce80
|
|
| BLAKE2b-256 |
07b868ffa199aedbe00e78d3b752b9643190275d276df2eb9c79f49d3950250f
|
File details
Details for the file vanilla_roll-0.3.0-py3-none-any.whl.
File metadata
- Download URL: vanilla_roll-0.3.0-py3-none-any.whl
- Upload date:
- Size: 41.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.8 Linux/5.15.0-1022-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c82bcb43ea98b7d791048794a65e517e14af4c20f90ded72ce042ac5dda026a
|
|
| MD5 |
e1dbfa52ebab1585d5d9e451f479fd0d
|
|
| BLAKE2b-256 |
ae3ac49532e026c47e03cde61fafb419ff2687ce8ccbbcace41ea207af8655ef
|