Skip to content

Commit eda9acf

Browse files
authored
Add support for empty lists/dicts of observables (Qiskit/qiskit#8817)
1 parent 51fd88e commit eda9acf

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

qiskit_algorithms/observables_evaluator.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,24 @@ def estimate_observables(
6060
else:
6161
observables_list = observables
6262

63-
observables_list = _handle_zero_ops(observables_list)
64-
quantum_state = [quantum_state] * len(observables)
65-
if parameter_values is not None:
66-
parameter_values = [parameter_values] * len(observables)
67-
try:
68-
estimator_job = estimator.run(quantum_state, observables_list, parameter_values)
69-
expectation_values = estimator_job.result().values
70-
except Exception as exc:
71-
raise AlgorithmError("The primitive job failed!") from exc
72-
73-
metadata = estimator_job.result().metadata
74-
# Discard values below threshold
75-
observables_means = expectation_values * (np.abs(expectation_values) > threshold)
76-
# zip means and metadata into tuples
77-
observables_results = list(zip(observables_means, metadata))
63+
if len(observables_list) > 0:
64+
observables_list = _handle_zero_ops(observables_list)
65+
quantum_state = [quantum_state] * len(observables)
66+
if parameter_values is not None:
67+
parameter_values = [parameter_values] * len(observables)
68+
try:
69+
estimator_job = estimator.run(quantum_state, observables_list, parameter_values)
70+
expectation_values = estimator_job.result().values
71+
except Exception as exc:
72+
raise AlgorithmError("The primitive job failed!") from exc
73+
74+
metadata = estimator_job.result().metadata
75+
# Discard values below threshold
76+
observables_means = expectation_values * (np.abs(expectation_values) > threshold)
77+
# zip means and metadata into tuples
78+
observables_results = list(zip(observables_means, metadata))
79+
else:
80+
observables_results = []
7881

7982
return _prepare_result(observables_results, observables)
8083

0 commit comments

Comments
 (0)