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.

Requirements

Python 3.10–3.13. Prebuilt wheels are available for Windows, Linux (x86_64), and macOS (Apple Silicon, macOS 26+). Other platforms will build from source and require CMake, a C++17 compiler, and pybind11.

Dependencies

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

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.2
File Actions
seevol-0.1.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for seevol-0.1.2-cp313-cp313-win_amd64.whl
seevol-0.1.2-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details for seevol-0.1.2-cp313-cp313-win32.whl
seevol-0.1.2-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.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.2-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details for seevol-0.1.2-cp313-cp313-macosx_26_0_arm64.whl
seevol-0.1.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for seevol-0.1.2-cp312-cp312-win_amd64.whl
seevol-0.1.2-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details for seevol-0.1.2-cp312-cp312-win32.whl
seevol-0.1.2-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.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.2-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details for seevol-0.1.2-cp312-cp312-macosx_26_0_arm64.whl
seevol-0.1.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for seevol-0.1.2-cp311-cp311-win_amd64.whl
seevol-0.1.2-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details for seevol-0.1.2-cp311-cp311-win32.whl
seevol-0.1.2-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.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.2-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details for seevol-0.1.2-cp311-cp311-macosx_26_0_arm64.whl
seevol-0.1.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for seevol-0.1.2-cp310-cp310-win_amd64.whl
seevol-0.1.2-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details for seevol-0.1.2-cp310-cp310-win32.whl
seevol-0.1.2-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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
seevol-0.1.2-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details for seevol-0.1.2-cp310-cp310-macosx_26_0_arm64.whl

Total release size: 2.7 MB

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

Download URL seevol-0.1.2-cp313-cp313-win_amd64.whl
Size 98.6 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2a4d026e58ce402765725915e039dbc76f75496f2909d461089d9901d1913c77
BLAKE2b-256 checksum
How to use checksums
c0e7acacb1444708549cae46a3c252c53da63d933ec634be65b567051be0b0a4
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.2-cp313-cp313-win32.whl

Download URL seevol-0.1.2-cp313-cp313-win32.whl
Size 83.5 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
1b47cf08f9960135de37ded0da0a82a13ed6a860bb284b9b40cd6e27fce81b87
BLAKE2b-256 checksum
How to use checksums
3e7b22ad5f2035f6f5609407e19e46ad0f7ec7aae298668ba39367367d5cb6d3
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.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 180.5 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fd28774dae542fbe38de6d61dc8ea6de41af32c23fa022b11641ef3d3a914149
BLAKE2b-256 checksum
How to use checksums
d17e7d8eaaf8dc5f84d8babff7281275362d72ed35724d214e8687b8c253bafc
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.2-cp313-cp313-macosx_26_0_arm64.whl

Download URL seevol-0.1.2-cp313-cp313-macosx_26_0_arm64.whl
Size 328.3 kB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
a9ba141eda8b1b6edbe4588e45fbe8b99e0648341fa8a6b49cf5f6226be4367e
BLAKE2b-256 checksum
How to use checksums
92e9c0df55d5f1f53865c28fd6fb7f1c8a9fee2d420b32912f26c9dc1c6d9203
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.2-cp312-cp312-win_amd64.whl

Download URL seevol-0.1.2-cp312-cp312-win_amd64.whl
Size 98.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d79780bc8ac0ca0dfe2f002c465a09634bcede946fc5a5e8eff457de4aa43dce
BLAKE2b-256 checksum
How to use checksums
1fa0ed61cc3bda07eebe9d817550c83184ff102199f637905c4eb76a55b93d3c
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.2-cp312-cp312-win32.whl

Download URL seevol-0.1.2-cp312-cp312-win32.whl
Size 83.5 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
36b045bf24d14d7f4fd776a5e611d7dba68e7c171a0866e8938525b261d27c85
BLAKE2b-256 checksum
How to use checksums
245cf374adda55bdd6a40e82c4b4245ecc197dca1521aa4137fdbda81cc2260e
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.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 180.4 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
847d29c0ac01a16a5ca7cfdf72f04339a15922a996b40b1f66a1a4ace79e3a9e
BLAKE2b-256 checksum
How to use checksums
8494d345d3acc1a7094b332bcf3949173fb183a91054de5d48cb7fcc99fb6251
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.2-cp312-cp312-macosx_26_0_arm64.whl

Download URL seevol-0.1.2-cp312-cp312-macosx_26_0_arm64.whl
Size 328.3 kB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
8d6a8c124e66c6f1e39b57563550f63b98a02aaff2fa1a6e8af6950f1ce5a3fd
BLAKE2b-256 checksum
How to use checksums
6f548e669d5e9861a9230ba2b6fb18219304df8effae6ba0aa42299009c00671
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.2-cp311-cp311-win_amd64.whl

Download URL seevol-0.1.2-cp311-cp311-win_amd64.whl
Size 95.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
229af433267bab657f16cc44fb10b88fe65f79f32df4cbf92a16282903511577
BLAKE2b-256 checksum
How to use checksums
78f499ad36a7328ee8bd71e3672779f5ed5cc70d3195180453817fa2dbd00b48
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.2-cp311-cp311-win32.whl

Download URL seevol-0.1.2-cp311-cp311-win32.whl
Size 82.6 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
5bbffa7395717f8bb1e6a5b6abcd8387f83cb0cd18f67ab882e416930654082f
BLAKE2b-256 checksum
How to use checksums
9a51fd9bcfb124fca5bfb8abd6bcfcdd6ff6f464f5991baab68850f27b87e5eb
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.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 179.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
183377491f71695eb2c2d2cf5af9c0e871b56c18df07534b9608b222adfb5fa4
BLAKE2b-256 checksum
How to use checksums
1d1b0620b673a10bcc53b1f4286203120cb858d1eb1e3ad9c4a6b0eb4c3edfa6
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.2-cp311-cp311-macosx_26_0_arm64.whl

Download URL seevol-0.1.2-cp311-cp311-macosx_26_0_arm64.whl
Size 326.9 kB
Tags CPython 3.11 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
a00f0284c9036acc4f6a2e15a5b0e89121a4d84afea8b9c16861e04470834708
BLAKE2b-256 checksum
How to use checksums
c0aecdec7b557d46727cd3fdb0e76ec20643b3c4201d32b806f264a058afaf13
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.2-cp310-cp310-win_amd64.whl

Download URL seevol-0.1.2-cp310-cp310-win_amd64.whl
Size 95.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
869d7826fffc7bd93d3c4640a5813d5bc6ad3d7089928d9f32fdd93135eae305
BLAKE2b-256 checksum
How to use checksums
75606ce8a74a957e33cc187d4a29c691f430b2b164df2c914ae361e6d167efe7
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.2-cp310-cp310-win32.whl

Download URL seevol-0.1.2-cp310-cp310-win32.whl
Size 81.6 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
bb97ae97e8bbf350cf4a889d39c1f0c4c2d21bc428f03eb1aee013ad1c7f52bc
BLAKE2b-256 checksum
How to use checksums
9f6870a99d322036d1d99d00d110246ae39925d219cb77b3b2f537cbcafb64be
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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL seevol-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 178.9 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
306a844fd3e0eac0ce57df9f84385c4d2c5b96ef915c5628542525055a608557
BLAKE2b-256 checksum
How to use checksums
00d0830af043d29da1577d1ee3561078e4ddcdbc923b20909073cc0196a84ed6
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.2-cp310-cp310-macosx_26_0_arm64.whl

Download URL seevol-0.1.2-cp310-cp310-macosx_26_0_arm64.whl
Size 325.7 kB
Tags CPython 3.10 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
53d7422752f56b1ef3d58df705fde252a8940217336203010c293fdeaea30486
BLAKE2b-256 checksum
How to use checksums
759dc64aae3daa08f8dfc899b3c529436939b015772c554eafca07b756edd167
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.2

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