v1.11.0 - Dancing Diagrams
Major changes:
- Added prototype
interactivatediagrams for circuits. See the crumble README.
Breaking changes:
stim.DetectorErrorModel.shortest_graphlike_errornow defaultsignore_ungraphlike_errorsto 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=Falseargument tostim.read_shot_data_file - Added
unsigned=Falseargument tostim.PauliString.from_unitary_matrix - Added
stim.Tableau.x_sign,stim.Tableau.y_sign,stim.Tableau.z_signhelper methods - Added
stim.TableauSimulator.depolarize1,stim.TableauSimulator.depolarize2,stim.TableauSimulator.x_error,stim.TableauSimulator.y_error,stim.TableauSimulator.z_error - Added a
--ran_without_feedbackcommand 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-svgwhich overlays operations over the detector slice diagram - The
typeargument for.diagrammethods is no longer keyword-only - The
tickargument for.diagrammethods 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_predicatetosinter collect, generalizing--postselect_detectors_with_non_zero_4th_coord - It's now possible to specify custom decoders
- Added
sinter.Decoderclass - Added a
custom_decodersarg tosinter.collect,sinter.iter_ollect,sinter.predict_on_disk,sinter.predict_observables_bit_packed - Added a
--customer_decoders_module_functioncommand line argument tosinter collect
- Added
sinter predictcan now be given--metadata_func autoinstead 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_funcnow has access to several more values:stat,stats,decoder, metadata, andstrong_id`. - The
plot_args_funcargument ofsinter.plotmethods can now take a third argument,stats, the list of stats in the curve
- Discard rate diagrams now include more Y axis indicators
sinter combinenow sorts its output- Added
--order preserve|metadata|erroroption 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.StimSamplernot 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_stabilizersnot 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.