Flagship changes:
- Added
stim.Circuit.flow_generators
for finding the stabilizer flows of a circuit. - Added
stim.Circuit.time_reversed_for_flows
for reversing circuits containing resets and measurements. - Added
sinter.Sampler
for 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.sample
gainedobs_out=None
anddets_out=None
argumentsstim.Circuit.to_crumble_url
gainedskip_detectors=False
andmark=None
argumentsstim.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.diagram
gained arows=None
argument, for controlling layout- Added "tick #" labels to timeslice diagrams
- Improved
stim.Circuit.detector_error_model
error 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
-html
variants 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 collect
now distributes workers evenly over tasks, instead of focusing on one task at a timesinter collect
now never switches a worker to a new task until their current task is done- Added
sinter plot --point_label_func
command line argument - Added
sinter plot --dpi
for increasing resolution of plots - Expanded
sinter plot --group_func
to 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 --processes
now defaults to"auto"
(number of CPUs) if not specifiedsinter plot --show
is now implied when--out
isn't specified- Added
sinter plot --preprocess_stats_func
for 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_1
permuting X/Y/Z/ error channels 😱😱😱 - Fixed various internal methods not correctly propagating Pauli terms through
MXX
,MYY
, andMZZ
instructions that operated on the same qubit more than once 😱 - Fixed
stim.Circuit.with_inlined_feedback
incorrectly ordering operations fused by the removal of a feedback operation - Fixed
stimcirq.cirq_circuit_to_stim_circuit
not addingTICK
s from multi-momentCircuitOperation
blocks - Fixed
MPAD
targets counting towardsstim.Circuit.num_qubits
- Fixed
stim.PauliString.{before,after}
not supportingSPP
andSPP_DAG
- Fixed
stim.PauliString.before
refusing to cross reset gates - Fixed sinter failing to create plots for data points with extremely large shot counts
- Fixed
stim.Tableau.from_stabilizers
error 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)