Skip to main content

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

seeVol

Build wheels

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.1

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

Built distributions (wheels)

Table of built distributions (wheels) for seevol 0.1.1
File Actions
seevol-0.1.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for seevol-0.1.1-cp313-cp313-win_amd64.whl
seevol-0.1.1-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details for seevol-0.1.1-cp313-cp313-win32.whl
seevol-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for seevol-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.1-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details for seevol-0.1.1-cp313-cp313-macosx_26_0_arm64.whl
seevol-0.1.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for seevol-0.1.1-cp312-cp312-win_amd64.whl
seevol-0.1.1-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details for seevol-0.1.1-cp312-cp312-win32.whl
seevol-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for seevol-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.1-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details for seevol-0.1.1-cp312-cp312-macosx_26_0_arm64.whl
seevol-0.1.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for seevol-0.1.1-cp311-cp311-win_amd64.whl
seevol-0.1.1-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details for seevol-0.1.1-cp311-cp311-win32.whl
seevol-0.1.1-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.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.1-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details for seevol-0.1.1-cp311-cp311-macosx_26_0_arm64.whl
seevol-0.1.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for seevol-0.1.1-cp310-cp310-win_amd64.whl
seevol-0.1.1-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details for seevol-0.1.1-cp310-cp310-win32.whl
seevol-0.1.1-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.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.1-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details for seevol-0.1.1-cp310-cp310-macosx_26_0_arm64.whl

Total release size: 2.7 MB

Release files / seevol-0.1.1-cp313-cp313-win_amd64.whl

Download URL seevol-0.1.1-cp313-cp313-win_amd64.whl
Size 98.6 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
f56d7f708773fad969f1892b260567d921b796521636de0fba62abf2d66dd67d
BLAKE2b-256 checksum
How to use checksums
45b8812f591a276c08c0375d90d385301527c415ab0f3428510965defbc0ca0c
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.1-cp313-cp313-win32.whl

Download URL seevol-0.1.1-cp313-cp313-win32.whl
Size 83.4 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
2c84d765139d51049a1f1308f6352cc94dfdcac45332e7bf1ed040f837029501
BLAKE2b-256 checksum
How to use checksums
a580edbe7c6ba19e925dc9de3f305dc8234c91db5415666f52641bd894cf2866
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.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 180.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4adb1f77edd97d2bdf8ec17ca5bf2eb100ccd42d110edce4dcfecf103d1e82d1
BLAKE2b-256 checksum
How to use checksums
544317f136d74721f87644e2366170eca2124946528b7b8da342d89f689f9721
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.1-cp313-cp313-macosx_26_0_arm64.whl

Download URL seevol-0.1.1-cp313-cp313-macosx_26_0_arm64.whl
Size 328.2 kB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
8cd4770bf2623178e4105a7a458632fd7b4d103379eb5d4f85767dae1ee53c17
BLAKE2b-256 checksum
How to use checksums
34c3e8236a33ff8a33b5444c01a7f1529b27cf93b1c794b099bcbd3bc08cc9d3
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.1-cp312-cp312-win_amd64.whl

Download URL seevol-0.1.1-cp312-cp312-win_amd64.whl
Size 98.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
af9b4a331893a5a3b70ad3908c01a8d641803bb9d8a1f6085bfc450e6005d2a5
BLAKE2b-256 checksum
How to use checksums
a22b530153b5607102bb0495040fa40e28090dd2f31de4c9651d0c8f78d2d91d
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.1-cp312-cp312-win32.whl

Download URL seevol-0.1.1-cp312-cp312-win32.whl
Size 83.4 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
da092017e20b92fee191065317bf3cecbb77dae712d866f3ebe5ea1c583aa672
BLAKE2b-256 checksum
How to use checksums
cc099a67a747c2dfcf691bc6ecbd9d59d424cc54947f5dd5db0ea156b3e9b6db
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.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 180.3 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
664ace4735b2ddd55fb1889847d9d46084b3737dfc61eee30908d672af1553e7
BLAKE2b-256 checksum
How to use checksums
858e7478874ad89ff30a8c6eabcefa0879b3977cfdc4d69f3d6c2f9700699603
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.1-cp312-cp312-macosx_26_0_arm64.whl

Download URL seevol-0.1.1-cp312-cp312-macosx_26_0_arm64.whl
Size 328.2 kB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
6a1ad93ec6c3bda174dd5a4b0d106cbf7997754016ec3d2f6db5e321f46bdc8c
BLAKE2b-256 checksum
How to use checksums
1bae51ce21e8555fb8cfd000b3c5c63600c01aefd0cf7e43ee3dcb269591ad31
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.1-cp311-cp311-win_amd64.whl

Download URL seevol-0.1.1-cp311-cp311-win_amd64.whl
Size 95.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
30a22b7ceec7e6cdbdf8117f706dc7cb0f6a7d11fe13c2426d91f9eb82996d1e
BLAKE2b-256 checksum
How to use checksums
15dae7d1c6563900bf2465303ff4507318632463b4d366d9c2eafb439163e8c4
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.1-cp311-cp311-win32.whl

Download URL seevol-0.1.1-cp311-cp311-win32.whl
Size 82.5 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
97984af9e163955cccd41d5e4697386f54fa65bb01777706b6f7960e832f9273
BLAKE2b-256 checksum
How to use checksums
531a1e4beb10ed2a4e8b2ea1d1d70655c18c5ed493d1d5ccc827002416b1bbec
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.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.1-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
401e59c946e13f5c3f246cd8c65c415529d5e1f01a76535276bc89a7b5024ceb
BLAKE2b-256 checksum
How to use checksums
a0e4b4c00028104db0c0c4307146d38ce39fa2ecada742cd7060b5bcaba017dc
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.1-cp311-cp311-macosx_26_0_arm64.whl

Download URL seevol-0.1.1-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
48b2bf75f6736ec1a5ac586305d58f3d0a89a439295a58cb8e97087f5e40df4d
BLAKE2b-256 checksum
How to use checksums
39909728241b850dee0ac8ea04a4c2bcd2413e78ad44c52c4314bd56ed751824
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.1-cp310-cp310-win_amd64.whl

Download URL seevol-0.1.1-cp310-cp310-win_amd64.whl
Size 95.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
cd967177c5d50bed068eaa3b07e8d8379c5907b521f366fec8650daf95908f9c
BLAKE2b-256 checksum
How to use checksums
fd34f179520bb51a0a752e87c5a7a58155da54423c13efec75a586040525387c
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.1-cp310-cp310-win32.whl

Download URL seevol-0.1.1-cp310-cp310-win32.whl
Size 81.5 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
10c5b6c2cb3bc29be938fd24bd579cbd81f995feb818d4082c01bd72e7b79750
BLAKE2b-256 checksum
How to use checksums
6bf762f33faf92250bf927a70c0cd05b574212f08358fa457e1557faf638a844
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.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.1-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
37d20d5af249c39387c15ac8d1b4b8169d0f48130c7b2cd7eb6bff6bb494530b
BLAKE2b-256 checksum
How to use checksums
4220d8a236be9c6a82b7ceacdf78991126bb4b13e91663bfe62364ad264005ab
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.1-cp310-cp310-macosx_26_0_arm64.whl

Download URL seevol-0.1.1-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
40c4067c74b2eb43863bb6a130bbc1fb7d435704b5f73a6c89e7973679f32db8
BLAKE2b-256 checksum
How to use checksums
a76d014fc73e59d5b824c6d906b313dbd825091571018f00dd0a80861170547e
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.1

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