Skip to main content

Python wrapper for fLZc complexity measure (based on https://github.com/lcbarnett/fLZc)

Project description

fLZc_python — Fast Lempel–Ziv Complexity for Python

A Python wrapper around the fLZc C library, implementing the original LZ76c [^1] and LZ78c [^2] versions of complexity measures (with optional normalisation) in optimized C, exposed via a clean Python API.

Features

  • LZ76c & LZ78c: exact implementations of the original Lempel–Ziv algorithms
  • Running complexity: compute the complexity profile along a sequence
  • Dictionary output: retrieve the phrase dictionary used by the algorithm
  • Normalisation: theoretical or empirical scaling factors (as in the original fLZc)
  • Pure-Python API built on C for maximum speed (via ctypes)
  • Works out-of-the-box on macOS & Linux; Windows support untested

Installation (Development Mode)

This project uses scikit-build-core + CMake under PEP 517.

Prerequisites

  • Python 3.8–3.13
  • pip, a C99-compatible compiler, and CMake ≥ 3.15
  • macOS or Linux (Windows support not yet tested)

Step by step

Clone and install in editable mode:

git clone https://github.com/romybeaute/fLZc_python.git
cd fLZc_python
python -m venv .flzcvenv
source .flzcvenv/bin/activate

# clean previous builds (optional)
rm -rf build/ dist/ _skbuild/ fLZc_python/liblzc.*

# install in editable mode (builds & places the shared library)
pip install -e .

Examples & Testing

  • Demo:\ fLZc_python/examples/lzc_demo.py provides an end-to-end example (including plotting).

  • Unit tests:\ Run pytest tests/ to verify correctness on canonical sequences.

Implementation Details

  • LZ76c follows the algorithm of Kaspar & Schuster [^3], with optional dictionary retrieval and running-profile support.
  • LZ78c leverages the khashl hash-map for linear-time parsing and also supports dictionary & running outputs.
  • Normalisation factors are precomputed (via MATLAB data) for alphabets up to size 10; see the original MATLAB repo for details.

Acknowledgements

Wraps the original fLZc library by Lionel Barnett (University of Sussex).

License

Distributed under the MIT License. See LICENSE for details.


[^1]: A. Lempel and J. Ziv, On the Complexity of Finite Sequences, IEEE Trans. Info Theor. 22(1), 1976. [^2]: A. Lempel and J. Ziv, Compression of Individual Sequences via Variable-Rate Coding, IEEE Trans. Info Theor. 24(5), 1978. [^3]: F. Kaspar and H. G. Schuster, Easily calculable measure for the complexity of spatiotemporal patterns, Phys. Rev. A 36(2), 1987

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

flzc-0.1.1.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

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

flzc-0.1.1-cp313-cp313-macosx_14_0_arm64.whl (25.8 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

File details

Details for the file flzc-0.1.1.tar.gz.

File metadata

  • Download URL: flzc-0.1.1.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for flzc-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c9d5e75e80e3bbe506346bd027f7c5a5e4a499b13ee3ae8d0ea7cffe4b47e886
MD5 8c460fab10c1f49e9348f6776e2de24c
BLAKE2b-256 ffaafad22fb6711fbd3c76ec76ccf0b27d0fec97dadc0ba935cfb54eba8c335f

See more details on using hashes here.

File details

Details for the file flzc-0.1.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for flzc-0.1.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 800016e6e68d9800d9b17ebad3740be906bdc34749184aa95ef8590e78372e31
MD5 c66ba50ab8046dc5b5443c519e7e22a6
BLAKE2b-256 fbdb749158a86481c9394c629c0d3c4e9924fcc67410b69b6920a1f26f1eb2df

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