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
vanilla_roll-0.3.0.tar.gz
(31.8 kB
view details)
Built Distribution
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 |