Skip to main content

alp-py

CI PyPI License

Pure Python implementation of the ALP (Adaptive Lossless floating-Point) compression algorithm.

Based on: Afroozeh & Boncz, "ALP: Adaptive Lossless floating-Point Compression", ACM SIGMOD 2024. (paper · pdf)

Python port of the QTSurfer/alp-java reference implementation. Bit-exact byte-level compatibility with alp-java — files written by either implementation can be read by the other.

Status

Bit-exact aligned with alp-java — encode + decode round-trip verified against fixtures emitted by the Java reference. See the PyPI badge above for the latest version.

Install

pip install alp-codec

Usage

import numpy as np
from alp import encode, decode

values = np.array([65007.28, 65007.31, 65007.30, 65007.32], dtype=np.float64)

# Encode to bytes
blob = encode(values)

# Decode back to a NumPy float64 array
recovered = decode(blob)
assert np.array_equal(values, recovered)

Why ALP

ALP applies semantic compression to decimal floating-point arrays. For a typical financial price column at 2 decimal places it reaches 3-4 bits per value — about an order of magnitude better than Gorilla XOR or block-compressed PLAIN encodings.

The algorithm picks an (e, f) pair per block such that value × 10^e × 2^-f is exactly representable as a small int64, encodes the integers via Frame-Of-Reference + bit-packing, and stores any non-conforming values as outliers with a position list.

Reference implementations

Language Repo Status
Java QTSurfer/alp-java Reference
Python QTSurfer/alp-py This repo

License

Copyright 2026 Wualabs LTD. Apache License 2.0 — see LICENSE.

Download files

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

Source Distribution

alp_codec-0.8.3.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

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

alp_codec-0.8.3-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file alp_codec-0.8.3.tar.gz.

File metadata

  • Download URL: alp_codec-0.8.3.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for alp_codec-0.8.3.tar.gz
Algorithm Hash digest
SHA256 d34e2bdffa54c2f4aa3d3e4d1d853c449e332efa11e0bb66a42bf1ee1d9be4f3
MD5 2c8241fcebafffbba6ab89838fafa820
BLAKE2b-256 996e0142483a6d6e929720583718cbeae07126fe087ef23fca2d5a377619e6e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_codec-0.8.3.tar.gz:

Publisher: release.yml on QTSurfer/alp-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alp_codec-0.8.3-py3-none-any.whl.

File metadata

  • Download URL: alp_codec-0.8.3-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for alp_codec-0.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 36e4db6f83b4b2c7f619dba697196e123118f74e559de340ce3e6dddb490110d
MD5 f46f69305dc5f12cb1539ab3e123cc2e
BLAKE2b-256 90c513508f2702c5ba6f0948bfcb4302cc3340aa6c7babebdfca306cd12173e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_codec-0.8.3-py3-none-any.whl:

Publisher: release.yml on QTSurfer/alp-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.8.3 This release

2 files

0.8.2

2 files

0.8.1

2 files

0.8.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