Skip to content

Commit

Permalink
Remove quantum_info deprecated code in 0.22 (#10861)
Browse files Browse the repository at this point in the history
* remove deprecated code in 0.22

* update docs

* Update releasenotes/notes/remove-deprecated-code-in-0.22-128475199e6f3cc2.yaml

---------

Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
  • Loading branch information
doublehoon and 1ucian0 authored Sep 20, 2023
1 parent 82aaef5 commit d559659
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 85 deletions.
2 changes: 0 additions & 2 deletions qiskit/quantum_info/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@
.. autofunction:: random_cnotdihedral
.. autofunction:: random_pauli_table
.. autofunction:: random_pauli_list
.. autofunction:: random_stabilizer_table
Analysis
=========
Expand Down Expand Up @@ -152,7 +151,6 @@
random_pauli_list,
random_pauli_table,
random_quantum_channel,
random_stabilizer_table,
random_statevector,
random_unitary,
)
Expand Down
1 change: 0 additions & 1 deletion qiskit/quantum_info/operators/random.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
random_pauli,
random_pauli_list,
random_pauli_table,
random_stabilizer_table,
)

DEFAULT_RNG = default_rng()
Expand Down
13 changes: 1 addition & 12 deletions qiskit/quantum_info/operators/symplectic/pauli_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,30 +15,19 @@

from __future__ import annotations
from qiskit.quantum_info.operators.symplectic.pauli_list import PauliList
from qiskit.utils.deprecation import deprecate_arg


@deprecate_arg(
"pauli_basis",
since="0.22",
additional_msg=(
"The argument ``pauli_list`` has no effect as the function always returns a PauliList."
),
)
def pauli_basis(num_qubits: int, weight: bool = False, pauli_list=None) -> PauliList:
def pauli_basis(num_qubits: int, weight: bool = False) -> PauliList:
"""Return the ordered PauliTable or PauliList for the n-qubit Pauli basis.
Args:
num_qubits (int): number of qubits
weight (bool): if True optionally return the basis sorted by Pauli weight
rather than lexicographic order (Default: False)
pauli_list (bool): [Deprecated] This argument is deprecated and remains
for backwards compatability. It has no effect.
Returns:
PauliList: the Paulis for the basis
"""
del pauli_list
pauli_1q = PauliList(["I", "X", "Y", "Z"])
if num_qubits == 1:
return pauli_1q
Expand Down
30 changes: 0 additions & 30 deletions qiskit/quantum_info/operators/symplectic/random.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,11 @@
import numpy as np
from numpy.random import default_rng

from qiskit.utils.deprecation import deprecate_func

from .clifford import Clifford
from .pauli import Pauli
from .pauli_list import PauliList
from .pauli_table import PauliTable
from .stabilizer_table import StabilizerTable


def random_pauli(
Expand Down Expand Up @@ -113,34 +111,6 @@ def random_pauli_table(
return PauliTable(table)


@deprecate_func(
additional_msg="Instead, use the function ``random_pauli_list``.",
since="0.22.0",
)
def random_stabilizer_table(num_qubits, size=1, seed=None):
"""DEPRECATED: Return a random StabilizerTable.
Args:
num_qubits (int): the number of qubits.
size (int): Optional. The number of rows of the table (Default: 1).
seed (int or np.random.Generator): Optional. Set a fixed seed or
generator for RNG.
Returns:
PauliTable: a random StabilizerTable.
"""
if seed is None:
rng = np.random.default_rng()
elif isinstance(seed, np.random.Generator):
rng = seed
else:
rng = default_rng(seed)

table = rng.integers(2, size=(size, 2 * num_qubits)).astype(bool)
phase = rng.integers(2, size=size).astype(bool)
return StabilizerTable(table, phase)


def random_clifford(num_qubits: int, seed: int | np.random.Generator | None = None):
"""Return a random Clifford operator.
Expand Down
1 change: 0 additions & 1 deletion qiskit/quantum_info/random.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
random_pauli_list,
random_pauli_table,
random_quantum_channel,
random_stabilizer_table,
random_unitary,
)
from qiskit.quantum_info.states.random import random_density_matrix, random_statevector
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
upgrade:
- |
The method :meth:`qiskit.quantum_info.pauli_basis`
does not accept `pauli_list` argument any more.
It was deprecated in Qiskit 0.39 (with Terra 0.22), released on Oct 2022.
- |
The function ``random_stabilizer_table``
in the class :class:`qiskit.quantum_info.random` is removed.
It was deprecated in Qiskit 0.39 (with Terra 0.22), released on Oct 2022.
Instead, use :func:``qiskit.quantum_info.random.random_pauli_list``.
39 changes: 0 additions & 39 deletions test/python/quantum_info/operators/test_random.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
Operator,
PauliList,
PauliTable,
StabilizerTable,
Stinespring,
)
from qiskit.quantum_info.operators.predicates import is_hermitian_matrix
Expand All @@ -34,7 +33,6 @@
random_pauli_list,
random_pauli_table,
random_quantum_channel,
random_stabilizer_table,
random_unitary,
)
from qiskit.test import QiskitTestCase
Expand Down Expand Up @@ -284,42 +282,5 @@ def test_not_global_seed(self):
self.assertFalse(np.all(rng_before == rng_after))


@ddt
class TestRandomStabilizerTable(QiskitTestCase):
"""Testing random_stabilizer_table function."""

@combine(num_qubits=[1, 2, 3, 4, 5, 10, 50, 100, 200, 250], size=[1, 10, 100])
def test_valid(self, num_qubits, size):
"""Test random_stabilizer_table {num_qubits}-qubits, size {size}."""
with self.assertWarns(DeprecationWarning):
value = random_stabilizer_table(num_qubits, size=size)
with self.subTest(msg="Test type"):
self.assertIsInstance(value, StabilizerTable)
with self.subTest(msg="Test num_qubits"):
self.assertEqual(value.num_qubits, num_qubits)
with self.subTest(msg="Test type"):
self.assertEqual(len(value), size)

def test_fixed_seed(self):
"""Test fixing seed fixes output"""
seed = 1532
with self.assertWarns(DeprecationWarning):
value1 = random_stabilizer_table(10, size=10, seed=seed)
value2 = random_stabilizer_table(10, size=10, seed=seed)
self.assertEqual(value1, value2)

def test_not_global_seed(self):
"""Test fixing random_hermitian seed is locally scoped."""
seed = 314159
test_cases = 100
with self.assertWarns(DeprecationWarning):
random_stabilizer_table(10, size=10, seed=seed)
rng_before = np.random.randint(1000, size=test_cases)
with self.assertWarns(DeprecationWarning):
random_stabilizer_table(10, seed=seed)
rng_after = np.random.randint(1000, size=test_cases)
self.assertFalse(np.all(rng_before == rng_after))


if __name__ == "__main__":
unittest.main()

0 comments on commit d559659

Please sign in to comment.