Skip to content

Commit d78e25a

Browse files
committed
Fix getting probs from noise channel
1 parent d2fd7d0 commit d78e25a

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/bloqade/noise/fidelity.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@ def single_qubit_gate(
1818
frame: interp.Frame[EmptyLattice],
1919
stmt: PauliChannel,
2020
):
21-
ps, ps_ctrl = stmt.probabilities
22-
p = sum(ps)
21+
probs = stmt.probabilities
22+
try:
23+
ps, ps_ctrl = probs
24+
except ValueError:
25+
(ps,) = probs
26+
ps_ctrl = ()
2327

24-
# NOTE: will be 0 if no ctrls
28+
p = sum(ps)
2529
p_ctrl = sum(ps_ctrl)
2630

2731
# NOTE: fidelity is just the inverse probability of any noise to occur

test/analysis/fidelity/test_fidelity.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ def main():
3232
p_loss = 0.01
3333

3434
noise_params = native.GateNoiseParams(
35-
global_loss_prob=p_loss, global_px=px, global_py=py, global_pz=pz
35+
global_loss_prob=p_loss,
36+
global_px=px,
37+
global_py=py,
38+
global_pz=pz,
39+
local_px=0.002,
3640
)
3741

3842
model = NoiseTestModel()
@@ -46,5 +50,5 @@ def main():
4650
fid_analysis = FidelityAnalysis(main.dialects)
4751
fid_analysis.run_analysis(main, no_raise=False)
4852

49-
print(fid_analysis.global_fidelity)
50-
print(fid_analysis.current_fidelity)
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)

0 commit comments

Comments
 (0)