Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove usage of qiskit.extensions #2023

Merged
merged 1 commit into from
Jan 9, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
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
Loading