HDH (Hybrid Dependency Hypergraph) is an intermediate directed hypergraph-based representation designed to encode the dependencies arising in any quantum workload. It provides a unified structure that makes it easier to:
- Translate quantum programs (e.g., a circuit or a mbqc pattern) into a unified hypergraph format
- Analyze and visualize the logical and temporal dependencies within a computation
- Partition workloads across devices, taking into account hardware and network constraints
- Qiskit, Braket, Cirq and Pennylane circuit mappings to HDHs
- OpenQASM 2.0 file parsing
- Model-specific abstractions for:
- Quantum Circuits
- Measurement-Based Quantum Computing (MBQC)
- Quantum Walks
- Quantum Cellular Automata (QCA)
- Capability to partition HDHs and evaluate partitions
pip install hdhQiskit conversion works out of the box. Cirq, PennyLane, Amazon Braket, and the KaHyPar/METIS partitioners are optional and installed via extras:
pip install hdh[cirq] # Cirq conversion (needs Python >=3.11)
pip install hdh[pennylane] # PennyLane conversion (needs Python >=3.11)
pip install hdh[braket] # Amazon Braket conversion (needs Python >=3.11)
pip install hdh[kahypar] # KaHyPar-based partitioning
pip install hdh[metis] # METIS-based partitioning (metis_telegate)
pip install hdh[all] # everything above (needs Python >=3.11)Tested against Cirq 1.7, PennyLane 0.45, and amazon-braket-sdk 1.125 — all
three now require Python >=3.11 upstream, so those extras aren't installable
on Python 3.10.
hdh[metis] installs the Python binding only — it talks to a
system-installed METIS C library via ctypes, so METIS itself must already be
available on your machine (e.g. via your OS package manager or built from
source). Without it, metis_telegate automatically falls back to a
Kernighan-Lin partition and reports which method it used.
from qiskit import QuantumCircuit
from hdh.converters 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 hdh.converters 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)All tests are under tests/ and can be run with:
pytestPull requests welcome. Please open an issue or get in touch if you're interested in:
- SDK compatibility
- Frontend tools (visualization, benchmarking)
or if you've found a bug!
More formal citation and paper preprint coming soon. Stay tuned for updates.
