1313# limitations under the License.
1414
1515from typing import TYPE_CHECKING , Any , Dict , Tuple , Type , Union
16- import numpy as np
1716
18- from cirq import ops , protocols , value
19- from cirq ._compat import proper_repr
17+ from cirq import ops , protocols , value , qis
18+ from cirq ._compat import proper_repr , deprecated
2019
2120if TYPE_CHECKING :
2221 import cirq
@@ -97,8 +96,10 @@ def _from_json_dict_(cls, gate_type, qubits, **kwargs) -> 'OpIdentifier':
9796 return cls (gate_type , * qubits )
9897
9998
100- # TODO: expose all from top-level cirq?
101- def decay_constant_to_xeb_fidelity (decay_constant : float , num_qubits : int = 2 ) -> float :
99+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.decay_constant_to_xeb_fidelity' )
100+ def decay_constant_to_xeb_fidelity (
101+ decay_constant : float , num_qubits : int = 2
102+ ) -> float : # pragma: no cover
102103 """Calculates the XEB fidelity from the depolarization decay constant.
103104
104105 Args:
@@ -108,11 +109,13 @@ def decay_constant_to_xeb_fidelity(decay_constant: float, num_qubits: int = 2) -
108109 Returns:
109110 Calculated XEB fidelity.
110111 """
111- N = 2 ** num_qubits
112- return 1 - ((1 - decay_constant ) * (1 - 1 / N ))
112+ return qis .decay_constant_to_xeb_fidelity (decay_constant , num_qubits )
113113
114114
115- def decay_constant_to_pauli_error (decay_constant : float , num_qubits : int = 1 ) -> float :
115+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.decay_constant_to_pauli_error' )
116+ def decay_constant_to_pauli_error (
117+ decay_constant : float , num_qubits : int = 1
118+ ) -> float : # pragma: no cover
116119 """Calculates pauli error from the depolarization decay constant.
117120
118121 Args:
@@ -122,11 +125,13 @@ def decay_constant_to_pauli_error(decay_constant: float, num_qubits: int = 1) ->
122125 Returns:
123126 Calculated Pauli error.
124127 """
125- N = 2 ** num_qubits
126- return (1 - decay_constant ) * (1 - 1 / N / N )
128+ return qis .decay_constant_to_pauli_error (decay_constant , num_qubits )
127129
128130
129- def pauli_error_to_decay_constant (pauli_error : float , num_qubits : int = 1 ) -> float :
131+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.pauli_error_to_decay_constant' )
132+ def pauli_error_to_decay_constant (
133+ pauli_error : float , num_qubits : int = 1
134+ ) -> float : # pragma: no cover
130135 """Calculates depolarization decay constant from pauli error.
131136
132137 Args:
@@ -136,11 +141,13 @@ def pauli_error_to_decay_constant(pauli_error: float, num_qubits: int = 1) -> fl
136141 Returns:
137142 Calculated depolarization decay constant.
138143 """
139- N = 2 ** num_qubits
140- return 1 - (pauli_error / (1 - 1 / N / N ))
144+ return qis .pauli_error_to_decay_constant (pauli_error , num_qubits )
141145
142146
143- def xeb_fidelity_to_decay_constant (xeb_fidelity : float , num_qubits : int = 2 ) -> float :
147+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.xeb_fidelity_to_decay_constant' )
148+ def xeb_fidelity_to_decay_constant (
149+ xeb_fidelity : float , num_qubits : int = 2
150+ ) -> float : # pragma: no cover
144151 """Calculates the depolarization decay constant from XEB fidelity.
145152
146153 Args:
@@ -150,11 +157,11 @@ def xeb_fidelity_to_decay_constant(xeb_fidelity: float, num_qubits: int = 2) ->
150157 Returns:
151158 Calculated depolarization decay constant.
152159 """
153- N = 2 ** num_qubits
154- return 1 - (1 - xeb_fidelity ) / (1 - 1 / N )
160+ return qis .xeb_fidelity_to_decay_constant (xeb_fidelity , num_qubits )
155161
156162
157- def pauli_error_from_t1 (t_ns : float , t1_ns : float ) -> float :
163+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.pauli_error_from_t1' )
164+ def pauli_error_from_t1 (t_ns : float , t1_ns : float ) -> float : # pragma: no cover
158165 """Calculates the pauli error from T1 decay constant.
159166
160167 This computes error for a specific duration, `t`.
@@ -166,11 +173,11 @@ def pauli_error_from_t1(t_ns: float, t1_ns: float) -> float:
166173 Returns:
167174 Calculated Pauli error resulting from T1 decay.
168175 """
169- t2 = 2 * t1_ns
170- return (1 - np .exp (- t_ns / t2 )) / 2 + (1 - np .exp (- t_ns / t1_ns )) / 4
176+ return qis .pauli_error_from_t1 (t_ns , t1_ns )
171177
172178
173- def average_error (decay_constant : float , num_qubits : int = 1 ) -> float :
179+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.average_error' )
180+ def average_error (decay_constant : float , num_qubits : int = 1 ) -> float : # pragma: no cover
174181 """Calculates the average error from the depolarization decay constant.
175182
176183 Args:
@@ -180,11 +187,13 @@ def average_error(decay_constant: float, num_qubits: int = 1) -> float:
180187 Returns:
181188 Calculated average error.
182189 """
183- N = 2 ** num_qubits
184- return (1 - decay_constant ) * (1 - 1 / N )
190+ return qis .average_error (decay_constant , num_qubits )
185191
186192
187- def decoherence_pauli_error (t1_ns : float , tphi_ns : float , gate_time_ns : float ) -> float :
193+ @deprecated (deadline = 'v2.0' , fix = 'use cirq.qis.decoherence_pauli_error' )
194+ def decoherence_pauli_error (
195+ t1_ns : float , tphi_ns : float , gate_time_ns : float
196+ ) -> float : # pragma: no cover
188197 """The component of Pauli error caused by decoherence on a single qubit.
189198
190199 Args:
@@ -195,11 +204,4 @@ def decoherence_pauli_error(t1_ns: float, tphi_ns: float, gate_time_ns: float) -
195204 Returns:
196205 Calculated Pauli error resulting from decoherence.
197206 """
198- gamma_2 = (1 / (2 * t1_ns )) + 1 / tphi_ns
199-
200- exp1 = np .exp (- gate_time_ns / t1_ns )
201- exp2 = np .exp (- gate_time_ns * gamma_2 )
202- px = 0.25 * (1 - exp1 )
203- py = px
204- pz = 0.5 * (1 - exp2 ) - px
205- return px + py + pz
207+ return qis .decoherence_pauli_error (t1_ns , tphi_ns , gate_time_ns )
0 commit comments