Skip to main content

A high-performance toolbox for PhiID computation, accelerated by GPU.

Project description

ΩID

PyPI version License Ask DeepWiki

ΩID is a Python package for calculating the integrated information decomposition (ΦID) of time series data. It is designed for high-performance computing, with optional GPU acceleration via CuPy.

Features

  • Backend Agnostic: Seamlessly switch between CPU (NumPy) and GPU (CuPy) for computation.
  • High Performance: Vectorized operations and GPU support for significant speedups on large datasets.
  • Numerical Integrity: Results are numerically consistent with the original phyid implementation.

Installation

ΩID is available on PyPI. You can install it with pip or uv pip.

Standard Installation (CPU only)

pip install omegaid

With GPU support

To install ΩID with GPU support, you need to have a CUDA-enabled GPU and the CUDA toolkit installed. Choose the command that matches your CUDA version.

For CUDA 12.x:

pip install "omegaid[cuda-12x]"

For CUDA 11.x:

pip install "omegaid[cuda-11x]"

Usage

Selecting the Backend

You can select the computation backend by setting the OMEGAID_BACKEND environment variable before running your Python script.

  • For NumPy (default):

    export OMEGAID_BACKEND=numpy
    
  • For CuPy:

    export OMEGAID_BACKEND=cupy
    

If the variable is not set, OmegaID will default to using NumPy.

Example

Here is a simple example of how to use omegaid to calculate the Phi-ID decomposition.

import numpy as np
from omegaid.core.decomposition import calc_PhiID
from omegaid.utils.backend import set_backend

# For programmatic control, you can also use set_backend
# set_backend('cupy') 

# Generate some random time series data
n_samples = 10000
tau = 1
src = np.random.randn(n_samples)
trg = np.random.randn(n_samples)

# Calculate Phi-ID
atoms_res, calc_res = calc_PhiID(src, trg, tau)

# Print the synergistic atom (sts)
print("Synergy (sts):", np.mean(atoms_res["sts"]))

Performance

The package has been benchmarked against the original phyid implementation. The NumPy backend provides a consistent ~1.4-2x speedup. The CuPy backend shows significant performance gains on larger datasets, leveraging GPU acceleration effectively.

Note: The current benchmarks are based on a 2x2 system (two scalar time series).

Data Size Original (scipy) OmegaID (numpy) OmegaID (cupy) NumPy Speedup CuPy Speedup
10,000 0.0112s 0.0071s 0.3243s 1.58x 0.03x
100,000 0.1161s 0.0846s 0.0932s 1.37x 1.25x
500,000 0.6492s 0.4592s 0.3207s 1.41x 2.02x

The results demonstrate that for data lengths exceeding 100,000 samples, the CuPy backend begins to outperform both the original and the NumPy-based implementations, with the trend suggesting greater speedups for even larger datasets.

License

This project is licensed under the BSD 3-Clause 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

omegaid-0.2.0.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

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

omegaid-0.2.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file omegaid-0.2.0.tar.gz.

File metadata

  • Download URL: omegaid-0.2.0.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for omegaid-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b2a40dd1d93025c4d8cc901189498d25c162322e75833711f54032138294e937
MD5 027c3d0d09658621c00ddca70b90829c
BLAKE2b-256 7ad44ff1183c155c0b91d5db89ebf004bb6e5660f400f17017849fe7b0034216

See more details on using hashes here.

Provenance

The following attestation bundles were made for omegaid-0.2.0.tar.gz:

Publisher: publish-to-pypi.yml on dmf-archive/OmegaID

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

File details

Details for the file omegaid-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: omegaid-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for omegaid-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d682b702171a9a3b9a6ab87f7b3bbab8074f48f7341b559d13a03e9bfa2f728f
MD5 84aa057eb895b374025d7d7dfc4e7dca
BLAKE2b-256 5d1df84a5550cb0a1d5859be8dae0fd02e2d5f4127b3a43c0f719207e5d8c4f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for omegaid-0.2.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on dmf-archive/OmegaID

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

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