From bd900dcfa9440e4443b912733260f96b4b2379f3 Mon Sep 17 00:00:00 2001 From: Yael Ben-Haim Date: Thu, 26 Sep 2024 14:51:11 +0300 Subject: [PATCH 1/3] Enhance the ISA check with validation of rzz angle --- .../backends/fractional/conf_fractional.json | 2 +- qiskit_ibm_runtime/utils/utils.py | 10 ++++++++++ test/unit/test_sampler.py | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json b/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json index 246826300..7224d45c0 100644 --- a/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json +++ b/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json @@ -1 +1 @@ -{"backend_name": "fake_fractional", "backend_version": "1.0.5", "n_qubits": 5, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset", "rx", "rzx"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 8192, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]], "dynamic_reprate_enabled": true, "supported_instructions": ["measure", "u3", "setf", "x", "delay", "id", "acquire", "sx", "u2", "u1", "cx", "shiftf", "play", "rz", "reset", "rx", "rzx", "if_else", "while_loop"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 900, "sample_name": "family: Falcon, revision: 4, segment: T", "n_registers": 1, "credits_required": true, "online_date": "2021-01-08T05:00:00+00:00", "description": "5 qubit device fractional tester", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": 4, "segment": "T"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "multi_meas_enabled": true, "quantum_volume": 8, "qubit_channel_mapping": [["u0", "m0", "d0", "u1"], ["u4", "u3", "u0", "u2", "m1", "u1", "d1", "u5"], ["d2", "u4", "u2", "m2"], ["u3", "u7", "m3", "d3", "u6", "u5"], ["d4", "u6", "m4", "u7"]], "uchannels_enabled": true, "url": "None", "allow_object_storage": true, "n_uchannels": 8, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.52968554992376, 5.52968554992376], [4.628321697435369, 5.628321697435369], [4.74749131011471, 5.74749131011471], [4.803339662601714, 5.803339662601714], [4.591790567452984, 5.5917905674529855]], "meas_lo_range": [[6.925143125000002, 7.925143125000002], [6.721646720000002, 7.721646720000002], [6.971842939, 7.971842939], [6.8653172320000015, 7.8653172320000015], [6.919067567000002, 7.919067567000002]], "meas_kernels": ["hw_boxcar"], "discriminators": ["hw_centroid", "linear_discriminator", "quadratic_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{4}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,3}(\\sigma_{1}^{+}\\sigma_{3}^{-}+\\sigma_{1}^{-}\\sigma_{3}^{+}) + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{5}^{(3,1)}(t)+U_{6}^{(3,4)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{7}^{(4,3)}(t))\\sigma_{4}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,4,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,4,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,4,-delta{i}/2*O{i}]", "_SUM[i,0,4,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q3*Sp1*Sm3", "jq1q3*Sm1*Sp3", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "omegad1*X0||U0", "omegad0*X1||U1", "omegad3*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad1*X3||U5", "omegad4*X3||U6", "omegad3*X4||U7"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3}, "vars": {"delta0": -2.109526390232452, "delta1": -2.0002465324219205, "delta2": -2.0960936199138844, "delta3": -2.0812544393432897, "delta4": -2.1015348325639516, "jq0q1": 0.011088625669671271, "jq1q2": 0.011792549393436344, "jq1q3": 0.011913891984976948, "jq3q4": 0.01165632975311803, "omegad0": 1.5262727915514445, "omegad1": 1.2641690419030664, "omegad2": 1.3397127967877365, "omegad3": 1.509152095855826, "omegad4": 1.497387831726462, "wq0": 31.602446347014453, "wq1": 32.222195539816184, "wq2": 32.9709602992653, "wq3": 33.321865847041835, "wq4": 31.992663680656207}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 3]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [3, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 4]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [4, 3]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file +{"backend_name": "fake_fractional", "backend_version": "1.0.5", "n_qubits": 5, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset", "rx", "rzx", "rzz"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 8192, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]], "dynamic_reprate_enabled": true, "supported_instructions": ["measure", "u3", "setf", "x", "delay", "id", "acquire", "sx", "u2", "u1", "cx", "shiftf", "play", "rz", "reset", "rx", "rzx", "if_else", "while_loop"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 900, "sample_name": "family: Falcon, revision: 4, segment: T", "n_registers": 1, "credits_required": true, "online_date": "2021-01-08T05:00:00+00:00", "description": "5 qubit device fractional tester", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": 4, "segment": "T"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "multi_meas_enabled": true, "quantum_volume": 8, "qubit_channel_mapping": [["u0", "m0", "d0", "u1"], ["u4", "u3", "u0", "u2", "m1", "u1", "d1", "u5"], ["d2", "u4", "u2", "m2"], ["u3", "u7", "m3", "d3", "u6", "u5"], ["d4", "u6", "m4", "u7"]], "uchannels_enabled": true, "url": "None", "allow_object_storage": true, "n_uchannels": 8, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.52968554992376, 5.52968554992376], [4.628321697435369, 5.628321697435369], [4.74749131011471, 5.74749131011471], [4.803339662601714, 5.803339662601714], [4.591790567452984, 5.5917905674529855]], "meas_lo_range": [[6.925143125000002, 7.925143125000002], [6.721646720000002, 7.721646720000002], [6.971842939, 7.971842939], [6.8653172320000015, 7.8653172320000015], [6.919067567000002, 7.919067567000002]], "meas_kernels": ["hw_boxcar"], "discriminators": ["hw_centroid", "linear_discriminator", "quadratic_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{4}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,3}(\\sigma_{1}^{+}\\sigma_{3}^{-}+\\sigma_{1}^{-}\\sigma_{3}^{+}) + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{5}^{(3,1)}(t)+U_{6}^{(3,4)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{7}^{(4,3)}(t))\\sigma_{4}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,4,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,4,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,4,-delta{i}/2*O{i}]", "_SUM[i,0,4,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q3*Sp1*Sm3", "jq1q3*Sm1*Sp3", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "omegad1*X0||U0", "omegad0*X1||U1", "omegad3*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad1*X3||U5", "omegad4*X3||U6", "omegad3*X4||U7"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3}, "vars": {"delta0": -2.109526390232452, "delta1": -2.0002465324219205, "delta2": -2.0960936199138844, "delta3": -2.0812544393432897, "delta4": -2.1015348325639516, "jq0q1": 0.011088625669671271, "jq1q2": 0.011792549393436344, "jq1q3": 0.011913891984976948, "jq3q4": 0.01165632975311803, "omegad0": 1.5262727915514445, "omegad1": 1.2641690419030664, "omegad2": 1.3397127967877365, "omegad3": 1.509152095855826, "omegad4": 1.497387831726462, "wq0": 31.602446347014453, "wq1": 32.222195539816184, "wq2": 32.9709602992653, "wq3": 33.321865847041835, "wq4": 31.992663680656207}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 3]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [3, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 4]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [4, 3]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file diff --git a/qiskit_ibm_runtime/utils/utils.py b/qiskit_ibm_runtime/utils/utils.py index 7c6ac7aa5..9d8be4112 100644 --- a/qiskit_ibm_runtime/utils/utils.py +++ b/qiskit_ibm_runtime/utils/utils.py @@ -18,6 +18,7 @@ import logging import os import re +import numpy as np from queue import Queue from threading import Condition from typing import List, Optional, Any, Dict, Union, Tuple @@ -67,6 +68,15 @@ def _is_isa_circuit_helper(circuit: QuantumCircuit, target: Target, qubit_map: D f"The instruction {name} on qubits {qargs} is not supported by the target system." ) + # rzz gate is calibrated only for the range [0, pi/2]. + # We allow an angle value of a bit more than pi/2, to compensate floating point rounding + # errors (beyond pi/2 does not trigger an error down the stack, only may become less + # accurate). + if name == "rzz" and ( + instruction.params[0] < 0.0 or instruction.params[0] > 1.001 * np.pi / 2 + ): + return f"The instruction {name} on qubits {qargs} is supported only for angles in the range [0, pi/2], but an angle of {instruction.params[0]} has been provided." + if isinstance(operation, ControlFlowOp): for sub_circ in operation.blocks: sub_string = _is_isa_circuit_helper(sub_circ, target, qubit_map) diff --git a/test/unit/test_sampler.py b/test/unit/test_sampler.py index cc2d4007d..6bc0f48c2 100644 --- a/test/unit/test_sampler.py +++ b/test/unit/test_sampler.py @@ -260,3 +260,17 @@ def test_isa_inside_condition_block(self, backend): else: with self.assertRaises(IBMInputValueError): SamplerV2(backend).run(pubs=[(circ)]) + + @data(-1, 1, 2) + def test_rzz_angle_validation(self, angle): + """Test exception when rzz gate is used with an angle outside the range [0, pi/2]""" + backend = FakeFractionalBackend() + + circ = QuantumCircuit(2) + circ.rzz(angle, 0, 1) + + if angle == 1: + SamplerV2(backend).run(pubs=[(circ)]) + else: + with self.assertRaises(IBMInputValueError): + SamplerV2(backend).run(pubs=[(circ)]) From 3696b1e673b2f869ef7d48d353fb9d920570d74d Mon Sep 17 00:00:00 2001 From: Yael Ben-Haim Date: Thu, 26 Sep 2024 15:04:45 +0300 Subject: [PATCH 2/3] lint --- qiskit_ibm_runtime/utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qiskit_ibm_runtime/utils/utils.py b/qiskit_ibm_runtime/utils/utils.py index 9d8be4112..d6c2f3d00 100644 --- a/qiskit_ibm_runtime/utils/utils.py +++ b/qiskit_ibm_runtime/utils/utils.py @@ -18,11 +18,11 @@ import logging import os import re -import numpy as np from queue import Queue from threading import Condition from typing import List, Optional, Any, Dict, Union, Tuple from urllib.parse import urlparse +import numpy as np import requests from ibm_cloud_sdk_core.authenticators import ( # pylint: disable=import-error @@ -75,7 +75,8 @@ def _is_isa_circuit_helper(circuit: QuantumCircuit, target: Target, qubit_map: D if name == "rzz" and ( instruction.params[0] < 0.0 or instruction.params[0] > 1.001 * np.pi / 2 ): - return f"The instruction {name} on qubits {qargs} is supported only for angles in the range [0, pi/2], but an angle of {instruction.params[0]} has been provided." + return f"The instruction {name} on qubits {qargs} is supported only for angles in the " + "range [0, pi/2], but an angle of {instruction.params[0]} has been provided." if isinstance(operation, ControlFlowOp): for sub_circ in operation.blocks: From e29e805e72ded42cc880e41236687f512dca207c Mon Sep 17 00:00:00 2001 From: Yael Ben-Haim Date: Thu, 26 Sep 2024 15:09:40 +0300 Subject: [PATCH 3/3] lint --- qiskit_ibm_runtime/utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit_ibm_runtime/utils/utils.py b/qiskit_ibm_runtime/utils/utils.py index d6c2f3d00..a3ba2531e 100644 --- a/qiskit_ibm_runtime/utils/utils.py +++ b/qiskit_ibm_runtime/utils/utils.py @@ -75,8 +75,8 @@ def _is_isa_circuit_helper(circuit: QuantumCircuit, target: Target, qubit_map: D if name == "rzz" and ( instruction.params[0] < 0.0 or instruction.params[0] > 1.001 * np.pi / 2 ): - return f"The instruction {name} on qubits {qargs} is supported only for angles in the " - "range [0, pi/2], but an angle of {instruction.params[0]} has been provided." + return f"The instruction {name} on qubits {qargs} is supported only for angles in the \ + range [0, pi/2], but an angle of {instruction.params[0]} has been provided." if isinstance(operation, ControlFlowOp): for sub_circ in operation.blocks: