def test_aer_placed_expectation() -> None: # bug TKET-695 n_qbs = 3 c = Circuit(n_qbs, n_qbs) c.X(0) c.CX(0, 2) c.CX(1, 2) c.H(1) # c.measure_all() b = AerBackend() operator = QubitPauliOperator({ QubitPauliString(Qubit(0), Pauli.Z): 1.0, QubitPauliString(Qubit(1), Pauli.X): 0.5, }) assert b.get_operator_expectation_value(c, operator) == (-0.5 + 0j) with open(os.path.join(sys.path[0], "ibmqx2_properties.pickle"), "rb") as f: properties = pickle.load(f) noise_model = NoiseModel.from_backend(properties) noise_b = AerBackend(noise_model) with pytest.raises(RuntimeError) as errorinfo: noise_b.get_operator_expectation_value(c, operator) assert "not supported with noise model" in str(errorinfo.value) c.rename_units({Qubit(1): Qubit("node", 1)}) with pytest.raises(ValueError) as errorinfoCirc: b.get_operator_expectation_value(c, operator) assert "default register Qubits" in str(errorinfoCirc.value)
# Define the measurement operator: xxi = QubitPauliString({Qubit(0): Pauli.X, Qubit(1): Pauli.X}) zzz = QubitPauliString({ Qubit(0): Pauli.Z, Qubit(1): Pauli.Z, Qubit(2): Pauli.Z }) op = QubitPauliOperator({xxi: -1.8, zzz: 0.7j}) # Run on the backend: backend = AerBackend() backend.compile_circuit(c) exp = backend.get_operator_expectation_value(c, op) print(exp) # ## `pytket.extensions.qiskit.AerBackend` # `AerBackend` wraps up the `qasm_simulator` from the Qiskit Aer package. It supports an extremely flexible set of circuits and uses many effective simulation methods making it a great all-purpose sampling simulator. # # Unique features: # - supports mid-circuit measurement and OpenQASM-style conditional gates; # - encompasses a variety of underlying simulation methods and automatically selects the best one for each circuit (including statevector, density matrix, (extended) stabilizer and matrix product state); # - can be provided with a `qiskit.providers.Aer.noise.NoiseModel` on instantiation to perform a noisy simulation. # Useful features: # - support for fast expectation value calculations according to `QubitPauliString`s or `QubitPauliOperator`s. from pytket import Circuit