Skip to main content

pointgrid-rs

High-performance Rust implementation of deterministic point-grid alignment and numerical primitives for semantic maps.

Overview

pointgrid-rs provides fast, deterministic algorithms for:

  • Point-grid alignment: Maps 2D points to a checkerboard grid pattern
  • 1D uniform filtering: Scipy-compatible filtering with reflect/wrap boundary modes
  • Linear sum assignment: Optimal assignment solver for cost matrices

This package is a drop-in replacement for the Python pointgrid package, offering 700x faster performance on large datasets.

Installation

pip install pointgrid-rs

Usage

Point-Grid Alignment

import numpy as np
import pointgrid_rs

points = np.array([[0.0, 0.0], [0.1, 0.2], [0.9, 1.0], [0.4, 0.6]])
aligned = pointgrid_rs.align_points_to_grid(points)
# Returns: array([[0.12857143, 0.        ],
#                 [0.        , 0.14285714],
#                 [0.64285714, 0.85714286],
#                 [0.38571429, 0.57142857]])

Uniform Filter

values = np.array([1.0, 2.0, 3.0, 4.0])
filtered = pointgrid_rs.uniform_filter1d(values, [4], size=3, axis=0, mode='reflect')
# Returns: array([1.33333333, 2.        , 3.        , 3.66666667])

Linear Sum Assignment

costs = np.array([[4.0, 1.0, 3.0],
                  [2.0, 0.0, 5.0],
                  [3.0, 2.0, 2.0]])
assignment = pointgrid_rs.linear_sum_assignment(costs)
# Returns: array([1, 0, 2])

Performance

Benchmark on 10,000 points:

Implementation Time
Python pointgrid 2,756 ms
Rust pointgrid-rs 4.3 ms

Speedup: 700x faster

API Reference

align_points_to_grid(points: np.ndarray) -> np.ndarray

Aligns 2D points to a deterministic checkerboard grid pattern.

Parameters:

  • points: numpy array of shape (n, 2) containing 2D coordinates

Returns:

  • numpy array of shape (n, 2) with aligned coordinates

uniform_filter1d(values: np.ndarray, shape: list, size: int, axis: int, mode: str) -> np.ndarray

Applies a uniform (box) filter along a specified axis with boundary handling.

Parameters:

  • values: 1D numpy array of values
  • shape: list specifying the shape of the multi-dimensional array
  • size: size of the uniform filter kernel
  • axis: axis along which to apply the filter
  • mode: boundary mode, either 'reflect' or 'wrap'

Returns:

  • 1D numpy array with filtered values

linear_sum_assignment(costs: np.ndarray) -> np.ndarray

Solves the linear sum assignment problem (Hungarian algorithm).

Parameters:

  • costs: 2D numpy array of shape (n, n) containing the cost matrix

Returns:

  • 1D numpy array where result[i] is the column assigned to row i

License

MIT

Acknowledgements

This is a Rust reimplementation of the original pointgrid Python package by the Yale DHLab.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pointgrid_rs-0.1.2.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pointgrid_rs-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (236.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

Details for the file pointgrid_rs-0.1.2.tar.gz.

File metadata

  • Download URL: pointgrid_rs-0.1.2.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for pointgrid_rs-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2f45d9a191ee1d45d00d88ea539de7546d7dc6541d205b942442db333f784e69
MD5 9224ac9f52286dce65d1150612dd38f0
BLAKE2b-256 467ff59ccdcce68008ff35f025e39eea92cc5ef8c07817330f84ff0575f1fd18

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3d6c0a46f71389ebc2e02448dc67cfe7572b44c50e41e520f9ce81b5d72aab5
MD5 fdc075ee56aafa28d0ee440310f199f9
BLAKE2b-256 a0b849fc20adaad38aad09a0c4be7714d9b5f89293127c724b0b166068b50ffc

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.5

8 files

0.1.4

7 files

0.1.3

5 files

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 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