---
title: BaseEstimatorV2 (latest version)
description: API reference for qiskit.primitives.BaseEstimatorV2 in the latest version of qiskit
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/qiskit.primitives.BaseEstimatorV2
---

# BaseEstimatorV2

*class* `qiskit.primitives.BaseEstimatorV2`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/primitives/base/base_estimator.py#L41-L93)

Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC)

Base class for `EstimatorV2` implementations.

An estimator calculates expectation values for provided quantum circuit and observable combinations. Implementations of this [`BaseEstimatorV2`](#qiskit.primitives.BaseEstimatorV2 "qiskit.primitives.BaseEstimatorV2") interface must define their own [`run()`](#qiskit.primitives.BaseEstimatorV2.run "qiskit.primitives.BaseEstimatorV2.run") method, which is designed to take the following inputs:

> - **pubs: list of pubs (Primitive Unified Blocs). An estimator pub is a list**
>
>   or tuple of two to four elements that define the unit of work for the estimator. These are:
>
>   - **A single [`QuantumCircuit`](/docs/api/qiskit/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"), possibly parameterized,**
>
>     whose final state we define as $\psi(\theta)$.
>
>   - **One or more observables (specified as any `ObservablesArrayLike`, including**
>
>     [`Pauli`](/docs/api/qiskit/qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli"), [`SparsePauliOp`](/docs/api/qiskit/qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp"), `str`) that specify which expectation values to estimate, denoted $H_j$.
>
>   - A collection parameter value sets to bind the circuit against, $\theta_k$
>
>   - Optionally, the estimation precision.
> - **precision: the estimation precision. This specification is optional and will be overridden by**
>
>   the pub-wise precision if provided.

All estimator implementations must implement default value for the `precision` in the [`run()`](#qiskit.primitives.BaseEstimatorV2.run "qiskit.primitives.BaseEstimatorV2.run") method. This default value will be used any time `precision=None` is specified, which can take place in the [`run()`](#qiskit.primitives.BaseEstimatorV2.run "qiskit.primitives.BaseEstimatorV2.run") kwargs or at the pub level.

## Methods

### run

*abstractmethod* `run(pubs, *, precision=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/primitives/base/base_estimator.py#L78-L93)

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*](https://docs.python.org/3/library/functions.html#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**

[BasePrimitiveJob](/docs/api/qiskit/qiskit.primitives.BasePrimitiveJob "qiskit.primitives.BasePrimitiveJob")\[[PrimitiveResult](/docs/api/qiskit/qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[[PubResult](/docs/api/qiskit/qiskit.primitives.PubResult "qiskit.primitives.PubResult")]]
