Skip to main content

A simple array based volume renderer

Project description

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

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

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

vanilla_roll-0.3.0.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

vanilla_roll-0.3.0-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

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

Hashes for vanilla_roll-0.3.0.tar.gz
Algorithm Hash digest
SHA256 88d66f7c55eaba7d245b8bcadfdf1efcbf54a755735fab75e63abf9a16b09e8a
MD5 299d0f3bb12e476989ddc54c1367ce80
BLAKE2b-256 07b868ffa199aedbe00e78d3b752b9643190275d276df2eb9c79f49d3950250f

See more details on using hashes here.

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

Hashes for vanilla_roll-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c82bcb43ea98b7d791048794a65e517e14af4c20f90ded72ce042ac5dda026a
MD5 e1dbfa52ebab1585d5d9e451f479fd0d
BLAKE2b-256 ae3ac49532e026c47e03cde61fafb419ff2687ce8ccbbcace41ea207af8655ef

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page