v1.14.0 - More Flows
Flagship changes:
- Added
stim.Circuit.flow_generatorsfor finding the stabilizer flows of a circuit. - Added
stim.Circuit.time_reversed_for_flowsfor reversing circuits containing resets and measurements. - Added
sinter.Samplerfor customizing sinter to more general Monte Carlo sampling tasks.
Notable changes:
- Added
stim.Circuit.flow_generators - Added
stim.Circuit.insert - Added
stim.Circuit.pop - Added
stim.Circuit.time_reversed_for_flows - Added
stim.Circuit.to_crumble_url - Added
stim.Circuit.to_quirk_url - Added
stim.CircuitInstruction.num_measurements - Added
stim.CircuitInstruction.target_groups - Added
stim.CircuitRepeatBlock.num_measurements - Added
stim.DemInstruction.target_groups - Added
stim.FlipSimulator.clear - Added
stim.FlipSimulator.copy - Added
stim.GateData.hadamard_conjugated - Added
stim.GateData.is_symmetric_gate stim.CompiledDetectorSampler.samplegainedobs_out=Noneanddets_out=Noneargumentsstim.Circuit.to_crumble_urlgainedskip_detectors=Falseandmark=Noneargumentsstim.CircuitInstruction.__init__gained the ability to parse single lines from a stim circuit filestim.DemInstruction.__init__gained the ability to parse single lines from a detector error model filestim.DemTarget.__init__gained the ability to parse targets from detector error mode files (e.g.stim.DemTarget("D2"))- In stim's gate data, the generalized inverse of
R{X,Y,Z}is nowM{X,Y,Z}instead ofMR{X,Y,Z} - Added support for viewing and editing detectors and observables in crumble
- Reduced the amount of copying during sampling, speeding up detector sampling by around 25%
- Began collecting papers with available stim circuits at doc/circuit_data_references.md
Notable changes to diagrams:
stim.Circuit.diagramgained arows=Noneargument, for controlling layout- Added "tick #" labels to timeslice diagrams
- Improved
stim.Circuit.detector_error_modelerror messages to suggest code for drawing a diagram of the problem - Match graph diagrams now highlight observable-flipping hyper errors (purple instead of blue)
- In match graph diagrams, nodes with observable-crossing boundary edges are now colored red instead of black
- The detector indicator in 3d match graph diagrams is not flat anymore, so it's easier to see from all angles
stim.Circuit.diagram("detslice")now draws a pink circle where bad detectors anticommute with dissipative operations, instead of raising an exception- Added
-htmlvariants of svg diagrams (e.g.circuit.diagram("detslice-html")- Outputs a little HTML viewer of the svg diagram, with a resizing tab, which works better in notebooks than a raw SVG
- detslice diagrams no longer raise an exception for circuits with anticommuting detectors. Instead, a diagram highlighting the anticommutation is returned.
- Improved the heuristics for using Bezier curves instead of straight lines
Notable changes to sinter:
- Added
sinter.Sampler - Added
sinter.CompiledSampler - Added named sinter sampler
perfectionist - Any sinter decoder can now indicate shots to discard, by adding an extra byte column to the returned observable data (0=keep, else=discard)
sinter collectnow distributes workers evenly over tasks, instead of focusing on one task at a timesinter collectnow never switches a worker to a new task until their current task is done- Added
sinter plot --point_label_funccommand line argument - Added
sinter plot --dpifor increasing resolution of plots - Expanded
sinter plot --group_functo take dictionary arguments- The
"color"key of the dictionary controls color groups - The
"linestyle"key of the dictionary controls linestyle groups - The
"marker"key of the dictionary controls marker groups - The
"label"key of the dictionary controls labels of curves in the legend - The
"sort"key of the dictionary controls order of curves in the legend
- The
sinter collect --processesnow defaults to"auto"(number of CPUs) if not specifiedsinter plot --showis now implied when--outisn't specified- Added
sinter plot --preprocess_stats_funcfor specifying a python expression to process stats before plotting - Added
sinter.TaskStats.with_edits - Added a safety check to
sinter.TaskStats.__add__, raising an exception if decoder/json_metadata disagree despite strong ids agreeing - Added supported decoder
"hypergraph_union_find" - Added supported decoder
"mw_parity_factor"
Notable bug fixes:
- Fixed
HERALDED_PAULI_CHANNEL_1permuting X/Y/Z/ error channels 😱😱😱 - Fixed various internal methods not correctly propagating Pauli terms through
MXX,MYY, andMZZinstructions that operated on the same qubit more than once 😱 - Fixed
stim.Circuit.with_inlined_feedbackincorrectly ordering operations fused by the removal of a feedback operation - Fixed
stimcirq.cirq_circuit_to_stim_circuitnot addingTICKs from multi-momentCircuitOperationblocks - Fixed
MPADtargets counting towardsstim.Circuit.num_qubits - Fixed
stim.PauliString.{before,after}not supportingSPPandSPP_DAG - Fixed
stim.PauliString.beforerefusing to cross reset gates - Fixed sinter failing to create plots for data points with extremely large shot counts
- Fixed
stim.Tableau.from_stabilizerserror messages claiming stabilizers were redundant when they actually anticommuted - Fixed incompatibility with numpy v2
- Fixed incompatibility with new version of scipy (the linear regression type moved)
Special thanks to this release contributors:
@aebrahimi
@inmzhang
@qec-pconner
@dougthor42
@nelimee
@mghibaudi
@folded
@AlexBourassa