sinter 1.15.dev1730500841__tar.gz → 1.15.dev1733301548__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sinter might be problematic. Click here for more details.
- {sinter-1.15.dev1730500841/src/sinter.egg-info → sinter-1.15.dev1733301548}/PKG-INFO +1 -1
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/setup.py +1 -1
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/__init__.py +1 -1
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_mwpf.py +24 -13
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548/src/sinter.egg-info}/PKG-INFO +1 -1
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/MANIFEST.in +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/README.md +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/readme_example_plot.png +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/requirements.txt +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/setup.cfg +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/__init__.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_manager.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_manager_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_worker_loop.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_worker_state.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_worker_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_mux_sampler.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_printer.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_sampler_ramp_throttled.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/__init__.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_collect.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_collect_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_combine.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_combine_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_plot.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_plot_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_predict.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_predict_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/__init__.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_anon_task_stats.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_anon_task_stats_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_collection_options.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_collection_options_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_csv_out.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_existing_data.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_existing_data_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_task.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_task_stats.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_task_stats_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_task_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/__init__.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_all_built_in_decoders.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_decoder_class.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_fusion_blossom.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_pymatching.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_vacuous.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_perfectionist_sampler.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_sampler.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_stim_then_decode_sampler.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_stim_then_decode_sampler_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_plotting.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_plotting_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_predict.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_predict_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_probability_util.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_probability_util_test.py +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/SOURCES.txt +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/dependency_links.txt +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/entry_points.txt +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/requires.txt +0 -0
- {sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/top_level.txt +0 -0
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_mwpf.py
RENAMED
|
@@ -15,7 +15,7 @@ def mwpf_import_error() -> ImportError:
|
|
|
15
15
|
return ImportError(
|
|
16
16
|
"The decoder 'MWPF' isn't installed\n"
|
|
17
17
|
"To fix this, install the python package 'MWPF' into your environment.\n"
|
|
18
|
-
"For example, if you are using pip, run `pip install MWPF~=0.1.
|
|
18
|
+
"For example, if you are using pip, run `pip install MWPF~=0.1.5`.\n"
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
|
|
@@ -75,12 +75,18 @@ class MwpfDecoder(Decoder):
|
|
|
75
75
|
# For example, `SolverSerialUnionFind` is the most basic solver without any plugin: it only
|
|
76
76
|
# grows the clusters until the first valid solution appears; some more optimized solvers uses
|
|
77
77
|
# one or more plugins to further optimize the solution, which requires longer decoding time.
|
|
78
|
+
cluster_node_limit: int = 50, # The maximum number of nodes in a cluster.
|
|
78
79
|
) -> CompiledDecoder:
|
|
79
80
|
solver, fault_masks = detector_error_model_to_mwpf_solver_and_fault_masks(
|
|
80
|
-
dem,
|
|
81
|
+
dem,
|
|
82
|
+
decoder_cls=decoder_cls,
|
|
83
|
+
cluster_node_limit=cluster_node_limit,
|
|
81
84
|
)
|
|
82
85
|
return MwpfCompiledDecoder(
|
|
83
|
-
solver,
|
|
86
|
+
solver,
|
|
87
|
+
fault_masks,
|
|
88
|
+
dem.num_detectors,
|
|
89
|
+
dem.num_observables,
|
|
84
90
|
)
|
|
85
91
|
|
|
86
92
|
def decode_via_files(
|
|
@@ -220,26 +226,31 @@ def iter_flatten_model(
|
|
|
220
226
|
def deduplicate_hyperedges(
|
|
221
227
|
hyperedges: List[Tuple[List[int], float, int]]
|
|
222
228
|
) -> List[Tuple[List[int], float, int]]:
|
|
223
|
-
indices: dict[frozenset[int], int] = dict()
|
|
229
|
+
indices: dict[frozenset[int], Tuple[int, float]] = dict()
|
|
224
230
|
result: List[Tuple[List[int], float, int]] = []
|
|
225
231
|
for dets, weight, mask in hyperedges:
|
|
226
232
|
dets_set = frozenset(dets)
|
|
227
233
|
if dets_set in indices:
|
|
228
|
-
idx = indices[dets_set]
|
|
234
|
+
idx, min_weight = indices[dets_set]
|
|
229
235
|
p1 = 1 / (1 + math.exp(weight))
|
|
230
236
|
p2 = 1 / (1 + math.exp(result[idx][1]))
|
|
231
237
|
p = p1 * (1 - p2) + p2 * (1 - p1)
|
|
232
|
-
#
|
|
233
|
-
|
|
234
|
-
|
|
238
|
+
# choosing the mask from the most likely error
|
|
239
|
+
new_mask = result[idx][2]
|
|
240
|
+
if weight < min_weight:
|
|
241
|
+
indices[dets_set] = (idx, weight)
|
|
242
|
+
new_mask = mask
|
|
243
|
+
result[idx] = (dets, math.log((1 - p) / p), new_mask)
|
|
235
244
|
else:
|
|
236
|
-
indices[dets_set] = len(result)
|
|
245
|
+
indices[dets_set] = (len(result), weight)
|
|
237
246
|
result.append((dets, weight, mask))
|
|
238
247
|
return result
|
|
239
248
|
|
|
240
249
|
|
|
241
250
|
def detector_error_model_to_mwpf_solver_and_fault_masks(
|
|
242
|
-
model: stim.DetectorErrorModel,
|
|
251
|
+
model: stim.DetectorErrorModel,
|
|
252
|
+
decoder_cls: Any = None,
|
|
253
|
+
cluster_node_limit: int = 50,
|
|
243
254
|
) -> Tuple[Optional["mwpf.SolverSerialJointSingleHair"], np.ndarray]:
|
|
244
255
|
"""Convert a stim error model into a NetworkX graph."""
|
|
245
256
|
|
|
@@ -261,7 +272,7 @@ def detector_error_model_to_mwpf_solver_and_fault_masks(
|
|
|
261
272
|
# Accept it and keep going, though of course decoding will probably perform terribly.
|
|
262
273
|
return
|
|
263
274
|
if p > 0.5:
|
|
264
|
-
# mwpf doesn't support negative edge weights.
|
|
275
|
+
# mwpf doesn't support negative edge weights (yet, will be supported in the next version).
|
|
265
276
|
# approximate them as weight 0.
|
|
266
277
|
p = 0.5
|
|
267
278
|
weight = math.log((1 - p) / p)
|
|
@@ -280,7 +291,7 @@ def detector_error_model_to_mwpf_solver_and_fault_masks(
|
|
|
280
291
|
# mwpf package panic on duplicate edges, thus we need to handle them here
|
|
281
292
|
hyperedges = deduplicate_hyperedges(hyperedges)
|
|
282
293
|
|
|
283
|
-
# fix the input by connecting an edge to all isolated vertices
|
|
294
|
+
# fix the input by connecting an edge to all isolated vertices; will be supported in the next version
|
|
284
295
|
for idx in range(num_detectors):
|
|
285
296
|
if not is_detector_connected[idx]:
|
|
286
297
|
hyperedges.append(([idx], 0, 0))
|
|
@@ -301,7 +312,7 @@ def detector_error_model_to_mwpf_solver_and_fault_masks(
|
|
|
301
312
|
decoder_cls = mwpf.SolverSerialJointSingleHair
|
|
302
313
|
return (
|
|
303
314
|
(
|
|
304
|
-
decoder_cls(initializer)
|
|
315
|
+
decoder_cls(initializer, config={"cluster_node_limit": cluster_node_limit})
|
|
305
316
|
if num_detectors > 0 and len(rescaled_edges) > 0
|
|
306
317
|
else None
|
|
307
318
|
),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_collection_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_collection/_mux_sampler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_collect.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_collect_test.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_combine.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_combine_test.py
RENAMED
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_plot_test.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_predict.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_command/_main_predict_test.py
RENAMED
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_anon_task_stats.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_anon_task_stats_test.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_collection_options.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_collection_options_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_existing_data_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_data/_task_stats_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_pymatching.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_test.py
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_decoding/_decoding_vacuous.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter/_probability_util_test.py
RENAMED
|
File without changes
|
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{sinter-1.15.dev1730500841 → sinter-1.15.dev1733301548}/src/sinter.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|