Skip to main content

vibespatial-raster

GPU-first raster processing for vibeSpatial. Custom NVRTC kernels and CCCL primitives for every operation — algebra, focal, zonal stats, labeling, rasterize, polygonize — with CPU fallbacks via scipy and rasterio.

[!WARNING] vibeSpatial-Raster is very early in development. Operations may be unoptimized or have multiple Host/Device transfers causing reduced performance. File an issue if you hit a problem!

Operations

Category Operations GPU Backend
IO GeoTIFF, COG, JPEG2000 read/write nvImageCodec (zero-copy decode to device)
Algebra add, subtract, multiply, divide, apply, where, classify CuPy element-wise
Focal convolution, Gaussian filter, slope, aspect NVRTC shared-memory stencil kernels
Zonal count, sum, mean, min, max, std, median CCCL segmented reduce
Rasterize vector-to-raster (point-in-polygon) NVRTC per-pixel PIP kernel
Label connected components (4/8 connectivity) NVRTC union-find
Morphology erode, dilate, open, close, sieve NVRTC tiled kernels
Polygonize raster-to-vector (marching squares) NVRTC classify + emit edges

Install

pip install vibespatial-raster            # core (CPU-only, scipy fallback)
pip install vibespatial-raster[io]        # + rasterio for GeoTIFF/COG
pip install vibespatial-raster[cu12]      # + CUDA 12, CuPy, nvImageCodec
pip install vibespatial-raster[cu13]      # + CUDA 13, CuPy, nvImageCodec

For development:

uv sync --group dev

Usage

from vibespatial.raster import read_raster, raster_slope, zonal_stats

# Read a GeoTIFF (GPU-native decode when available, rasterio fallback)
raster = read_raster("elevation.tif")

# Terrain analysis — NVRTC stencil kernels on GPU
slope = raster_slope(raster)

# Per-zone statistics — CCCL segmented reduce on GPU
stats = zonal_stats(zones, slope, ["mean", "max", "std"])

Connected components + polygonize

from vibespatial.raster import label_connected_components, sieve_filter, polygonize_to_gdf

labels = label_connected_components(binary_raster, connectivity=8)
labels = sieve_filter(labels, min_size=50)
gdf = polygonize_to_gdf(labels)

Zero-copy GPU pipeline

OwnedRasterArray tracks HOST/DEVICE residency. Move data to GPU once, then all operations stay on device:

from vibespatial.raster import from_numpy, raster_add

a = from_numpy(data_a, affine=affine, crs="EPSG:4326")
b = from_numpy(data_b, affine=affine, crs="EPSG:4326")
a.move_to("DEVICE")
b.move_to("DEVICE")

result = raster_add(a, b)  # no host-device round-trip

GPU-native IO

When nvImageCodec is available, read_raster() decodes GeoTIFF and JPEG2000 directly to GPU memory — no host copy, no rasterio:

raster = read_raster("large_image.tif")  # → OwnedRasterArray(DEVICE)

Architecture

  • Namespace package — installs as vibespatial.raster via pkgutil.extend_path, independent release cadence from core
  • Zero-copy NVRTC kernels — no cuCIM, no CuPy ndimage; all GPU ops are custom CCCL/NVRTC
  • OwnedRasterArray — mirrors core's OwnedGeometryArray (HOST/DEVICE residency, diagnostic events, nodata mask)
  • Dual IO — HYBRID path (rasterio on CPU) + GPU_NATIVE path (nvImageCodec direct-to-device)
  • CPU fallback — scipy.ndimage, rasterio.features for every operation; tests validate GPU against CPU

Test

uv run pytest                              # all CPU tests
uv run pytest -m gpu                       # GPU kernel tests (requires CUDA)
uv run pytest tests/test_raster_algebra.py # specific module

License

Apache 2.0 — see LICENSE.

Metadata

Release files for vibespatial-raster 0.1.7

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

Source distribution (sdist)

Source distribution for vibespatial-raster 0.1.7
File Size Uploaded
vibespatial_raster-0.1.7.tar.gz 387.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vibespatial-raster 0.1.7
File Interpreter ABI Platform
vibespatial_raster-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 532.9 kB

Release files / vibespatial_raster-0.1.7.tar.gz

Download URL vibespatial_raster-0.1.7.tar.gz
Size 387.1 kB
Tags Source
SHA-256 checksum
How to use checksums
dd38244785e32feb2c8e6c2c65236399c9c1d3feaaafcde8bed278ef6136520c
BLAKE2b-256 checksum
How to use checksums
2c783ac4cbcda5dac41af2d953f296a45245b9a3934de96b5a5cd87a3a7cea7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.

Transparency log

Release files / vibespatial_raster-0.1.7-py3-none-any.whl

Download URL vibespatial_raster-0.1.7-py3-none-any.whl
Size 145.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c62430fdd95b2723b83c87b23f5ece561307bca68c85d3b112c91668b686d7bb
BLAKE2b-256 checksum
How to use checksums
fa615c9d801aaad2d6a14d355a5f7fc013e4a804dec090757dc0325668796066
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.1

2 release files

0.1.0

2 release files

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