v1.11.0 - Dancing Diagrams
Major changes:
- Added prototype
interactivate
diagrams for circuits. See the crumble README.
Breaking changes:
stim.DetectorErrorModel.shortest_graphlike_error
now defaultsignore_ungraphlike_errors
to True instead of False. Also, it now actually ignores all ungraphlike errors when set to True.
General additions and improvements:
- Added a new gate:
CXSWAP
(andSWAPCX
). This gate is KAK-equivalent to the ISWAP, but avoids mixing X and Z terms, which is useful when creating/debugging circuits intended to use ISWAP-like interactions. - Added a new diagram type
"interactive"
. Interactive diagrams are a HTML pages containing "crumble". - Added
stim.Circuit.inverse
- Added
stim.Circuit.with_inlined_feedback
- Added
stim.TableauSimulator.measure_pauli_string
- Gave the project a logo
- Simplified the names of diagram types (the old names still work but are no longer listed in documentation)
- Added
separate_observables=False
argument tostim.read_shot_data_file
- Added
unsigned=False
argument tostim.PauliString.from_unitary_matrix
- Added
stim.Tableau.x_sign
,stim.Tableau.y_sign
,stim.Tableau.z_sign
helper methods - Added
stim.TableauSimulator.depolarize1
,stim.TableauSimulator.depolarize2
,stim.TableauSimulator.x_error
,stim.TableauSimulator.y_error
,stim.TableauSimulator.z_error
- Added a
--ran_without_feedback
command line option tostim m2d
- Added
stim.PauliString.before
,stim.PauliString.after
Diagram improvements:
- Detector slice diagrams now use colors that are more color-blind friendly
- Added new diagram type
detslice-with-ops-svg
which overlays operations over the detector slice diagram - The
type
argument for.diagram
methods is no longer keyword-only - The
tick
argument for.diagram
methods can now be set to arange(start, end)
, producing a diagram containing each tick in the range as a sub-diagram - Detector slice diagrams now prefer shapes that have mirror symmetry, when choosing how to draw a stabilizer
- Detector slice diagrams now switch to using bezier curves when stroking between colinear points, to disambiguate which points are vertices and which points are skipped
- Increased the initial size used for the 3d model viewer and the svg viewer
- Improved the initial camera position used by the 3d model viewer to better frame the model
- Increased the font sizes used for gates in SVG diagrams, so they better fill their boxes
- Detector slice diagrams can now be filtered by
stim.DemTarget
(to slice observables in addition to detectors, include observable targets in the filter) - SVG diagrams now group elements, making them easier to touch up afterwards in image editors
Sinter improvements:
- Added
--postselected_detectors_predicate
tosinter collect
, generalizing--postselect_detectors_with_non_zero_4th_coord
- It's now possible to specify custom decoders
- Added
sinter.Decoder
class - Added a
custom_decoders
arg tosinter.collect
,sinter.iter_ollect
,sinter.predict_on_disk
,sinter.predict_observables_bit_packed
- Added a
--customer_decoders_module_function
command line argument tosinter collect
- Added
sinter predict
can now be given--metadata_func auto
instead of--metadata_func "sinter.comma_separated_key_values(path)"
- Added command line arguments to
sinter plot
:--y_func
--y_axis
- The expression given to
--plot_args_func
now has access to several more values:stat
,stats
,decoder
, metadata, and
strong_id`. - The
plot_args_func
argument ofsinter.plot
methods can now take a third argument,stats
, the list of stats in the curve
- Discard rate diagrams now include more Y axis indicators
sinter combine
now sorts its output- Added
--order preserve|metadata|error
option tosinter combine
Bug fixes:
- Due to a mysterious crash in collab, the AVX build has been temporarily disabled.
- Fixed generating degenerate diagrams when circuits had no coordinate data
- Fixed
stimcirq.StimSampler
not working on cirq circuits containing repeated keys - Fixed
stimcirq.SweepPauli._resolve_parameters_
failing to resolve strings, and not specifying_parameter_names_
- Fixed a typo in
stim.PauliString
's documentation. The allowable signs are [1, -1, 1j, -1j]. - Fixed a quadratic overhead caused by iteratively growing the tableau simulator's state
- Fixed sinter crashing on shutdown on windows, due to not waiting for workers to die before deleting their files
- Fixed sinter ignoring error codes returned from pymatching.
- Fixed
stim.Tableau.from_stabilizers
not verifying that the given stabilizers actually commute - Related: pymatching fixed a bug where it was linking an older version of stim that opened binary files in text mode, causing sinter to fail when using pymatching on windows.