@@ -11,44 +11,98 @@ def parallel_cz_errors(self, ctrls, qargs, rest):
1111 return {(0.01 , 0.01 , 0.01 , 0.01 ): ctrls + qargs + rest }
1212
1313
14- @noise_main
15- def main ():
16- q = qasm2 .qreg (2 )
17- qasm2 .x (q [0 ])
18- return q
14+ def test_basic_noise ():
1915
16+ @noise_main
17+ def main ():
18+ q = qasm2 .qreg (2 )
19+ qasm2 .x (q [0 ])
20+ return q
2021
21- main .print ()
22+ main .print ()
2223
23- fid_analysis = FidelityAnalysis (main .dialects )
24- fid_analysis .run_analysis (main )
24+ fid_analysis = FidelityAnalysis (main .dialects )
25+ fid_analysis .run_analysis (main )
2526
26- assert fid_analysis .global_fidelity == fid_analysis .current_fidelity == 1
27+ assert fid_analysis .global_fidelity == fid_analysis .current_fidelity == 1
2728
29+ px = 0.01
30+ py = 0.01
31+ pz = 0.01
32+ p_loss = 0.01
2833
29- px = 0.01
30- py = 0.01
31- pz = 0.01
32- p_loss = 0.01
34+ noise_params = native .GateNoiseParams (
35+ global_loss_prob = p_loss ,
36+ global_px = px ,
37+ global_py = py ,
38+ global_pz = pz ,
39+ local_px = 0.002 ,
40+ )
3341
34- noise_params = native .GateNoiseParams (
35- global_loss_prob = p_loss ,
36- global_px = px ,
37- global_py = py ,
38- global_pz = pz ,
39- local_px = 0.002 ,
40- )
42+ model = NoiseTestModel ()
4143
42- model = NoiseTestModel ( )
44+ NoisePass ( main . dialects , noise_model = model , gate_noise_params = noise_params )( main )
4345
46+ main .print ()
4447
45- NoisePass (main .dialects , noise_model = model , gate_noise_params = noise_params )(main )
48+ fid_analysis = FidelityAnalysis (main .dialects )
49+ fid_analysis .run_analysis (main , no_raise = False )
4650
51+ p_noise = noise_params .local_px + noise_params .local_py + noise_params .local_pz
52+ assert (
53+ fid_analysis .global_fidelity == fid_analysis .current_fidelity == (1 - p_noise )
54+ )
4755
48- main .print ()
4956
50- fid_analysis = FidelityAnalysis (main .dialects )
51- fid_analysis .run_analysis (main , no_raise = False )
57+ def test_if ():
5258
53- p_noise = noise_params .local_px + noise_params .local_py + noise_params .local_pz
54- assert fid_analysis .global_fidelity == fid_analysis .current_fidelity == (1 - p_noise )
59+ @noise_main
60+ def main ():
61+ q = qasm2 .qreg (1 )
62+ c = qasm2 .creg (1 )
63+ qasm2 .h (q [0 ])
64+ qasm2 .measure (q , c )
65+ qasm2 .x (q [0 ])
66+ qasm2 .measure (q , c )
67+
68+ return c
69+
70+ @noise_main
71+ def main_if ():
72+ q = qasm2 .qreg (1 )
73+ c = qasm2 .creg (1 )
74+ qasm2 .h (q [0 ])
75+ qasm2 .measure (q , c )
76+
77+ if c [0 ] == 0 :
78+ qasm2 .x (q [0 ])
79+
80+ qasm2 .measure (q , c )
81+ return c
82+
83+ px = 0.01
84+ py = 0.01
85+ pz = 0.01
86+ p_loss = 0.01
87+
88+ noise_params = native .GateNoiseParams (
89+ global_loss_prob = p_loss ,
90+ global_px = px ,
91+ global_py = py ,
92+ global_pz = pz ,
93+ local_px = 0.002 ,
94+ )
95+
96+ model = NoiseTestModel ()
97+ NoisePass (main .dialects , noise_model = model , gate_noise_params = noise_params )(main )
98+ fid_analysis = FidelityAnalysis (main .dialects )
99+ fid_analysis .run_analysis (main , no_raise = False )
100+
101+ model = NoiseTestModel ()
102+ NoisePass (main_if .dialects , noise_model = model , gate_noise_params = noise_params )(
103+ main_if
104+ )
105+ fid_if_analysis = FidelityAnalysis (main_if .dialects )
106+ fid_if_analysis .run_analysis (main_if , no_raise = False )
107+
108+ assert 0 < fid_if_analysis .global_fidelity == fid_analysis .global_fidelity < 1
0 commit comments