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

import pyEliasFano as EF

imports the module.

integers = sorted([123, 1343, 2141, 35312, 4343434])
ef = 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.3.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyEliasFano-0.0.3.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.3.tar.gz
Algorithm Hash digest
SHA256 77854e7285f7858317229dd22d02284c2b63285bfe9a9c56d5e096dd416992d6
MD5 6c6beeb7fe9c29c64667794937676fe2
BLAKE2b-256 03fe969fda788b355820149c17940c9d56283f5897e5df505b273f4708fb188f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyEliasFano-0.0.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6996beb3991088fb60ee681dd33b4e6d80d48b927de74431abf52c95e3695d5d
MD5 59658a8f2972495cf599a1608f418993
BLAKE2b-256 0419ee773ffbf6c9ed12b60d0a51119b52bbcd7914761adb75c45039f104210b

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