Skip to content

Commit 19a9305

Browse files
authored
Part-2: Move analytical decompositions from cirq/optimizers/ to cirq/transformers/analytical_decompositions/ (quantumlib#4785)
Moves the following files from `cirq/optimizers/` to `cirq/transformers/analytical_decompositions/` using `deprecated_submodule`: - clifford_decomposition.py - controlled_gate_decomposition.py - cphase_to_fsim.py Part of quantumlib#4722
1 parent d6311f5 commit 19a9305

10 files changed

+107
-19
lines changed

cirq/__init__.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -328,12 +328,7 @@
328328
from cirq.optimizers import (
329329
AlignLeft,
330330
AlignRight,
331-
compute_cphase_exponents_for_fsim_decomposition,
332331
ConvertToCzAndSingleGates,
333-
decompose_clifford_tableau_to_operations,
334-
decompose_cphase_into_two_fsim,
335-
decompose_multi_controlled_x,
336-
decompose_multi_controlled_rotation,
337332
decompose_two_qubit_interaction_into_four_fsim_gates,
338333
DropEmptyMoments,
339334
DropNegligible,
@@ -360,6 +355,11 @@
360355
)
361356

362357
from cirq.transformers import (
358+
compute_cphase_exponents_for_fsim_decomposition,
359+
decompose_clifford_tableau_to_operations,
360+
decompose_cphase_into_two_fsim,
361+
decompose_multi_controlled_x,
362+
decompose_multi_controlled_rotation,
363363
map_moments,
364364
map_operations,
365365
map_operations_and_unroll,

cirq/optimizers/__init__.py

+26-12
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,6 @@
2222
AlignRight,
2323
)
2424

25-
from cirq.optimizers.clifford_decomposition import decompose_clifford_tableau_to_operations
26-
27-
from cirq.optimizers.cphase_to_fsim import (
28-
compute_cphase_exponents_for_fsim_decomposition,
29-
decompose_cphase_into_two_fsim,
30-
)
31-
32-
from cirq.optimizers.controlled_gate_decomposition import (
33-
decompose_multi_controlled_x,
34-
decompose_multi_controlled_rotation,
35-
)
36-
3725
from cirq.optimizers.drop_empty_moments import (
3826
DropEmptyMoments,
3927
)
@@ -105,3 +93,29 @@
10593
from cirq.optimizers.two_qubit_to_fsim import (
10694
decompose_two_qubit_interaction_into_four_fsim_gates,
10795
)
96+
97+
from cirq import _compat
98+
99+
_compat.deprecated_submodule(
100+
new_module_name="cirq.transformers.analytical_decompositions.clifford_decomposition",
101+
old_parent="cirq.optimizers",
102+
old_child="clifford_decomposition",
103+
deadline="v0.16",
104+
create_attribute=True,
105+
)
106+
107+
_compat.deprecated_submodule(
108+
new_module_name="cirq.transformers.analytical_decompositions.cphase_to_fsim",
109+
old_parent="cirq.optimizers",
110+
old_child="cphase_to_fsim",
111+
deadline="v0.16",
112+
create_attribute=True,
113+
)
114+
115+
_compat.deprecated_submodule(
116+
new_module_name="cirq.transformers.analytical_decompositions.controlled_gate_decomposition",
117+
old_parent="cirq.optimizers",
118+
old_child="controlled_gate_decomposition",
119+
deadline="v0.16",
120+
create_attribute=True,
121+
)

cirq/transformers/__init__.py

+5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
"""Circuit transformation utilities."""
1616

1717
from cirq.transformers.analytical_decompositions import (
18+
compute_cphase_exponents_for_fsim_decomposition,
19+
decompose_cphase_into_two_fsim,
20+
decompose_clifford_tableau_to_operations,
21+
decompose_multi_controlled_x,
22+
decompose_multi_controlled_rotation,
1823
prepare_two_qubit_state_using_cz,
1924
prepare_two_qubit_state_using_sqrt_iswap,
2025
)

cirq/transformers/analytical_decompositions/__init__.py

+14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@
1414

1515
"""Utilities for analytical decomposition of cirq gates."""
1616

17+
from cirq.transformers.analytical_decompositions.clifford_decomposition import (
18+
decompose_clifford_tableau_to_operations,
19+
)
20+
21+
from cirq.transformers.analytical_decompositions.controlled_gate_decomposition import (
22+
decompose_multi_controlled_x,
23+
decompose_multi_controlled_rotation,
24+
)
25+
26+
from cirq.transformers.analytical_decompositions.cphase_to_fsim import (
27+
compute_cphase_exponents_for_fsim_decomposition,
28+
decompose_cphase_into_two_fsim,
29+
)
30+
1731
from cirq.transformers.analytical_decompositions.two_qubit_state_preparation import (
1832
prepare_two_qubit_state_using_cz,
1933
prepare_two_qubit_state_using_sqrt_iswap,

cirq/optimizers/clifford_decomposition_test.py renamed to cirq/transformers/analytical_decompositions/clifford_decomposition_test.py

+10
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@
1818
import cirq
1919
from cirq.testing import assert_allclose_up_to_global_phase
2020

21+
ALLOW_DEPRECATION_IN_TEST = 'ALLOW_DEPRECATION_IN_TEST'
22+
23+
24+
def test_deprecated_submodule():
25+
with cirq.testing.assert_deprecated(
26+
"Use cirq.transformers.analytical_decompositions.clifford_decomposition instead",
27+
deadline="v0.16",
28+
):
29+
_ = cirq.optimizers.clifford_decomposition.decompose_clifford_tableau_to_operations
30+
2131

2232
def test_misaligned_qubits():
2333
qubits = cirq.LineQubit.range(1)

cirq/optimizers/controlled_gate_decomposition_test.py renamed to cirq/transformers/analytical_decompositions/controlled_gate_decomposition_test.py

+10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@
1717

1818
import cirq
1919

20+
ALLOW_DEPRECATION_IN_TEST = 'ALLOW_DEPRECATION_IN_TEST'
21+
22+
23+
def test_deprecated_submodule():
24+
with cirq.testing.assert_deprecated(
25+
"Use cirq.transformers.analytical_decompositions.controlled_gate_decomposition instead",
26+
deadline="v0.16",
27+
):
28+
_ = cirq.optimizers.controlled_gate_decomposition.decompose_multi_controlled_rotation
29+
2030

2131
def test_decompose_x():
2232
"""Verifies correctness of multi-controlled X decomposition."""

cirq/optimizers/cphase_to_fsim.py renamed to cirq/transformers/analytical_decompositions/cphase_to_fsim.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1-
# pylint: disable=wrong-or-nonexistent-copyright-notice
1+
# Copyright 2021 The Cirq Developers
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
215
from typing import Optional, Sequence, Tuple, TYPE_CHECKING
316

417
import numpy as np

cirq/optimizers/cphase_to_fsim_test.py renamed to cirq/transformers/analytical_decompositions/cphase_to_fsim_test.py

+23-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1-
# pylint: disable=wrong-or-nonexistent-copyright-notice
1+
# Copyright 2021 The Cirq Developers
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
215
from typing import List, Sequence, Tuple
316

417
import itertools
@@ -8,6 +21,15 @@
821

922
import cirq
1023

24+
ALLOW_DEPRECATION_IN_TEST = 'ALLOW_DEPRECATION_IN_TEST'
25+
26+
27+
def test_deprecated_submodule():
28+
with cirq.testing.assert_deprecated(
29+
"Use cirq.transformers.analytical_decompositions.cphase_to_fsim instead", deadline="v0.16"
30+
):
31+
_ = cirq.optimizers.cphase_to_fsim.decompose_cphase_into_two_fsim
32+
1133

1234
class FakeSycamoreGate(cirq.FSimGate):
1335
def __init__(self):

0 commit comments

Comments
 (0)