44
55from bloqade import qasm2 , squin
66from bloqade .qasm2 import noise
7- from bloqade .analysis .fidelity import FidelityAnalysis
7+ from bloqade .analysis .fidelity import FidelityRange , FidelityAnalysis
88from bloqade .qasm2 .passes .noise import NoisePass
99
1010
@@ -216,11 +216,14 @@ def main():
216216 print (fid_analysis .gate_fidelities )
217217
218218 assert len (fid_analysis .gate_fidelities ) == 2
219- assert math .isclose (fid_analysis .gate_fidelities [0 ][ 0 ] , 0.4 )
220- assert math .isclose (fid_analysis .gate_fidelities [0 ][ 1 ] , 0.4 )
221- assert fid_analysis .gate_fidelities [1 ] == [ 1.0 , 1.0 ]
219+ assert math .isclose (fid_analysis .gate_fidelities [0 ]. max , 0.4 )
220+ assert math .isclose (fid_analysis .gate_fidelities [0 ]. min , 0.4 )
221+ assert fid_analysis .gate_fidelities [1 ] == FidelityRange ( 1.0 , 1.0 )
222222
223- assert fid_analysis .qubit_survival_fidelities == [[1.0 , 1.0 ], [0.9 , 0.9 ]]
223+ assert fid_analysis .qubit_survival_fidelities == [
224+ FidelityRange (1.0 , 1.0 ),
225+ FidelityRange (0.9 , 0.9 ),
226+ ]
224227
225228
226229def test_squin_if ():
@@ -242,8 +245,14 @@ def main():
242245 fidelity_analysis = FidelityAnalysis (main .dialects )
243246 frame , _ = fidelity_analysis .run (main )
244247
245- assert fidelity_analysis .gate_fidelities == [[0.9 , 1.0 ], [0.8 , 1.0 ]]
246- assert fidelity_analysis .qubit_survival_fidelities == [[0.85 , 1.0 ], [0.75 , 1.0 ]]
248+ assert fidelity_analysis .gate_fidelities == [
249+ FidelityRange (0.9 , 1.0 ),
250+ FidelityRange (0.8 , 1.0 ),
251+ ]
252+ assert fidelity_analysis .qubit_survival_fidelities == [
253+ FidelityRange (0.85 , 1.0 ),
254+ FidelityRange (0.75 , 1.0 ),
255+ ]
247256
248257
249258def test_squin_for ():
@@ -258,7 +267,7 @@ def main():
258267 frame , _ = fidelity_analysis .run (main )
259268
260269 assert fidelity_analysis .gate_fidelities == [
261- [ 1.0 - i * 0.01 , 1.0 - i * 0.01 ] for i in range (4 )
270+ FidelityRange ( 1.0 - i * 0.01 , 1.0 - i * 0.01 ) for i in range (4 )
262271 ]
263272
264273
@@ -302,19 +311,25 @@ def main():
302311 frame , _ = fidelity_analysis .run (main )
303312
304313 assert fidelity_analysis .gate_fidelities == [
305- [0.4 , 0.4 ], # squin.single_qubit_pauli_channel(0.15, 0.2, 0.25, q[0])
306- [0.8 , 0.8 ], # squin.depolarize(0.2, q[1])
307- [1 - 12 * 0.01 , 1 - 12 * 0.01 ], # squin.two_qubit_pauli_channel(..., q[2])
308- [1 - 12 * 0.01 , 1 - 12 * 0.01 ], # squin.two_qubit_pauli_channel(..., q[3])
309- [0.88 , 0.88 ], # squin.depolarize2(0.15, q[4])
310- [0.88 , 0.88 ], # squin.depolarize2(0.15, q[5])
314+ FidelityRange (
315+ 0.4 , 0.4
316+ ), # squin.single_qubit_pauli_channel(0.15, 0.2, 0.25, q[0])
317+ FidelityRange (0.8 , 0.8 ), # squin.depolarize(0.2, q[1])
318+ FidelityRange (
319+ 1 - 12 * 0.01 , 1 - 12 * 0.01
320+ ), # squin.two_qubit_pauli_channel(..., q[2])
321+ FidelityRange (
322+ 1 - 12 * 0.01 , 1 - 12 * 0.01
323+ ), # squin.two_qubit_pauli_channel(..., q[3])
324+ FidelityRange (0.88 , 0.88 ), # squin.depolarize2(0.15, q[4])
325+ FidelityRange (0.88 , 0.88 ), # squin.depolarize2(0.15, q[5])
311326 ]
312327
313328 assert (
314329 fidelity_analysis .qubit_survival_fidelities
315330 == [
316- [ 0.9 , 0.9 ] , # squin.qubit_loss(0.1, q[0])
317- [ 1.0 , 1.0 ] ,
331+ FidelityRange ( 0.9 , 0.9 ) , # squin.qubit_loss(0.1, q[0])
332+ FidelityRange ( 1.0 , 1.0 ) ,
318333 ]
319- + [[ 0.87 , 0.87 ] ] * 4
334+ + [FidelityRange ( 0.87 , 0.87 ) ] * 4
320335 ) # squin.correlated_qubit_loss
0 commit comments