Skip to content

ar90n/vanilla-roll

Repository files navigation

vanilla-roll

Build Version Downloads Contributors Issues Codecov Apache License 2.0 License

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
    • numba

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

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

Apache-2.0

Packages

No packages published

Contributors 3

  •  
  •  
  •  
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy