Hybrid Dependency Hypergraphs for quantum computation: translation, visualization, and partitioning.
Project description
hdh
Hybrid Dependency Hypergraphs for Quantum Computation
· MIT Licensed · Author: Maria Gragera Garces
Work in Progress — Preparing for 1.0
What is HDH?
HDH (Hybrid Dependency Hypergraph) is an intermediate representation designed to describe quantum computations in a model-agnostic way. It provides a unified structure that makes it easier to:
- Translate quantum programs (e.g., from Qiskit or QASM) into a common hypergraph format
- Analyze and visualize the logical and temporal dependencies within a computation
- Partition workloads across devices using tools like METIS or KaHyPar, taking into account hardware and network constraints
Current Capabilities
- Qiskit circuit translation
- OpenQASM 2.0 file parsing
- Graph-based printing and canonical formatting
- Partitioning with METIS using custom HDH-to-graph translation
- Model-specific abstractions for:
- Quantum Circuits
- Measurement-Based Quantum Computing (MBQC)
- Quantum Walks
- Quantum Cellular Automata (QCA)
- Analysis tools for:
- Cut cost estimation across partitions
- Partition size reporting
- Parallelism tracking by time step
- Integration with
networkxandmetis
Includes test examples for:
- Circuit translation (
test_convert_from_qiskit.py) - QASM import (
test_convert_from_qasm.py) - MBQC (
mbqc_test.py) - Quantum Walks (
qw_test.py) - Quantum Cellular Automata (
qca_test.py) - Protocol demos (
teleportation_protocol_logo.py)
Installation
pip install hdh
Quickstart
From Qiskit
from qiskit import QuantumCircuit
from hdh.converters.convert_from_qiskit import from_qiskit
from hdh.visualize import plot_hdh
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
hdh = from_qiskit(qc)
plot_hdh(hdh)
From QASM file
from hdh.converters.convert_from_qasm import from_qasm
from hdh.visualize import plot_hdh
qasm_path = os.path.join(os.path.dirname(__file__), 'test_qasm_file.qasm')
hdh = from_qasm('file', qasm_path)
plot_hdh(hdh)
Partitioning
from hdh.passes.cut import compute_cut, cost, partition_sizes, compute_parallelism_by_time
num_parts = 3
partitions = compute_cut(hdh, num_parts)
print(f"\nMETIS partition into {num_parts} parts:")
for i, part in enumerate(partitions):
print(f"Partition {i}: {sorted(part)}")
# plot_hdh(hdh)
cut_cost = cost(hdh, partitions)
sizes = partition_sizes(partitions)
global_parallelism = compute_parallelism_by_time(hdh, partitions, mode="global")
parallelism_at_t3 = compute_parallelism_by_time(hdh, partitions, mode="local", time_step=3)
print("\n--- QW Metrics ---")
print(f"\nCut cost: {cut_cost}")
print(f"Partition sizes: {sizes}")
print(f"Parallelism over time: {global_parallelism}")
print(f"Parallelism at time t=3: {parallelism_at_t3}")
Example Use Cases
- Visualize quantum protocols (e.g., teleportation)
- Analyze dependencies in quantum walk evolutions
- Explore entanglement flow in MBQC patterns
- Partition large circuits across heterogeneous QPUs
Coming Soon
- Compatibility with Cirq, Braket, and Pennylane
- Full graphical UI for HDH visualization
- Native noise-aware binning strategies
- Better cut handling for distributed execution
Tests and Demos
All tests are under tests/ and can be run with:
pytest
If you're interested in the HDH of a specific model, see in manual_tests:
mbqc_test.pyfor MBQC circuitsqca_test.pyfor Cellular Automataqw_test.pyfor Quantum Walksteleportation_protocol_logo.pyfor a protocol-specific demo
Contributing
Pull requests welcome. Please open an issue or get in touch if you're interested in:
- SDK compatibility
- Optimization strategies
- Frontend tools (visualization, benchmarking)
Citation
More formal citation and paper preprint coming soon. Stay tuned for updates.
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 hdh-0.1.0.tar.gz.
File metadata
- Download URL: hdh-0.1.0.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ade2521619d66e713847e56f04ae60b7bdef689860233e8d964079f1bc36a182
|
|
| MD5 |
1122cff0ea8b8c8783568124d20eb0c1
|
|
| BLAKE2b-256 |
18abc36a16631d692d900e66f6662bf29d0068a1a2900c3536e2817cda69e9c2
|
File details
Details for the file hdh-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hdh-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
327dfede25528f93d272529aa4a48345370d9a811d42895118976794b8c7ceee
|
|
| MD5 |
dbcb6e0b7ec6f4f29bf363ed42b39c84
|
|
| BLAKE2b-256 |
ea04c3f12c0ecb377999f8c32098c06c9b798107ea73df0695468066ef68ecbb
|