Skip to main content

seeVol

3D visualisation of an artificial ant nest volume coloured by voxel visibility

seevol analyses line-of-sight visibility in 3D binary volumes, where 0 represents a solid/opaque voxel, and 1 represents open/transparent voxels.

The core functionality is based on the Amanatides & Woo voxel traversal algorithm 1 and is implemented in C++ to compute straight line visibility between all pairs of open (non solid) voxels in a given volume.

This tool tests visibility between all open pairs throughout the volume, which permits per-voxel visibility analysis metrics to be calculated downstream for every open voxel.

Dependencies

A C++17 or greater build toolchain is required for source installation, alongside Python >=3.10.

Pyvista is a dependency for visualisations of the visibility metrics output onto the 3D volume itself (see this visual example for use).

Installation

To install seevol:

pip install seevol

or for uv users:

uv pip install seevol

Usage

The core function visible_pairs() accepts a 3D binary (0 = solid, 1 = open) NumPy array as input and outputs two NumPy arrays:

  • coords — shape (N, 3), the open voxel coordinates in the volume
  • edges — shape (M, 2), pairs of indices into coords for voxels that are mutually visible

For example, if edges[0] is [2, 7],the visibility edge connects coords[2] and coords[7] and these two voxels are visible to each other via direct line of sight.

Users can load .npy files in Python using np.load() and pass the result to visible_pairs().

Downstream analyses or visualisations are then possible from this output, such as visualising a 'visibility heatmap' using Pyvista (see below)

Limitations

This tool currently uses all-pair calculation using voxel ray traversal. Because of this, the ray traversal algorithm scales as O(open_voxels2) and is therefore quickly unusable for large volumes.

A hard limit is imposed in the C++ source file which limits open voxels to 1,000,000. In reality, volumes with over 500,000 open voxels are likely to significant memory issues as very large visible edges will be stored. Methods to reduce this runtime will hopefully be introduced over time.

Minimal example

The quickstart example creates a small volume of open voxels with one solid voxel blocking visibility:

import numpy as np
import seevol 

# 1 = open, 0 = solid
volume = np.ones((3, 3, 3), dtype=np.uint8)

# adds an obstruction
volume[1, 1, 1] = 0  

# calculate pairwise voxel visibility
coords, edges = seevol.visible_pairs(volume)

print(f"{len(coords)} open voxels containing {len(edges)} visible pairs")

It prints the number of open voxels and visible pairs:

26 open voxels containing 214 visible pairs

Using .npy files

To import your own 3D NumPy volume and calculate visibility as with the above example:

import numpy as np
import seevol 

# load your own 3D NumPy volume: 0 = solid, 1 = open
volume = np.load("my_volume.npy")

# calculate pairwise voxel visibility
coords, edges = seevol.visible_pairs(volume)

print(f"{len(coords)} open voxels containing {len(edges)} visible pairs")

Visualisation examples on large artificial volumes

Below shows an example output of the visibility score per voxel as a heatmap within an intricate 150x150x150 volume, generated using tunnel_excavator() to mimic an ant-nest structure and visualised with Pyvista using visibility_visualiser():

150_cubed

A visibility scored volume using a generated porespy volume:

150_cubed

References

  1. Amanatides, J., & Woo, A. (1987, August). A fast voxel traversal algorithm for ray tracing. In Eurographics (Vol. 87, No. 3, pp. 3-10).

Metadata

Release files for seevol 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seevol 0.1.0
File Size Uploaded Provenance Actions
seevol-0.1.0.tar.gz 6.5 MB Without provenance Details for seevol-0.1.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for seevol 0.1.0
File Actions
seevol-0.1.0-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details for seevol-0.1.0-cp312-cp312-macosx_26_0_arm64.whl
seevol-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for seevol-0.1.0-cp311-cp311-win_amd64.whl
seevol-0.1.0-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details for seevol-0.1.0-cp311-cp311-win32.whl
seevol-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for seevol-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.0-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details for seevol-0.1.0-cp311-cp311-macosx_26_0_arm64.whl
seevol-0.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for seevol-0.1.0-cp310-cp310-win_amd64.whl
seevol-0.1.0-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details for seevol-0.1.0-cp310-cp310-win32.whl
seevol-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for seevol-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.0-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details for seevol-0.1.0-cp310-cp310-macosx_26_0_arm64.whl

Total release size: 7.9 MB

Release files / seevol-0.1.0.tar.gz

Download URL seevol-0.1.0.tar.gz
Size 6.5 MB
Tags Source
SHA-256 checksum
How to use checksums
b1348b611d39596cc7171a3e19f2d1dd9fa2974028d4f76a4fd8ef0fbe88dbf7
BLAKE2b-256 checksum
How to use checksums
c2911d4a09335247f37dd2b23d13bdddfaed7859a317191904eb29d6877ad1bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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":null}

Release files / seevol-0.1.0-cp312-cp312-macosx_26_0_arm64.whl

Download URL seevol-0.1.0-cp312-cp312-macosx_26_0_arm64.whl
Size 78.4 kB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
888375d79eb6786dce2623267c1e19d652d413c61e282c0576cc94e93d2b73dc
BLAKE2b-256 checksum
How to use checksums
b21f6b7bbeeeb4f045cfc59399f186c22ec3b1dfe1ddfb716c5bd83137aecaf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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":null}

Release files / seevol-0.1.0-cp311-cp311-win_amd64.whl

Download URL seevol-0.1.0-cp311-cp311-win_amd64.whl
Size 95.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
6787856a191e78bd17e88ba94ad9477ef0d66d11fbde096ff3d5617e3515f2b4
BLAKE2b-256 checksum
How to use checksums
914d3c7c606afb46d73698396ab9f4e32cc9fb573f5ca1b6c85846d671015465
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp311-cp311-win32.whl

Download URL seevol-0.1.0-cp311-cp311-win32.whl
Size 82.5 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
d513d8af4c71c8fe6b6504a5ce35101f06ba20fe0cad98d4e92d2ff2824be9ce
BLAKE2b-256 checksum
How to use checksums
ac317a95631e6668459dd2df81aa2113355086ee1ca388fb6144e82106578aa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 179.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3db6d09f0f85a16c1831f71b8881f98664dbdb209a43f112bdadd8a686fdcf53
BLAKE2b-256 checksum
How to use checksums
db106e70b6f4dd3b94561935c5fc90daa6433360e912bb7bc8a256e61acb5a23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp311-cp311-macosx_26_0_arm64.whl

Download URL seevol-0.1.0-cp311-cp311-macosx_26_0_arm64.whl
Size 326.8 kB
Tags CPython 3.11 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
035cf6c7b6509007671e95a2796a9b2cf209db10fabc88faa176c2055ae41041
BLAKE2b-256 checksum
How to use checksums
0c71260b7c4384d7166012861cf97e37ab5a90bec3cc5ed309c85d4a390d2439
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp310-cp310-win_amd64.whl

Download URL seevol-0.1.0-cp310-cp310-win_amd64.whl
Size 95.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
6be4767c0807bcd01d0978827dab6f200b2b871b26be400b8090feae64633e9e
BLAKE2b-256 checksum
How to use checksums
cefa7369d800fdc691fa7cdcb34d8a3f09da334b38b84d31b37d763cadb91f76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp310-cp310-win32.whl

Download URL seevol-0.1.0-cp310-cp310-win32.whl
Size 81.5 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
acd39da4240dcb1a55a97b0d9254133e9a301ebc18df06f6879528b269cdb2c3
BLAKE2b-256 checksum
How to use checksums
31200cc71af8b0119172268dec015f71984a3ca8b69145281b821d3715bea0b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 178.8 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
adad1b2de6805b0ace22edefc4fb494ad2f0b2ea5ed4d7d070616501fdca2d19
BLAKE2b-256 checksum
How to use checksums
b29fe74bc74757ba0f05933ae3e1e47adbb6bf978405b58259bf5a87902ca9e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / seevol-0.1.0-cp310-cp310-macosx_26_0_arm64.whl

Download URL seevol-0.1.0-cp310-cp310-macosx_26_0_arm64.whl
Size 325.6 kB
Tags CPython 3.10 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
d3e62d0b577ce3e097ebdfcf40aaf26f4f67e799d308cf67fe2cbd80cbb23935
BLAKE2b-256 checksum
How to use checksums
3cdb05dd0c1708e6dc7e394b7460f76cc2e0b3ef1ba8e8c45437046b71599f47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for seevol 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page