I am trying to implement a bp+osd decoder, using the build-in python package from here: https://github.com/quantumgizmos/bp_osd

One of the parameters for the decoder is "channel_probs", where one assigns an error probability for each qubit. In the case of an iid Pauli noise, all probabilities can be chosen to be uniform with the value, of, say, 0.05. On the other hand, when one considers an iid loss noise, all lost qubits (which assumed to be heralded in measurement) are given an error probability 1, and the rest are 0.

My question is, what do you do if you have both errors? Assigning 1 to all lost qubits and 0.05 to the rest of them doesn't seems to work. Note that in pymatching, for example, you can also assign a "weight", and there each lost qubit is weighted 0 whereas all other qubits are weighted 1 (in the simplest case), and the decoder works just fine.

  • 1
    $\begingroup$ Have you tried assigning 0.5 to the lost qubits instead of 1? $\endgroup$
    – squiggles
    Mar 3 at 21:13
  • $\begingroup$ I have almost no intuition regarding why, and it also slightly hard to be sure, but it's seems to work! Thank you very much $\endgroup$ Mar 4 at 10:31

1 Answer 1


Expanding on my comment for posterity: the edge weights in MWPM decoders (typically) convert error probabilities to edge weights via the formula $\ln((1-p)/p))$, where $p$ is the probability of the edge occurring. This is 0 when $p = 0.5%$. The BP+OSD decoder is probably using some type of Tanner graph to represent the probabilities of error events. So to get the analogous behavior as the MWPM decoder, one should choose $p=0.5%$ in the places where one used $\text{weight} = 0$.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.