Skip to main content

A python library for converting between d-dimensional points and indices on a hilbert curve

Project description

Hilbert Bytes

build pypi docs

Hilbert Bytes is a python library for converting to and from points in d-dimensions and their corresponding index on a hilbert curve. It's similar to hilbertcurve and numpy-hilbert-curve but is faster and more space efficient than either by keeping manipulations at the byte level, and using numba to compile the results. It also uses arbitrary precision integers, allowing you to make the grid arbitrarily fine

Installation

pip install hilbert-bytes

Usage

import hilbert_bytes
import numpy as np

points = ... # arbitrary d-dimensional points
num, dim = points.shape
# convert to big-endian bytes
points_bytes = points[..., None].astype(">u8").view("u1")
index_bytes = hilbert_bytes.encode(points_bytes)  # indies as big-endian ints
new_points_bytes = hilbert_bytes.decode(index_bytes)

If you want the indices as multi-byte ints, you can can do a similar trick in reverse:

index_bytes = ... # an array of big-endian ints
indices = index_bytes.view(">u8").astype("u8")[..., 0]

But note that this will only work if your index fits in 8 bytes

Publishing

rm -rf dist
uv build
uv publish --username __token__

Project details


Download files

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

Source Distribution

hilbert_bytes-0.6.0.tar.gz (51.5 kB view details)

Uploaded Source

Built Distribution

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

hilbert_bytes-0.6.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file hilbert_bytes-0.6.0.tar.gz.

File metadata

  • Download URL: hilbert_bytes-0.6.0.tar.gz
  • Upload date:
  • Size: 51.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.28

File hashes

Hashes for hilbert_bytes-0.6.0.tar.gz
Algorithm Hash digest
SHA256 464e79d6463a21f483f34c9ed381440ae33b3ae2fa0853cd23d8f95eb0fa4adf
MD5 17b1980bb10485e70da75ce6b4e63597
BLAKE2b-256 14a37fcf9ca39ac0170126a6fc8a5da91360e9edd6edae881410b1ebfe982c92

See more details on using hashes here.

File details

Details for the file hilbert_bytes-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hilbert_bytes-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4f72f7be98f499f883db6db8fc95e47f59c7ba368efef595fc6d8396f1cbebd
MD5 70c990047b298c8e40543271d7e7e26d
BLAKE2b-256 e8a98a0af061a286860381745ae785ce0ccaae887e9aa6fce905f7c03ac28b3e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page