Skip to main content

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

Project description

pyEliasFano

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.

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

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.

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.4761443},
    version      = {0.0.1},
    publisher    = {Zenodo},
    url          = {https://github.com/rmrschub/pyEliasFano}
    }

DOI

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

Uploaded Source

Built Distribution

pyEliasFano-0.0.4-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyEliasFano-0.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 efb4ab9903a2f14be75f24bcf600b6bfa7a784f1093f1db7462b6571fef84a03
MD5 9e32f49e3e1f6dd109ace5bcf4ae54b0
BLAKE2b-256 c62611a46180931212d1100584701282e4e7fb0e58deabe26f06d83c014365f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyEliasFano-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 10.9 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 36e64fef14bc643516724f5cacbe91b7d4a5e0142dd05ab069fbd855f8a58e82
MD5 f8ba827513138facfbe35b0bcfded148
BLAKE2b-256 84b8befe196d35352decbf7539594eeaddbf2f39e7cad95495b9f2318f8620fb

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