Source code for bqskit.ext.qiskit.translate

"""This module implements functions for translating to and from Qiskit."""
from __future__ import annotations

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from qiskit import QuantumCircuit

from qiskit import qasm2
from bqskit.ir.circuit import Circuit
from bqskit.ir.lang.qasm2 import OPENQASM2Language


[docs] def qiskit_to_bqskit(qc: QuantumCircuit) -> Circuit: """Convert Qiskit's QuantumCircuit `qc` to a BQSKit Circuit.""" circuit = OPENQASM2Language().decode(qasm2.dumps(qc)) # circuit.renumber_qudits(list(reversed(range(circuit.num_qudits)))) return circuit
# TODO: support gates not captured by qasm
[docs] def bqskit_to_qiskit(circuit: Circuit) -> QuantumCircuit: """Convert a BQSKit Circuit to Qiskit's QuantumCircuit.""" try: from qiskit import QuantumCircuit except ImportError as e: raise ImportError( '\n\nUnable to import qiskit package.\n' 'Please ensure that it is installed with the following command:\n' '\tpip install qiskit\n', ) from e # circuit.renumber_qudits(list(reversed(range(circuit.num_qudits)))) return QuantumCircuit.from_qasm_str(OPENQASM2Language().encode(circuit))
# TODO: support gates not captured by qasm