diff --git a/docs/examples/GettingStarted.ipynb b/docs/examples/GettingStarted.ipynb index fed1d8d..1d77358 100644 --- a/docs/examples/GettingStarted.ipynb +++ b/docs/examples/GettingStarted.ipynb @@ -21,7 +21,7 @@ " QuantumCircuit,\n", " QuantumRegister,\n", " ClassicalRegister,\n", - " execute\n", + " transpile\n", ")\n", "from qiskit_rigetti import RigettiQCSProvider" ] @@ -103,7 +103,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The circuit can now be run against the backend with Qiskit's `execute()` function:" + "The circuit can now be run against the backend:" ] }, { @@ -120,7 +120,7 @@ } ], "source": [ - "job = execute(circuit, backend, shots=1000)\n", + "job = backend.run(transpile(circuit, backend), shots=1000)\n", "result = job.result()\n", "counts = result.get_counts()\n", "print(\"Counts for experiment:\", counts)" @@ -144,7 +144,7 @@ } ], "source": [ - "from qiskit.tools.visualization import plot_histogram\n", + "from qiskit.visualization import plot_histogram\n", "\n", "plot_histogram(counts)" ] diff --git a/docs/examples/QAOA.ipynb b/docs/examples/QAOA.ipynb index e3d45f3..96327de 100644 --- a/docs/examples/QAOA.ipynb +++ b/docs/examples/QAOA.ipynb @@ -199,7 +199,6 @@ ], "source": [ "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", - "from qiskit import Aer, execute\n", "from qiskit.circuit import Parameter\n", "\n", "# Adjacency is essentially a matrix which tells you which nodes are\n", diff --git a/qiskit_rigetti/gates/_can.py b/qiskit_rigetti/gates/_can.py index 2c8298f..c0d6105 100644 --- a/qiskit_rigetti/gates/_can.py +++ b/qiskit_rigetti/gates/_can.py @@ -16,7 +16,12 @@ __all__ = ["CanonicalGate"] import numpy as np -from qiskit.extensions import UnitaryGate + +try: + # qiskit>=1.0 + from qiskit.circuit.library import UnitaryGate +except ImportError: + from qiskit.extensions import UnitaryGate class CanonicalGate(UnitaryGate): diff --git a/qiskit_rigetti/gates/_cphase.py b/qiskit_rigetti/gates/_cphase.py index 0dfd454..2dfb910 100644 --- a/qiskit_rigetti/gates/_cphase.py +++ b/qiskit_rigetti/gates/_cphase.py @@ -20,7 +20,12 @@ ] from pyquil.simulation.matrices import CPHASE00, CPHASE01, CPHASE10 -from qiskit.extensions import UnitaryGate + +try: + # qiskit>=1.0 + from qiskit.circuit.library import UnitaryGate +except ImportError: + from qiskit.extensions import UnitaryGate class CPhase00Gate(UnitaryGate): diff --git a/qiskit_rigetti/gates/_pswap.py b/qiskit_rigetti/gates/_pswap.py index cce6575..6d66592 100644 --- a/qiskit_rigetti/gates/_pswap.py +++ b/qiskit_rigetti/gates/_pswap.py @@ -16,7 +16,12 @@ __all__ = ["PSwapGate"] from pyquil.simulation.matrices import PSWAP -from qiskit.extensions import UnitaryGate + +try: + # qiskit>=1.0 + from qiskit.circuit.library import UnitaryGate +except ImportError: + from qiskit.extensions import UnitaryGate class PSwapGate(UnitaryGate): diff --git a/qiskit_rigetti/gates/_xy.py b/qiskit_rigetti/gates/_xy.py index 59cf3cb..66c462c 100644 --- a/qiskit_rigetti/gates/_xy.py +++ b/qiskit_rigetti/gates/_xy.py @@ -16,7 +16,12 @@ __all__ = ["XYGate"] from pyquil.simulation.matrices import XY -from qiskit.extensions import UnitaryGate + +try: + # qiskit>=1.0 + from qiskit.circuit.library import UnitaryGate +except ImportError: + from qiskit.extensions import UnitaryGate class XYGate(UnitaryGate): diff --git a/qiskit_rigetti/hooks/pre_compilation.py b/qiskit_rigetti/hooks/pre_compilation.py index 87d6052..c8e19cb 100644 --- a/qiskit_rigetti/hooks/pre_compilation.py +++ b/qiskit_rigetti/hooks/pre_compilation.py @@ -19,7 +19,7 @@ def set_rewiring(rewiring: str) -> PreCompilationHook: Examples: Applying rewiring to a program:: - >>> from qiskit import execute + >>> from qiskit import transpile >>> from qiskit_rigetti import RigettiQCSProvider, QuilCircuit >>> from qiskit_rigetti.hooks.pre_compilation import set_rewiring @@ -27,7 +27,8 @@ def set_rewiring(rewiring: str) -> PreCompilationHook: >>> backend = p.get_simulator(num_qubits=2, noisy=True) >>> circuit = QuilCircuit(2, 2) >>> _ = circuit.measure([0, 1], [0, 1]) - >>> job = execute(circuit, backend, shots=10, before_compile=[set_rewiring("NAIVE")]) + >>> circuit = transpile(circuit, backend) + >>> job = backend.run(circuit, shots=10, before_compile=[set_rewiring("NAIVE")]) """ def fn(qasm: str) -> str: diff --git a/tests/test_qcs_backend.py b/tests/test_qcs_backend.py index 5be757d..ee7267b 100644 --- a/tests/test_qcs_backend.py +++ b/tests/test_qcs_backend.py @@ -14,7 +14,7 @@ # limitations under the License. ############################################################################## import pytest -from qiskit import execute, QuantumCircuit, QuantumRegister, ClassicalRegister, transpile +from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, transpile from qiskit.providers import JobStatus from qiskit.circuit import Parameter, Qubit from qiskit.circuit.library import CZGate @@ -26,7 +26,8 @@ def test_run(backend: RigettiQCSBackend): circuit = make_circuit() - job = execute(circuit, backend, shots=10) + circuit = transpile(circuit, backend) + job = backend.run(circuit, shots=10) assert job.backend() is backend result = job.result() @@ -41,7 +42,8 @@ def test_run__multiple_circuits(backend: RigettiQCSBackend): circuit1 = make_circuit(num_qubits=2) circuit2 = make_circuit(num_qubits=3) - job = execute([circuit1, circuit2], backend, shots=10) + circuits_list = transpile([circuit1, circuit2], backend) + job = backend.run(circuits_list, shots=10) assert job.backend() is backend result = job.result() @@ -70,9 +72,8 @@ def test_run__parametric_circuits(backend: RigettiQCSBackend): circuit2.ry(t, 0) circuit2.measure([0], [0]) - job = execute( - [circuit1, circuit2], - backend, + job = backend.run( + transpile([circuit1, circuit2], backend), shots=1000, parameter_binds=[ {t: 1.0}, @@ -105,7 +106,8 @@ def test_run__readout_register_not_named_ro(backend: RigettiQCSBackend): circuit.measure([0, 1], [0, 1]) qasm_before = circuit.qasm() - job = execute(circuit, backend, shots=10) + circuit = transpile(circuit, backend) + job = backend.run(circuit, shots=10) assert circuit.qasm() == qasm_before, "should not modify original circuit" @@ -124,7 +126,8 @@ def test_run__multiple_registers__single_readout(backend: RigettiQCSBackend): circuit.measure([0, 1], [readout_reg[0], readout_reg[1]]) qasm_before = circuit.qasm() - job = execute(circuit, backend, shots=10) + circuit = transpile(circuit, backend) + job = backend.run(circuit, shots=10) assert circuit.qasm() == qasm_before, "should not modify original circuit" @@ -144,8 +147,9 @@ def test_run__multiple_readout_registers(backend: RigettiQCSBackend): circuit = QuantumCircuit(qr, cr, cr2) circuit.measure([qr[0], qr[1]], [cr[0], cr2[0]]) + circuit = transpile(circuit, backend) with pytest.raises(RuntimeError, match="Multiple readout registers are unsupported on QCSBackend; found c, c2"): - execute(circuit, backend, shots=10) + backend.run(circuit, shots=10) def test_run__no_measurments(backend: RigettiQCSBackend): @@ -153,8 +157,9 @@ def test_run__no_measurments(backend: RigettiQCSBackend): cr = ClassicalRegister(1, "c") circuit = QuantumCircuit(qr, cr) + circuit = transpile(circuit, backend) with pytest.raises(RuntimeError, match="Circuit has no measurements"): - execute(circuit, backend, shots=10) + backend.run(circuit, shots=10) def test_run__backend_coupling_map(): @@ -171,7 +176,7 @@ def test_decomposition(backend: RigettiQCSBackend): circuit.measure_all() circuit = transpile(circuit, backend=backend) - job = execute(circuit, backend, shots=1) + job = backend.run(circuit, shots=1) job.result() # Just make sure nothing throws an exception so the circuit is valid assert job.status() == JobStatus.DONE