sinter 1.13.dev1700958181__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.

Files changed (53) hide show
  1. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/PKG-INFO +5 -1
  2. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/setup.py +1 -1
  3. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/__init__.py +1 -1
  4. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding_fusion_blossom.py +42 -4
  5. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter.egg-info/PKG-INFO +5 -1
  6. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/README.md +0 -0
  7. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/readme_example_plot.png +0 -0
  8. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/requirements.txt +0 -0
  9. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/setup.cfg +0 -0
  10. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_anon_task_stats.py +0 -0
  11. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_anon_task_stats_test.py +0 -0
  12. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_collection.py +0 -0
  13. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_collection_options.py +0 -0
  14. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_collection_options_test.py +0 -0
  15. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_collection_test.py +0 -0
  16. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_collection_tracker_for_single_task.py +0 -0
  17. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_collection_work_manager.py +0 -0
  18. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_csv_out.py +0 -0
  19. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding.py +0 -0
  20. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding_all_built_in_decoders.py +0 -0
  21. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding_decoder_class.py +0 -0
  22. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding_pymatching.py +0 -0
  23. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding_test.py +0 -0
  24. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_decoding_vacuous.py +0 -0
  25. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_existing_data.py +0 -0
  26. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_existing_data_test.py +0 -0
  27. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main.py +0 -0
  28. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_collect.py +0 -0
  29. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_collect_test.py +0 -0
  30. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_combine.py +0 -0
  31. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_combine_test.py +0 -0
  32. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_plot.py +0 -0
  33. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_plot_test.py +0 -0
  34. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_predict.py +0 -0
  35. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_main_predict_test.py +0 -0
  36. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_plotting.py +0 -0
  37. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_plotting_test.py +0 -0
  38. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_predict.py +0 -0
  39. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_predict_test.py +0 -0
  40. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_printer.py +0 -0
  41. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_probability_util.py +0 -0
  42. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_probability_util_test.py +0 -0
  43. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_task.py +0 -0
  44. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_task_stats.py +0 -0
  45. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_task_stats_test.py +0 -0
  46. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_task_test.py +0 -0
  47. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_worker.py +0 -0
  48. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter/_worker_test.py +0 -0
  49. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter.egg-info/SOURCES.txt +0 -0
  50. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter.egg-info/dependency_links.txt +0 -0
  51. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter.egg-info/entry_points.txt +0 -0
  52. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter.egg-info/requires.txt +0 -0
  53. {sinter-1.13.dev1700958181 → sinter-1.13.dev1701144542}/src/sinter.egg-info/top_level.txt +0 -0
@@ -1,12 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sinter
3
- Version: 1.13.dev1700958181
3
+ Version: 1.13.dev1701144542
4
4
  Summary: Samples stim circuits and decodes them using pymatching.
5
5
  Author: Craig Gidney
6
6
  Author-email: craig.gidney@gmail.com
7
7
  License: Apache 2
8
8
  Requires-Python: >=3.7.0
9
9
  Description-Content-Type: text/markdown
10
+ Requires-Dist: matplotlib~=3.5
11
+ Requires-Dist: numpy~=1.22
12
+ Requires-Dist: stim~=1.9
13
+ Requires-Dist: scipy~=1.9
10
14
 
11
15
  # sinter: fast QEC sampling
12
16
 
@@ -19,7 +19,7 @@ with open('README.md', encoding='UTF-8') as f:
19
19
  with open('requirements.txt', encoding='UTF-8') as f:
20
20
  requirements = f.read().splitlines()
21
21
 
22
- __version__ = '1.13.dev1700958181'
22
+ __version__ = '1.13.dev1701144542'
23
23
 
24
24
  setup(
25
25
  name='sinter',
@@ -1,4 +1,4 @@
1
- __version__ = '1.13.dev1700958181'
1
+ __version__ = '1.13.dev1701144542'
2
2
 
3
3
  from sinter._anon_task_stats import (
4
4
  AnonTaskStats,
@@ -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):
@@ -1,12 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sinter
3
- Version: 1.13.dev1700958181
3
+ Version: 1.13.dev1701144542
4
4
  Summary: Samples stim circuits and decodes them using pymatching.
5
5
  Author: Craig Gidney
6
6
  Author-email: craig.gidney@gmail.com
7
7
  License: Apache 2
8
8
  Requires-Python: >=3.7.0
9
9
  Description-Content-Type: text/markdown
10
+ Requires-Dist: matplotlib~=3.5
11
+ Requires-Dist: numpy~=1.22
12
+ Requires-Dist: stim~=1.9
13
+ Requires-Dist: scipy~=1.9
10
14
 
11
15
  # sinter: fast QEC sampling
12
16