Skip to main contentIBM Quantum Documentation

EstimatorV2

EstimatorV2(backend=None, session=None, options=None)

GitHub(opens in a new tab)

Class for interacting with Qiskit Runtime Estimator primitive service.

Qiskit Runtime Estimator primitive service estimates expectation values of quantum circuits and observables.

The run() can be used to submit circuits, observables, and parameters to the Estimator primitive.

Following construction, an estimator is used by calling its run() method with a list of PUBs (Primitive Unified Blocs). Each PUB contains four values that, together, define a computation unit of work for the estimator to complete:

  • a single QuantumCircuit, possibly parametrized, whose final state we define as ψ(θ)\psi(\theta),
  • one or more observables (specified as any ObservablesArrayLike, including Pauli, SparsePauliOp, str) that specify which expectation values to estimate, denoted HjH_j, and
  • a collection parameter value sets to bind the circuit against, θk\theta_k.
  • an optional target precision for expectation value estimates.

Here is an example of how the estimator is used.

from qiskit.circuit.library import RealAmplitudes
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, EstimatorV2 as Estimator
 
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
 
psi = RealAmplitudes(num_qubits=2, reps=2)
hamiltonian = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
 
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_psi = pm.run(psi)
isa_observables = hamiltonian.apply_layout(isa_psi.layout)
 
estimator = Estimator(backend=backend)
 
# calculate [ <psi(theta1)|hamiltonian|psi(theta)> ]
job = estimator.run([(isa_psi, isa_observables, [theta])])
pub_result = job.result()[0]
print(f"Expectation values: {pub_result.data.evs}")

Initializes the Estimator primitive.

Parameters

  • backend (Union[str, IBMBackend, None]) – Backend to run the primitive. This can be a backend name or an IBMBackend instance. If a name is specified, the default account (e.g. QiskitRuntimeService()) is used.

  • session (Optional[Session]) –

    Session in which to call the primitive.

    If both session and backend are specified, session takes precedence. If neither is specified, and the primitive is created inside a qiskit_ibm_runtime.Session context manager, then the session is used. Otherwise if IBM Cloud channel is used, a default backend is selected.

  • options (Union[Dict, EstimatorOptions, None]) – Estimator options, see EstimatorOptions for detailed description.

Raises

NotImplementedError – If “q-ctrl” channel strategy is used.


Attributes

options

Return options

Return type

TypeVar(OptionsT, bound= BaseOptions)

session

Return session used by this primitive.

Return type

Optional[Session]

Returns

Session used by this primitive, or None if session is not used.

version

= 2


Methods

run

run(pubs, *, precision=None)

GitHub(opens in a new tab)

Submit a request to the estimator primitive.

Parameters

  • pubs (Iterable[EstimatorPubLike]) – An iterable of pub-like (primitive unified bloc) objects, such as tuples (circuit, observables) or (circuit, observables, parameter_values).
  • precision (float | None) – The target precision for expectation value estimates of each run Estimator Pub that does not specify its own precision. If None the estimator’s default precision value will be used.

Return type

RuntimeJobV2

Returns

Submitted job.

Was this page helpful?
Report a bug or request content on GitHub.