Skip to main contentIBM Quantum Documentation

BaseEstimatorV1

qiskit.primitives.BaseEstimatorV1(*, options=None)

GitHub(opens in a new tab)

Bases: BasePrimitive, Generic(opens in a new tab)[T]

Estimator V1 base class.

Base class for Estimator that estimates expectation values of quantum circuits and observables.

An estimator is initialized with an empty parameter set. The estimator is used to create a JobV1, via the qiskit.primitives.Estimator.run() method. This method is called with the following parameters

  • quantum circuits (ψi(θ)\psi_i(\theta)): list of (parameterized) quantum circuits (a list of QuantumCircuit objects).
  • observables (HjH_j): a list of SparsePauliOp objects.
  • parameter values (θk\theta_k): list of sets of values to be bound to the parameters of the quantum circuits (list of list of float).

The method returns a JobV1 object, calling qiskit.providers.JobV1.result() yields the a list of expectation values plus optional metadata like confidence intervals for the estimation.

ψi(θk)Hjψi(θk)\langle\psi_i(\theta_k)|H_j|\psi_i(\theta_k)\rangle

Here is an example of how the estimator is used.

from qiskit.primitives import Estimator
from qiskit.circuit.library import RealAmplitudes
from qiskit.quantum_info import SparsePauliOp
 
psi1 = RealAmplitudes(num_qubits=2, reps=2)
psi2 = RealAmplitudes(num_qubits=2, reps=3)
 
H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
H2 = SparsePauliOp.from_list([("IZ", 1)])
H3 = SparsePauliOp.from_list([("ZI", 1), ("ZZ", 1)])
 
theta1 = [0, 1, 1, 2, 3, 5]
theta2 = [0, 1, 1, 2, 3, 5, 8, 13]
theta3 = [1, 2, 3, 4, 5, 6]
 
estimator = Estimator()
 
# calculate [ <psi1(theta1)|H1|psi1(theta1)> ]
job = estimator.run([psi1], [H1], [theta1])
job_result = job.result() # It will block until the job finishes.
print(f"The primitive-job finished with result {job_result}"))
 
# calculate [ <psi1(theta1)|H1|psi1(theta1)>,
#             <psi2(theta2)|H2|psi2(theta2)>,
#             <psi1(theta3)|H3|psi1(theta3)> ]
job2 = estimator.run([psi1, psi2, psi1], [H1, H2, H3], [theta1, theta2, theta3])
job_result = job2.result()
print(f"The primitive-job finished with result {job_result}")

Creating an instance of an Estimator, or using one in a with context opens a session that holds resources until the instance is close() ed or the context is exited.

Parameters

options (dict(opens in a new tab) | None) – Default options.


Attributes

options

Return options values for the estimator.

Returns

options


Methods

run

run(circuits, observables, parameter_values=None, **run_options)

GitHub(opens in a new tab)

Run the job of the estimation of expectation value(s).

circuits, observables, and parameter_values should have the same length. The i-th element of the result is the expectation of observable

obs = observables[i]

for the state prepared by

circ = circuits[i]

with bound parameters

values = parameter_values[i].

Parameters

Returns

The job object of EstimatorResult.

Raises

Return type

T

set_options

set_options(**fields)

GitHub(opens in a new tab)

Set options values for the estimator.

Parameters

**fields – The fields to update the options

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