Skip to main content

pyEliasFano offers quasi-succinct represenations for monotone non-decreasing sequences of integers.

Project description

pyEliasFano

DOI

pyEliasFano offers a quasi-succinct represenation for a monotone non-decreasing sequence of n integers from the universe [0 . . . m) occupying 2n+nceil(log2(m/n)) bits.

by Antonio Mallia, 2018

It supports the following operations:

  • select(k): nearly constant time access to the k-th element,
  • rank(x): access to the index within the structure for given integer x.
  • nextGEQ(x): fast access to the smallest integer of the sequence that is greater or equal than a given x
  • nextLEQ(x): fast access to the largest integer of the sequence that is smaller or equal than a given x

Installation

pip install pyEliasFano

Usage

from pyEliasFano import EliasFano

imports the module.

integers = sorted([123, 1343, 2141, 35312, 4343434])
ef = EliasFano(integers)

creates an Elias-Fano structure for the sorted integers list.

Rank and Select

ef.select(2)

returns the integer stored at index position 2. Here we get 2141.

ef.rank(4343434)

returns the index position for the given integer if stored within the Elias-Fano structure. Here, we get 4.

nextGEQ and nextLEQ

ef.nextGEQ(1345)

returns the smallest integer stored in the Elias-Fano structure that is larger than the given integer.

ef.nextLEQ(4343420)

returns the largest integer stored in the Elias-Fano structure that is smaller than the given integer. Here, we get 35312.

Citation

@misc{rmrschub_2021_pyEliasFano,
    author       = {René Schubotz},
    title        = {{pyEliasFano: Quasi-succinct represenations for monotone non-decreasing sequences of integers.}},
    month        = may,
    year         = 2021,
    doi          = {10.5281/zenodo.4774741},
    version      = {0.0.6},
    publisher    = {Zenodo},
    url          = {https://github.com/rmrschub/pyEliasFano}
    }

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

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

pyEliasFano-0.0.6.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

pyEliasFano-0.0.6-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file pyEliasFano-0.0.6.tar.gz.

File metadata

  • Download URL: pyEliasFano-0.0.6.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pyEliasFano-0.0.6.tar.gz
Algorithm Hash digest
SHA256 25c266256ea9ccf201f3427d8929326d13ec39f8246a272e20a3656953d52780
MD5 037cd588073d79aac948fe7e8acd5e18
BLAKE2b-256 5488e5b2c2a8be7fcff5227033c24040ed36eb9b19bf3b8704163b37510a4045

See more details on using hashes here.

File details

Details for the file pyEliasFano-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: pyEliasFano-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pyEliasFano-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e4600df2769ecf70582406f662927db4a1079c1d2b1162d5d8501cb64fc45a80
MD5 9ec82e669561b680c620d8837ec65bc7
BLAKE2b-256 b33dc1a4e9d3a6a9242e7f23ca77abb397a363624b23c4451783f262cf4e720c

See more details on using hashes here.

Supported by

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