Skip to main content

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

Project description

Hilbert Bytes

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

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.1.0.tar.gz (4.4 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.1.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hilbert_bytes-0.1.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.11 Darwin/24.2.0

File hashes

Hashes for hilbert_bytes-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5f1bb6aad24647711839ed8cc9c41fdf49b0cb83ef74e36cd4a85231ff98dd2c
MD5 77d9441c01a1af69b0bea34df86af6ab
BLAKE2b-256 1ded617ff5cec9cfdb063cce23bc079104f900b8c62fe43950f68de8b41039d0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hilbert_bytes-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.11 Darwin/24.2.0

File hashes

Hashes for hilbert_bytes-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 921eb409d874012f6d88e2a78c2f2870aa3f210355e1784c1a764564b5c6591d
MD5 5de1d02bfd7b51622e2a4c0a03bbd91c
BLAKE2b-256 ea6a0e31f4696e41d0083d620e63b49d29561115bd94ad5070457e80771b36e4

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