You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+26-17Lines changed: 26 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,7 @@ PyMatching can be configured using arbitrary weighted graphs, with or without a
23
23
Craig Gidney's [Stim](https://github.com/quantumlib/Stim) library to simulate and decode error correction circuits
24
24
in the presence of circuit-level noise. The [sinter](https://pypi.org/project/sinter/) package combines Stim and
25
25
PyMatching to perform fast, parallelised monte-carlo sampling of quantum error correction circuits.
26
+
As of a recent update (v2.3), pymatching also supports [correlated matching](https://arxiv.org/abs/1310.0863).
26
27
27
28
Documentation for PyMatching can be found at: [pymatching.readthedocs.io](https://pymatching.readthedocs.io/en/stable/)
28
29
@@ -70,6 +71,14 @@ in a similar way to how clusters are grown in Union-Find, whereas our approach i
70
71
and uses a global priority queue to grow alternating trees.
71
72
Yue also has a paper coming soon, so stay tuned for that as well.
72
73
74
+
## Correlated matching
75
+
76
+
As of PyMatching version 2.3, [correlated matching](https://arxiv.org/abs/1310.0863) is now also available in pymatching! Thank you to Sid Madhuk, who was the primary contributor for this new feature.
77
+
78
+
Correlated matching has better accuracy than standard (uncorrelated) matching for many decoding problems where hyperedge errors are present. When these hyperedge errors are decomposed into edges (graphlike errors), they amount to correlations between these edges in the matching graph. A common example of such a hyperedge error is a $Y$ error in the surface code.
79
+
80
+
The "two-pass" correlated matching decoder implemented in pymatching works by running sparse blossom twice. The first pass is a standard (uncorrelated) run of sparse blossom, to predict a set of edges in the matching graph. Correlated matching then assumes these errors (edges) occurred and reweights edges that are correlated with it based on this assumption. Matching is then run for the second time on this reweighted graph.
81
+
73
82
## Installation
74
83
75
84
The latest version of PyMatching can be downloaded and installed from [PyPI](https://pypi.org/project/PyMatching/)
@@ -100,10 +109,12 @@ First, we generate a stim circuit. Here, we use a surface code circuit included
Now we can decode! We compare PyMatching's predictions of the logical observables with the actual observables sampled
129
-
with stim, in order to count the number of mistakes and estimate the logical error rate:
139
+
Now we can decode! We compare PyMatching's predictions of the logical observables with the actual observables sampled with stim, in order to count the number of mistakes and estimate the logical error rate:
0 commit comments