Skip to content

v1.11.0 - Dancing Diagrams

Compare
Choose a tag to compare
@Strilanc Strilanc released this 05 Feb 03:56
· 173 commits to main since this release
bcad72c

Major changes:

Breaking changes:

  • stim.DetectorErrorModel.shortest_graphlike_error now defaults ignore_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 (and SWAPCX). 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 to stim.read_shot_data_file
  • Added unsigned=False argument to stim.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 to stim 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 a range(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 to sinter 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 to sinter.collect, sinter.iter_ollect, sinter.predict_on_disk, sinter.predict_observables_bit_packed
    • Added a --customer_decoders_module_function command line argument to sinter collect
  • 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 of sinter.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 to sinter 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.