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.5.tar.gz (9.2 kB view details)

Uploaded Source

Built Distributions

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

pointgrid_rs-0.1.5-cp314-cp314-macosx_11_0_arm64.whl (248.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pointgrid_rs-0.1.5-cp313-cp313-manylinux_2_34_x86_64.whl (331.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pointgrid_rs-0.1.5-cp313-cp313-macosx_11_0_arm64.whl (282.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pointgrid_rs-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl (332.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pointgrid_rs-0.1.5-cp312-cp312-macosx_11_0_arm64.whl (282.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pointgrid_rs-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl (332.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pointgrid_rs-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (285.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pointgrid_rs-0.1.5.tar.gz
Algorithm Hash digest
SHA256 f0803ab6ca07a0c0ea458ad8185935a2dfa1fb9da2473b1bd98e6a1efc162d0d
MD5 19535af7a2623c086f5be7a71b02746a
BLAKE2b-256 3f2b6df3bb761e2d7a8e9bd38da017fd506b992796432d1118f30f732432e059

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee45eba50b559c20688540f5fcfff612e493eb6dc040ed66ffda30ec4b0c286a
MD5 310315547948fbc66843e7373c8adf4d
BLAKE2b-256 fc96013cf5ea266427e50f1d769e5fbe153e0a67b992ba8539b836f73d50a269

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.5-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a1451e9e7c2a6704d1eb8c0cb0d2cfd3f5780cdf971d14205c268dd397bc3a7b
MD5 7af8a6a381fe85044d1ffcc21c99edd9
BLAKE2b-256 acb19070a0ae8143b636f5893abf133142836a5d981c292e3cf6beced7248176

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb35dcee48bba3b2ea898d54f5d4fc96197614415d463b4b619ce86321f23eef
MD5 5d59084326c30efb4a6d8765af612c25
BLAKE2b-256 d4ba817be832c240578263eebb0f80a789a93cec8fee3f81674503d2e920fdc3

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4646d31967989e0c0bc45f874dc6176b4ea23f5a38069512d73cecef9d701258
MD5 326ec10deab548f888ff2746b460c5cf
BLAKE2b-256 470556bac72f0b5a0009b3b77482b10083b8cf4dc8f8fd04596abf41d93df627

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 142dd9ba841de945fcc0ec773a6cab9d8851f4a524e44180eead558572f7018d
MD5 a71ce193d6e58a93765fda9643743976
BLAKE2b-256 30488e499d6b60c0b38c4ae48675927d09a1f2c542baa6401491a6b20ce1f790

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c9ca74fe79dd33467aa726cea28e697be1277da54e19fb928d41a74ca89a7947
MD5 7aee799d150b3646471375e5ce741b6f
BLAKE2b-256 38ba2631e78722b1088a1986687b7aab971ae8f05419cff3f0a8cec6e9589219

See more details on using hashes here.

File details

Details for the file pointgrid_rs-0.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pointgrid_rs-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 67b38bed91bfe287278b35be3a3d6db995e4db67015fce1cb1958ba14c1f096e
MD5 f9fde2cd8fbec17370c6cb228f20c021
BLAKE2b-256 6926c9e1cf1c3bf1b3687aa94ef770aa17608bdfb852d2c8b543b6e2680e5bfb

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.5 This release

8 files

0.1.4

7 files

0.1.3

5 files

0.1.2

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