sinter 1.13.dev1701045685__tar.gz → 1.13.dev1701144542__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.13.dev1701045685 → sinter-1.13.dev1701144542}/PKG-INFO +1 -1
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/setup.py +1 -1
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/__init__.py +1 -1
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_fusion_blossom.py +42 -4
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/PKG-INFO +1 -1
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/README.md +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/readme_example_plot.png +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/requirements.txt +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/setup.cfg +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_anon_task_stats.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_anon_task_stats_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_options.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_options_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_tracker_for_single_task.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_work_manager.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_csv_out.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_all_built_in_decoders.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_decoder_class.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_pymatching.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_vacuous.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_existing_data.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_existing_data_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_collect.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_collect_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_combine.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_combine_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_plot.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_plot_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_predict.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_main_predict_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_plotting.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_plotting_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_predict.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_predict_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_printer.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_probability_util.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_probability_util_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_task.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_task_stats.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_task_stats_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_task_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_worker.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_worker_test.py +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/SOURCES.txt +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/dependency_links.txt +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/entry_points.txt +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/requires.txt +0 -0
- {sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/top_level.txt +0 -0
{sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_fusion_blossom.py
RENAMED
|
@@ -1,19 +1,58 @@
|
|
|
1
1
|
import math
|
|
2
2
|
import pathlib
|
|
3
|
-
from typing import Callable, List, TYPE_CHECKING
|
|
4
|
-
from typing import Tuple
|
|
3
|
+
from typing import Callable, List, TYPE_CHECKING, Tuple
|
|
5
4
|
|
|
6
5
|
import numpy as np
|
|
7
6
|
import stim
|
|
8
7
|
|
|
9
|
-
from sinter._decoding_decoder_class import Decoder
|
|
8
|
+
from sinter._decoding_decoder_class import Decoder, CompiledDecoder
|
|
10
9
|
|
|
11
10
|
if TYPE_CHECKING:
|
|
12
11
|
import fusion_blossom
|
|
13
12
|
|
|
14
13
|
|
|
14
|
+
class FusionBlossomCompiledDecoder(CompiledDecoder):
|
|
15
|
+
def __init__(self, solver: 'fusion_blossom.SolverSerial', fault_masks: 'np.ndarray', num_dets: int, num_obs: int):
|
|
16
|
+
self.solver = solver
|
|
17
|
+
self.fault_masks = fault_masks
|
|
18
|
+
self.num_dets = num_dets
|
|
19
|
+
self.num_obs = num_obs
|
|
20
|
+
|
|
21
|
+
def decode_shots_bit_packed(
|
|
22
|
+
self,
|
|
23
|
+
*,
|
|
24
|
+
bit_packed_detection_event_data: 'np.ndarray',
|
|
25
|
+
) -> 'np.ndarray':
|
|
26
|
+
num_shots = bit_packed_detection_event_data.shape[0]
|
|
27
|
+
predictions = np.zeros(shape=(num_shots, self.num_obs), dtype=np.uint8)
|
|
28
|
+
import fusion_blossom
|
|
29
|
+
for shot in range(num_shots):
|
|
30
|
+
dets_sparse = np.flatnonzero(np.unpackbits(bit_packed_detection_event_data[shot], count=self.num_dets, bitorder='little'))
|
|
31
|
+
syndrome = fusion_blossom.SyndromePattern(syndrome_vertices=dets_sparse)
|
|
32
|
+
self.solver.solve(syndrome)
|
|
33
|
+
prediction = int(np.bitwise_xor.reduce(self.fault_masks[self.solver.subgraph()]))
|
|
34
|
+
predictions[shot] = np.packbits(prediction, bitorder='little')
|
|
35
|
+
self.solver.clear()
|
|
36
|
+
return predictions
|
|
37
|
+
|
|
38
|
+
|
|
15
39
|
class FusionBlossomDecoder(Decoder):
|
|
16
40
|
"""Use fusion blossom to predict observables from detection events."""
|
|
41
|
+
|
|
42
|
+
def compile_decoder_for_dem(self, *, dem: 'stim.DetectorErrorModel') -> CompiledDecoder:
|
|
43
|
+
try:
|
|
44
|
+
import fusion_blossom
|
|
45
|
+
except ImportError as ex:
|
|
46
|
+
raise ImportError(
|
|
47
|
+
"The decoder 'fusion_blossom' isn't installed\n"
|
|
48
|
+
"To fix this, install the python package 'fusion_blossom' into your environment.\n"
|
|
49
|
+
"For example, if you are using pip, run `pip install fusion_blossom`.\n"
|
|
50
|
+
) from ex
|
|
51
|
+
|
|
52
|
+
solver, fault_masks = detector_error_model_to_fusion_blossom_solver_and_fault_masks(dem)
|
|
53
|
+
return FusionBlossomCompiledDecoder(solver, fault_masks, dem.num_detectors, dem.num_observables)
|
|
54
|
+
|
|
55
|
+
|
|
17
56
|
def decode_via_files(self,
|
|
18
57
|
*,
|
|
19
58
|
num_shots: int,
|
|
@@ -36,7 +75,6 @@ class FusionBlossomDecoder(Decoder):
|
|
|
36
75
|
error_model = stim.DetectorErrorModel.from_file(dem_path)
|
|
37
76
|
solver, fault_masks = detector_error_model_to_fusion_blossom_solver_and_fault_masks(error_model)
|
|
38
77
|
num_det_bytes = math.ceil(num_dets / 8)
|
|
39
|
-
|
|
40
78
|
with open(dets_b8_in_path, 'rb') as dets_in_f:
|
|
41
79
|
with open(obs_predictions_b8_out_path, 'wb') as obs_out_f:
|
|
42
80
|
for _ in range(num_shots):
|
|
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.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_options_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_collection_work_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_decoding_decoder_class.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
|
|
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
|
|
File without changes
|
{sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter/_probability_util_test.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
|
{sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{sinter-1.13.dev1701045685 → sinter-1.13.dev1701144542}/src/sinter.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|