Skip to content

Commit

Permalink
wrote a test for rzz conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
yaelbh committed Feb 4, 2025
1 parent 00b8829 commit 7dbfe26
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
6 changes: 6 additions & 0 deletions qiskit_ibm_runtime/utils/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ def is_simulator(backend: BackendV1 | BackendV2) -> bool:
return getattr(backend, "simulator", False)


def convert_to_rzz_valid_circ_and_vals(
circ: QuantumCircuit, param_values: List[Tuple]
) -> Tuple[QuantumCircuit, List[Tuple]]:
return circ, param_values


def _is_isa_circuit_helper(circuit: QuantumCircuit, target: Target, qubit_map: Dict) -> str:
"""
A section of is_isa_circuit, separated to allow recursive calls
Expand Down
21 changes: 21 additions & 0 deletions test/unit/transpiler/passes/basis/test_fold_rzz_angle.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@

from qiskit.circuit import QuantumCircuit
from qiskit.circuit.parameter import Parameter
from qiskit.primitives.containers.sampler_pub import SamplerPub
from qiskit.transpiler.passmanager import PassManager
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit.quantum_info import Operator

from qiskit_ibm_runtime.transpiler.passes.basis import FoldRzzAngle
from qiskit_ibm_runtime.fake_provider import FakeFractionalBackend
from qiskit_ibm_runtime.utils.utils import convert_to_rzz_valid_circ_and_vals, is_valid_rzz_pub
from .....ibm_test_case import IBMTestCase


Expand Down Expand Up @@ -115,3 +117,22 @@ def test_fractional_plugin(self):
self.assertEqual(isa_circ.data[0].operation.name, "global_phase")
self.assertEqual(isa_circ.data[1].operation.name, "rzz")
self.assertTrue(np.isclose(isa_circ.data[1].operation.params[0], 7 - 2 * pi))

def test_rzz_pub_conversion(self):
"""Test the function `convert_to_rzz_valid_circ_and_vals`"""
p1 = Parameter("p1")
p2 = Parameter("p2")

circ = QuantumCircuit(3)
circ.rzz(p1 + p2, 2, 1)

param_vals = [(0.1, 0.2), (0.3, 0.4)]

isa_circ, isa_vals = convert_to_rzz_valid_circ_and_vals(circ, param_vals)
isa_pub = SamplerPub.coerce((isa_circ, param_vals))

self.assertEqual(is_valid_rzz_pub(isa_pub), "")
self.assertEqual(
Operator.from_circuit(circ.assign_parameters(param_vals[0])),
Operator.from_circuit(isa_circ.assign_parameters(isa_vals[0])),
)

0 comments on commit 7dbfe26

Please sign in to comment.