A Python library for calculating delta hyperbolicity.
Project description
hypdelta
hypdelta is a Python library for calculating delta hyperbolicity of distance matrices using various strategies and computational devices (CPU/GPU). It provides flexibility in choosing the method and device for computation to balance between accuracy and performance.
Features
- Multiple Strategies: Supports naive, condensed, heuristic, CCL, and cartesian strategies for calculating delta hyperbolicity.
- Device Flexibility: Can run on both CPU and GPU.
- Customizable Parameters: Allows for setting parameters like block size, number of tries, and heuristic options.
Installation
To install hypdelta, you can clone the repository and install the requirements:
pip install hypdelta
Usage
Here's a basic example to get you started with hypdelta:
import numpy as np
from hypdelta import hypdelta
# Generate a synthetic distance matrix
def generate_synthetic_points(dimensions, num_points):
points = np.random.rand(num_points, dimensions)
return points
def build_dist_matrix(data):
arr_all_dist = []
for p in data:
arr_dist = list(
map(lambda x: 0 if (p == x).all() else np.linalg.norm(p - x), data)
)
arr_all_dist.append(arr_dist)
arr_all_dist = np.asarray(arr_all_dist)
return arr_all_dist
def generate_dists(dim=100, num_points=100):
points = generate_synthetic_points(dim, num_points)
dist_arr = build_dist_matrix(points)
return dist_arr
distance_matrix = generate_dists(dim=10, num_points=50)
# Calculate delta hyperbolicity using the naive strategy on CPU
delta = hypdelta(distance_matrix, device="cpu", strategy="naive")
print(f"Delta hyperbolicity (naive, CPU): {delta}")
# Calculate delta hyperbolicity using the CCL strategy on GPU
delta = hypdelta(distance_matrix, device="gpu", strategy="CCL", l=0.1)
print(f"Delta hyperbolicity (CCL, GPU): {delta}")
Strategies and Devices
The hypdelta function supports the following strategies:
"naive": A straightforward approach to calculate delta hyperbolicity."condensed": A strategy that uses condensed data representation."heuristic": A heuristic-based approach for faster computation."CCL": A strategy using far-away pairs for computation."cartesian": A strategy that utilizes the cartesian product of pairs.
And the following devices:
"cpu": Computation on the CPU."gpu": Computation on the GPU.
Parameters
distance_matrix: The distance matrix for which delta hyperbolicity is to be computed.device: The device to use for computation, can be"cpu"or"gpu".strategy: The strategy to use for computation. Options are"naive","condensed","heuristic","CCL", and"cartesian".l: A parameter for certain strategies like"CCL". Default is 0.05.tries: Number of tries for the"condensed"strategy. Default is 25.heuristic: Whether to use heuristic methods for the"condensed"strategy. Default is True.threadsperblock: The number of threads per block for GPU computation. Default is (16, 16, 4).max_threads: The maximum number of threads to use for GPU computation in the"cartesian"strategy. Default is 1024.max_gpu_mem: The maximum gpu memory in Gb. Used in"cartesian"strategy. Default is 16.
Contributing
Contributions are welcome! Please fork the repository and submit a pull request for any enhancements or bug fixes.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Feel free to explore the repository and experiment with different strategies and devices to find the optimal settings for your use case.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hypdelta-0.1.42.tar.gz.
File metadata
- Download URL: hypdelta-0.1.42.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.5 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b09b47f979c3bb46f58dd1be53f682b39d2342460a6ab9bd8a7fe67695e8118
|
|
| MD5 |
c2560e2fc7d744b2408e709e408798d2
|
|
| BLAKE2b-256 |
6035294c23e8abec179b5661b5865c9e576f8e971e86f7cce5828f016b7c03df
|
File details
Details for the file hypdelta-0.1.42-py2.py3-none-any.whl.
File metadata
- Download URL: hypdelta-0.1.42-py2.py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.5 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f98cabb2c5a8e0d07bd40e77a815304cfb9d9056768c42b2eef691f18c192cdc
|
|
| MD5 |
787f5c3a81cdf54026857c1ce980f7a1
|
|
| BLAKE2b-256 |
b4d84533bf985ef25b73fb9fa23a7c194895cde33024a30564173c59c9ed1877
|