About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
BackendEstimatorV2
class qiskit.primitives.BackendEstimatorV2(*, backend, options=None)
Bases: BaseEstimatorV2
Evaluates expectation values for provided quantum circuit and observable combinations.
The BackendEstimatorV2
class is a generic implementation of the BaseEstimatorV2
interface that is used to wrap a BackendV2
(or BackendV1
) object in the BaseEstimatorV2
API. It facilitates using backends that do not provide a native BaseEstimatorV2
implementation in places that work with BaseEstimatorV2
. However, if you’re using a provider that has a native implementation of BaseEstimatorV2
, it is a better choice to leverage that native implementation as it will likely include additional optimizations and be a more efficient implementation. The generic nature of this class precludes doing any provider- or backend-specific optimizations.
This class does not perform any measurement or gate mitigation, and, presently, is only compatible with Pauli-based observables. More formally, given an observable of the type , where is a complex number and is a Pauli operator, the estimator calculates the expectation of each and finally calculates the expectation value of as . The reported std
is calculated as
where is the variance of , is the number of shots, and is the target precision [1].
Each tuple of (circuit, observables, <optional> parameter values, <optional> precision)
, called an estimator primitive unified bloc (PUB), produces its own array-based result. The run()
method can be given a sequence of pubs to run in one call.
The options for BackendEstimatorV2
consist of the following items.
default_precision
: The default precision to use if none are specified inrun()
. Default: 0.015625 (1 / sqrt(4096)).abelian_grouping
: Whether the observables should be grouped into sets of qubit-wise commuting observables. Default: True.seed_simulator
: The seed to use in the simulator. If None, a random seed will be used. Default: None.
Reference:
[1] O. Crawford, B. van Straaten, D. Wang, T. Parks, E. Campbell, St. Brierley, Efficient quantum measurement of Pauli operators in the presence of finite sampling error. Quantum 5, 385
Parameters
- backend (BackendV1 |BackendV2) – The backend to run the primitive on.
- options (dict | None) – The options to control the default precision (
default_precision
), the operator grouping (abelian_grouping
), and the random seed for the simulator (seed_simulator
).
Attributes
backend
Returns the backend which this sampler object based on.
options
Return the options
Methods
run
run(pubs, *, precision=None)
Estimate expectation values for each provided pub (Primitive Unified Bloc).
Parameters
- pubs (Iterable[EstimatorPubLike]) – An iterable of pub-like 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.
Returns
A job object that contains results.
Return type
Was this page helpful?
Report a bug or request content on GitHub.