Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 22 additions & 23 deletions qiskit/primitives/base_estimator.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@

from qiskit.circuit import Parameter, QuantumCircuit
from qiskit.circuit.parametertable import ParameterView
from qiskit.exceptions import QiskitError
from qiskit.opflow import PauliSumOp
from qiskit.providers import JobV1 as Job
from qiskit.providers import Options
Expand Down Expand Up @@ -151,7 +150,7 @@ def __init__(
options: Default options.

Raises:
QiskitError: For mismatch of circuits and parameters list.
ValueError: For mismatch of circuits and parameters list.
"""
if circuits is not None or observables is not None or parameters is not None:
warn(
Expand Down Expand Up @@ -179,13 +178,13 @@ def __init__(
else:
self._parameters = [ParameterView(par) for par in parameters]
if len(self._parameters) != len(self._circuits):
raise QiskitError(
raise ValueError(
f"Different number of parameters ({len(self._parameters)}) and "
f"circuits ({len(self._circuits)})"
)
for i, (circ, params) in enumerate(zip(self._circuits, self._parameters)):
if circ.num_parameters != len(params):
raise QiskitError(
raise ValueError(
f"Different numbers of parameters of {i}-th circuit: "
f"expected {circ.num_parameters}, actual {len(params)}."
)
Expand Down Expand Up @@ -326,8 +325,8 @@ def __call__(
EstimatorResult: The result of the estimator.

Raises:
QiskitError: For mismatch of object id.
QiskitError: For mismatch of length of Sequence.
ValueError: For mismatch of object id.
ValueError: For mismatch of length of Sequence.
"""

# Support ndarray
Expand All @@ -342,7 +341,7 @@ def __call__(
for circuit in circuits
]
if any(circuit is None for circuit in circuits):
raise QiskitError(
raise ValueError(
"The circuits passed when calling estimator is not one of the circuits used to "
"initialize the session."
)
Expand All @@ -353,7 +352,7 @@ def __call__(
for observable in observables
]
if any(observable is None for observable in observables):
raise QiskitError(
raise ValueError(
"The observables passed when calling estimator is not one of the observables used to "
"initialize the session."
)
Expand All @@ -365,27 +364,27 @@ def __call__(
if parameter_values is None:
for i in circuits:
if len(self._circuits[i].parameters) != 0:
raise QiskitError(
raise ValueError(
f"The {i}-th circuit is parameterised,"
"but parameter values are not given."
)
parameter_values = [[]] * len(circuits)

# Validation
if len(circuits) != len(observables):
raise QiskitError(
raise ValueError(
f"The number of circuits ({len(circuits)}) does not match "
f"the number of observables ({len(observables)})."
)
if len(circuits) != len(parameter_values):
raise QiskitError(
raise ValueError(
f"The number of circuits ({len(circuits)}) does not match "
f"the number of parameter value sets ({len(parameter_values)})."
)

for i, value in zip(circuits, parameter_values):
if len(value) != len(self._parameters[i]):
raise QiskitError(
raise ValueError(
f"The number of values ({len(value)}) does not match "
f"the number of parameters ({len(self._parameters[i])}) for the {i}-th circuit."
)
Expand All @@ -394,19 +393,19 @@ def __call__(
circuit_num_qubits = self.circuits[circ_i].num_qubits
observable_num_qubits = self.observables[obs_i].num_qubits
if circuit_num_qubits != observable_num_qubits:
raise QiskitError(
raise ValueError(
f"The number of qubits of the {circ_i}-th circuit ({circuit_num_qubits}) does "
f"not match the number of qubits of the {obs_i}-th observable "
f"({observable_num_qubits})."
)

if max(circuits) >= len(self.circuits):
raise QiskitError(
raise ValueError(
f"The number of circuits is {len(self.circuits)}, "
f"but the index {max(circuits)} is given."
)
if max(observables) >= len(self.observables):
raise QiskitError(
raise ValueError(
f"The number of circuits is {len(self.observables)}, "
f"but the index {max(observables)} is given."
)
Expand Down Expand Up @@ -463,7 +462,7 @@ def run(
The job object of EstimatorResult.

Raises:
QiskitError: Invalid arguments are given.
ValueError: Invalid arguments are given.
"""
# Support ndarray
if isinstance(parameter_values, np.ndarray):
Expand All @@ -473,7 +472,7 @@ def run(
if parameter_values is None:
for i, circuit in enumerate(circuits):
if circuit.num_parameters != 0:
raise QiskitError(
raise ValueError(
f"The {i}-th circuit is parameterised,"
"but parameter values are not given."
)
Expand All @@ -484,39 +483,39 @@ def run(
else:
parameter_views = [ParameterView(par) for par in parameters]
if len(self._parameters) != len(self._circuits):
raise QiskitError(
raise ValueError(
f"Different number of parameters ({len(self._parameters)}) and "
f"circuits ({len(self._circuits)})"
)
for i, (circ, params) in enumerate(zip(self._circuits, self._parameters)):
if circ.num_parameters != len(params):
raise QiskitError(
raise ValueError(
f"Different numbers of parameters of {i}-th circuit: "
f"expected {circ.num_parameters}, actual {len(params)}."
)

# Validation
if len(circuits) != len(observables):
raise QiskitError(
raise ValueError(
f"The number of circuits ({len(circuits)}) does not match "
f"the number of observables ({len(observables)})."
)
if len(circuits) != len(parameter_values):
raise QiskitError(
raise ValueError(
f"The number of circuits ({len(circuits)}) does not match "
f"the number of parameter value sets ({len(parameter_values)})."
)

for i, (circuit, parameter_value) in enumerate(zip(circuits, parameter_values)):
if len(parameter_value) != circuit.num_parameters:
raise QiskitError(
raise ValueError(
f"The number of values ({len(parameter_value)}) does not match "
f"the number of parameters ({circuit.num_parameters}) for the {i}-th circuit."
)

for i, (circuit, observable) in enumerate(zip(circuits, observables)):
if circuit.num_qubits != observable.num_qubits:
raise QiskitError(
raise ValueError(
f"The number of qubits of the {i}-th circuit ({circuit.num_qubits}) does "
f"not match the number of qubits of the {i}-th observable "
f"({observable.num_qubits})."
Expand Down
35 changes: 17 additions & 18 deletions qiskit/primitives/base_sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@

from qiskit.circuit import Parameter, QuantumCircuit
from qiskit.circuit.parametertable import ParameterView
from qiskit.exceptions import QiskitError
from qiskit.providers import JobV1 as Job
from qiskit.providers import Options
from qiskit.utils.deprecation import deprecate_arguments, deprecate_function
Expand Down Expand Up @@ -130,7 +129,7 @@ def __init__(
options: Default options.

Raises:
QiskitError: For mismatch of circuits and parameters list.
ValueError: For mismatch of circuits and parameters list.
"""
if circuits is not None or parameters is not None:
warn(
Expand All @@ -153,7 +152,7 @@ def __init__(
else:
self._parameters = [ParameterView(par) for par in parameters]
if len(self._parameters) != len(self._circuits):
raise QiskitError(
raise ValueError(
f"Different number of parameters ({len(self._parameters)}) "
f"and circuits ({len(self._circuits)})"
)
Expand Down Expand Up @@ -258,8 +257,8 @@ def __call__(
``parameter_values[i]``.

Raises:
QiskitError: For mismatch of object id.
QiskitError: For mismatch of length of Sequence.
ValueError: For mismatch of object id.
ValueError: For mismatch of length of Sequence.
"""
# Support ndarray
if isinstance(parameter_values, np.ndarray):
Expand All @@ -273,7 +272,7 @@ def __call__(
for circuit in circuits
]
if any(circuit is None for circuit in circuits):
raise QiskitError(
raise ValueError(
"The circuits passed when calling sampler is not one of the circuits used to "
"initialize the session."
)
Expand All @@ -284,28 +283,28 @@ def __call__(
if parameter_values is None:
for i in circuits:
if len(self._circuits[i].parameters) != 0:
raise QiskitError(
raise ValueError(
f"The {i}-th circuit ({len(circuits)}) is parameterised,"
"but parameter values are not given."
)
parameter_values = [[]] * len(circuits)

# Validation
if len(circuits) != len(parameter_values):
raise QiskitError(
raise ValueError(
f"The number of circuits ({len(circuits)}) does not match "
f"the number of parameter value sets ({len(parameter_values)})."
)

for i, value in zip(circuits, parameter_values):
if len(value) != len(self._parameters[i]):
raise QiskitError(
raise ValueError(
f"The number of values ({len(value)}) does not match "
f"the number of parameters ({len(self._parameters[i])}) for the {i}-th circuit."
)

if max(circuits) >= len(self.circuits):
raise QiskitError(
raise ValueError(
f"The number of circuits is {len(self.circuits)}, "
f"but the index {max(circuits)} is given."
)
Expand Down Expand Up @@ -339,7 +338,7 @@ def run(
``circuits[i]`` evaluated with parameters bound as ``parameter_values[i]``.

Raises:
QiskitError: Invalid arguments are given.
ValueError: Invalid arguments are given.
"""
# Support ndarray
if isinstance(parameter_values, np.ndarray):
Expand All @@ -349,7 +348,7 @@ def run(
if parameter_values is None:
for i, circuit in enumerate(circuits):
if circuit.num_parameters != 0:
raise QiskitError(
raise ValueError(
f"The {i}-th circuit ({len(circuits)}) is parameterised,"
"but parameter values are not given."
)
Expand All @@ -360,42 +359,42 @@ def run(
else:
parameter_views = [ParameterView(par) for par in parameters]
if len(self._parameters) != len(self._circuits):
raise QiskitError(
raise ValueError(
f"Different number of parameters ({len(self._parameters)}) and "
f"circuits ({len(self._circuits)})"
)
for i, (circ, params) in enumerate(zip(self._circuits, self._parameters)):
if circ.num_parameters != len(params):
raise QiskitError(
raise ValueError(
f"Different numbers of parameters of {i}-th circuit: "
f"expected {circ.num_parameters}, actual {len(params)}."
)

# Validation
if len(circuits) != len(parameter_values):
raise QiskitError(
raise ValueError(
f"The number of circuits ({len(circuits)}) does not match "
f"the number of parameter value sets ({len(parameter_values)})."
)

for i, (circuit, parameter_value) in enumerate(zip(circuits, parameter_values)):
if len(parameter_value) != circuit.num_parameters:
raise QiskitError(
raise ValueError(
f"The number of values ({len(parameter_value)}) does not match "
f"the number of parameters ({circuit.num_parameters}) for the {i}-th circuit."
)

for i, circuit in enumerate(circuits):
if circuit.num_clbits == 0:
raise QiskitError(
raise ValueError(
f"The {i}-th circuit does not have any classical bit. "
"Sampler requires classical bits, plus measurements "
"on the desired qubits."
)

mapping = final_measurement_mapping(circuit)
if set(range(circuit.num_clbits)) != set(mapping.values()):
raise QiskitError(
raise ValueError(
f"Some classical bits of the {i}-th circuit are not used for measurements."
f" the number of classical bits ({circuit.num_clbits}),"
f" the used classical bits ({set(mapping.values())})."
Expand Down
Loading