Skip to content

Commit

Permalink
Merge branch 'main' into 312-support
Browse files Browse the repository at this point in the history
  • Loading branch information
doichanj authored Jan 9, 2024
2 parents 46994d6 + e6aaf03 commit 9c9c579
Show file tree
Hide file tree
Showing 19 changed files with 65 additions and 80 deletions.
2 changes: 1 addition & 1 deletion qiskit_aer/backends/aer_compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from qiskit.circuit import QuantumCircuit, Clbit, ClassicalRegister, ParameterExpression
from qiskit.circuit.classical.expr import Expr, Unary, Binary, Var, Value, ExprVisitor, iter_vars
from qiskit.circuit.classical.types import Bool, Uint
from qiskit.extensions import Initialize
from qiskit.circuit.library import Initialize
from qiskit.providers.options import Options
from qiskit.pulse import Schedule, ScheduleBlock
from qiskit.circuit.controlflow import (
Expand Down
4 changes: 2 additions & 2 deletions qiskit_aer/backends/name_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
CRZGate,
MCU1Gate,
MCXGrayCode,
Initialize,
UCGate,
)
from qiskit.circuit.controlflow import (
IfElseOp,
Expand All @@ -43,8 +45,6 @@
BreakLoopOp,
SwitchCaseOp,
)
from qiskit.extensions import Initialize
from qiskit.extensions.quantum_initializer import UCGate
from qiskit.quantum_info.operators.channel.kraus import Kraus
from qiskit.quantum_info.operators.channel import SuperOp
from qiskit.quantum_info.operators.channel.quantum_channel import QuantumChannel
Expand Down
7 changes: 3 additions & 4 deletions qiskit_aer/library/default_qubits.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"""

from qiskit.circuit import QuantumRegister
from qiskit.extensions.exceptions import ExtensionError


def default_qubits(circuit, qubits=None):
Expand All @@ -27,7 +26,7 @@ def default_qubits(circuit, qubits=None):
[Default: None]
Raises:
ExtensionError: if default qubits fails.
ValueError: if default qubits fails.
Returns:
list: qubits list.
Expand All @@ -37,9 +36,9 @@ def default_qubits(circuit, qubits=None):
# This is needed for full register snapshots like statevector
if isinstance(qubits, QuantumRegister):
qubits = qubits[:]
if not qubits:
if qubits is None:
qubits = list(circuit.qubits)
if len(qubits) == 0:
raise ExtensionError("no qubits for snapshot")
raise ValueError("no qubits for snapshot")

return qubits
11 changes: 5 additions & 6 deletions qiskit_aer/library/save_instructions/save_amplitudes.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"""

from qiskit.circuit import QuantumCircuit
from qiskit.extensions.exceptions import ExtensionError
from .save_data import SaveSingleData, SaveAverageData
from ..default_qubits import default_qubits

Expand All @@ -37,7 +36,7 @@ def __init__(self, num_qubits, params, label="amplitudes", pershot=False, condit
[Default: False].
Raises:
ExtensionError: if params is invalid for the specified number of qubits.
ValueError: if params is invalid for the specified number of qubits.
"""
params = _format_amplitude_params(params, num_qubits)
super().__init__(
Expand Down Expand Up @@ -78,7 +77,7 @@ def __init__(
[Default: False].
Raises:
ExtensionError: if params is invalid for the specified number of qubits.
ValueError: if params is invalid for the specified number of qubits.
"""
params = _format_amplitude_params(params, num_qubits)
super().__init__(
Expand Down Expand Up @@ -109,7 +108,7 @@ def save_amplitudes(self, params, label="amplitudes", pershot=False, conditional
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: if params is invalid for the specified number of qubits.
ValueError: if params is invalid for the specified number of qubits.
"""
qubits = default_qubits(self)
instr = SaveAmplitudes(
Expand Down Expand Up @@ -139,7 +138,7 @@ def save_amplitudes_squared(
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: if params is invalid for the specified number of qubits.
ValueError: if params is invalid for the specified number of qubits.
"""
qubits = default_qubits(self)
instr = SaveAmplitudesSquared(
Expand All @@ -161,7 +160,7 @@ def _format_amplitude_params(params, num_qubits=None):
else:
params = [int(i, 2) for i in params]
if num_qubits and max(params) >= 2**num_qubits:
raise ExtensionError("Param values contain a state larger than the number of qubits")
raise ValueError("Param values contain a state larger than the number of qubits")
return params


Expand Down
9 changes: 3 additions & 6 deletions qiskit_aer/library/save_instructions/save_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import copy

from qiskit.circuit import Instruction
from qiskit.extensions.exceptions import ExtensionError


class SaveData(Instruction):
Expand All @@ -39,19 +38,17 @@ def __init__(self, name, num_qubits, label, subtype="single", params=None):
[Default: None].
Raises:
ExtensionError: if the subtype string is invalid.
TypeError: if the subtype string is invalid.
Additional Information:
The supported subtypes are 'single', 'list', 'c_list', 'average',
'c_average', 'accum', 'c_accum'.
"""
if subtype not in self._allowed_subtypes:
raise ExtensionError("Invalid data subtype for SaveData instruction.")
raise TypeError("Invalid data subtype for SaveData instruction.")

if not isinstance(label, str):
raise ExtensionError(
f"Invalid label for save data instruction, {label} must be a string."
)
raise TypeError(f"Invalid label for save data instruction, {label} must be a string.")

if params is None:
params = {}
Expand Down
19 changes: 11 additions & 8 deletions qiskit_aer/library/save_instructions/save_expectation_value.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
from numpy import allclose
from qiskit.quantum_info import Pauli, SparsePauliOp, Operator
from qiskit.circuit import QuantumCircuit
from qiskit.extensions.exceptions import ExtensionError
from .save_data import SaveAverageData


Expand Down Expand Up @@ -51,7 +50,8 @@ def __init__(
values [Default: False].
Raises:
ExtensionError: if the input operator is invalid or not Hermitian.
ValueError: if the input operator is not Hermitian.
TypeError: if the input operator is of invalid type.
.. note::
Expand All @@ -64,7 +64,7 @@ def __init__(
elif not isinstance(operator, SparsePauliOp):
operator = SparsePauliOp.from_operator(Operator(operator))
if not allclose(operator.coeffs.imag, 0):
raise ExtensionError("Input operator is not Hermitian.")
raise ValueError("Input operator is not Hermitian.")
params = _expval_params(operator, variance=False)
super().__init__(
"save_expval",
Expand Down Expand Up @@ -109,7 +109,8 @@ def __init__(
values [Default: False].
Raises:
ExtensionError: if the input operator is invalid or not Hermitian.
ValueError: if the input operator is not Hermitian.
TypeError: if the input operator is of invalid type.
.. note::
Expand All @@ -122,7 +123,7 @@ def __init__(
elif not isinstance(operator, SparsePauliOp):
operator = SparsePauliOp.from_operator(Operator(operator))
if not allclose(operator.coeffs.imag, 0):
raise ExtensionError("Input operator is not Hermitian.")
raise ValueError("Input operator is not Hermitian.")
params = _expval_params(operator, variance=True)
super().__init__(
"save_expval_var",
Expand All @@ -142,7 +143,7 @@ def _expval_params(operator, variance=False):
elif not isinstance(operator, SparsePauliOp):
operator = SparsePauliOp.from_operator(Operator(operator))
if not isinstance(operator, SparsePauliOp):
raise ExtensionError("Invalid input operator")
raise TypeError("Invalid input operator")

params = {}

Expand Down Expand Up @@ -196,7 +197,8 @@ def save_expectation_value(
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: if the input operator is invalid or not Hermitian.
ValueError: if the input operator is not Hermitian.
TypeError: if the input operator is of invalid type.
.. note::
Expand Down Expand Up @@ -237,7 +239,8 @@ def save_expectation_value_variance(
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: if the input operator is invalid or not Hermitian.
ValueError: if the input operator is not Hermitian.
TypeError: if the input operator is of invalid type.
.. note::
Expand Down
11 changes: 5 additions & 6 deletions qiskit_aer/library/set_instructions/set_density_matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"""

from qiskit.circuit import QuantumCircuit, Instruction
from qiskit.extensions.exceptions import ExtensionError
from qiskit.quantum_info import DensityMatrix
from ..default_qubits import default_qubits

Expand All @@ -31,7 +30,7 @@ def __init__(self, state):
state (DensityMatrix): a density matrix.
Raises:
ExtensionError: if the input density matrix is not valid.
ValueError: if the input density matrix is not valid.
.. note::
Expand All @@ -42,7 +41,7 @@ def __init__(self, state):
if not isinstance(state, DensityMatrix):
state = DensityMatrix(state)
if not state.num_qubits or not state.is_valid():
raise ExtensionError("The input state is not valid")
raise ValueError("The input state is not valid")
super().__init__("set_density_matrix", state.num_qubits, 0, [state.data])


Expand All @@ -56,8 +55,8 @@ def set_density_matrix(self, state):
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: If the density matrix is the incorrect size for the
current circuit.
ValueError: If the density matrix is the incorrect size for the
current circuit.
.. note:
Expand All @@ -67,7 +66,7 @@ def set_density_matrix(self, state):
if not isinstance(state, DensityMatrix):
state = DensityMatrix(state)
if not state.num_qubits or state.num_qubits != len(qubits):
raise ExtensionError(
raise ValueError(
"The size of the density matrix for the set state"
" instruction must be equal to the number of qubits"
f" in the circuit (state.num_qubits ({state.num_qubits})"
Expand Down
11 changes: 5 additions & 6 deletions qiskit_aer/library/set_instructions/set_matrix_product_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"""

from qiskit.circuit import QuantumCircuit, Instruction
from qiskit.extensions.exceptions import ExtensionError
from ..default_qubits import default_qubits


Expand Down Expand Up @@ -52,29 +51,29 @@ def set_matrix_product_state(self, state):
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: If the structure of the state is incorrect
ValueError: If the structure of the state is incorrect
.. note:
This instruction is always defined across all qubits in a circuit.
"""
qubits = default_qubits(self)
if not isinstance(state, tuple) or len(state) != 2:
raise ExtensionError(
raise ValueError(
"The input matrix product state is not valid. Should be a list of 2 elements"
)
if not isinstance(state[0], list) or not isinstance(state[1], list):
raise ExtensionError(
raise ValueError(
"The first element of the input matrix product state is not valid. Should be a list."
)
if len(state[0]) != len(state[1]) + 1:
raise ExtensionError(
raise ValueError(
"The input matrix product state is not valid. "
"Length of q_reg vector should be 1 more than length of lambda_reg"
)
for elem in state[0]:
if not isinstance(elem, tuple) or len(elem) != 2:
raise ExtensionError(
raise ValueError(
"The input matrix product state is not valid."
"The first element should be a list of length 2"
)
Expand Down
7 changes: 3 additions & 4 deletions qiskit_aer/library/set_instructions/set_stabilizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"""

from qiskit.circuit import QuantumCircuit, Instruction
from qiskit.extensions.exceptions import ExtensionError
from qiskit.quantum_info import StabilizerState, Clifford
from ..default_qubits import default_qubits

Expand Down Expand Up @@ -53,8 +52,8 @@ def set_stabilizer(self, state):
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: If the state is the incorrect size for the
current circuit.
ValueError: If the state is the incorrect size for the
current circuit.
.. note:
Expand All @@ -66,7 +65,7 @@ def set_stabilizer(self, state):
if not isinstance(state, Clifford):
state = Clifford(state)
if state.num_qubits != len(qubits):
raise ExtensionError(
raise ValueError(
"The size of the Clifford for the set_stabilizer"
" instruction must be equal to the number of qubits"
f" in the circuit (state.num_qubits ({state.num_qubits})"
Expand Down
11 changes: 5 additions & 6 deletions qiskit_aer/library/set_instructions/set_statevector.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"""

from qiskit.circuit import QuantumCircuit, Instruction
from qiskit.extensions.exceptions import ExtensionError
from qiskit.quantum_info import Statevector
from ..default_qubits import default_qubits

Expand All @@ -31,7 +30,7 @@ def __init__(self, state):
state (Statevector): a statevector.
Raises:
ExtensionError: if the input is not a valid state.
ValueError: if the input is not a valid state.
.. note::
Expand All @@ -42,7 +41,7 @@ def __init__(self, state):
if not isinstance(state, Statevector):
state = Statevector(state)
if not state.num_qubits or not state.is_valid():
raise ExtensionError("The input statevector is not valid")
raise ValueError("The input statevector is not valid")
super().__init__("set_statevector", state.num_qubits, 0, [state.data])


Expand All @@ -56,8 +55,8 @@ def set_statevector(self, state):
QuantumCircuit: with attached instruction.
Raises:
ExtensionError: If the state is the incorrect size for the
current circuit.
ValueError: If the state is the incorrect size for the
current circuit.
.. note:
Expand All @@ -67,7 +66,7 @@ def set_statevector(self, state):
if not isinstance(state, Statevector):
state = Statevector(state)
if not state.num_qubits or state.num_qubits != len(qubits):
raise ExtensionError(
raise ValueError(
"The size of the statevector for the set_statevector"
" instruction must be equal to the number of qubits"
f" in the circuit (state.num_qubits ({state.num_qubits})"
Expand Down
Loading

0 comments on commit 9c9c579

Please sign in to comment.