13
13
# limitations under the License.
14
14
15
15
from typing import TYPE_CHECKING , Any , Dict , Tuple , Type , Union
16
- import numpy as np
17
16
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
20
19
21
20
if TYPE_CHECKING :
22
21
import cirq
@@ -97,8 +96,10 @@ def _from_json_dict_(cls, gate_type, qubits, **kwargs) -> 'OpIdentifier':
97
96
return cls (gate_type , * qubits )
98
97
99
98
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
102
103
"""Calculates the XEB fidelity from the depolarization decay constant.
103
104
104
105
Args:
@@ -108,11 +109,13 @@ def decay_constant_to_xeb_fidelity(decay_constant: float, num_qubits: int = 2) -
108
109
Returns:
109
110
Calculated XEB fidelity.
110
111
"""
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 )
113
113
114
114
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
116
119
"""Calculates pauli error from the depolarization decay constant.
117
120
118
121
Args:
@@ -122,11 +125,13 @@ def decay_constant_to_pauli_error(decay_constant: float, num_qubits: int = 1) ->
122
125
Returns:
123
126
Calculated Pauli error.
124
127
"""
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 )
127
129
128
130
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
130
135
"""Calculates depolarization decay constant from pauli error.
131
136
132
137
Args:
@@ -136,11 +141,13 @@ def pauli_error_to_decay_constant(pauli_error: float, num_qubits: int = 1) -> fl
136
141
Returns:
137
142
Calculated depolarization decay constant.
138
143
"""
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 )
141
145
142
146
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
144
151
"""Calculates the depolarization decay constant from XEB fidelity.
145
152
146
153
Args:
@@ -150,11 +157,11 @@ def xeb_fidelity_to_decay_constant(xeb_fidelity: float, num_qubits: int = 2) ->
150
157
Returns:
151
158
Calculated depolarization decay constant.
152
159
"""
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 )
155
161
156
162
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
158
165
"""Calculates the pauli error from T1 decay constant.
159
166
160
167
This computes error for a specific duration, `t`.
@@ -166,11 +173,11 @@ def pauli_error_from_t1(t_ns: float, t1_ns: float) -> float:
166
173
Returns:
167
174
Calculated Pauli error resulting from T1 decay.
168
175
"""
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 )
171
177
172
178
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
174
181
"""Calculates the average error from the depolarization decay constant.
175
182
176
183
Args:
@@ -180,11 +187,13 @@ def average_error(decay_constant: float, num_qubits: int = 1) -> float:
180
187
Returns:
181
188
Calculated average error.
182
189
"""
183
- N = 2 ** num_qubits
184
- return (1 - decay_constant ) * (1 - 1 / N )
190
+ return qis .average_error (decay_constant , num_qubits )
185
191
186
192
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
188
197
"""The component of Pauli error caused by decoherence on a single qubit.
189
198
190
199
Args:
@@ -195,11 +204,4 @@ def decoherence_pauli_error(t1_ns: float, tphi_ns: float, gate_time_ns: float) -
195
204
Returns:
196
205
Calculated Pauli error resulting from decoherence.
197
206
"""
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