Flagship changes:
- Circuit and detector error model instructions can now be tagged with free-form text.
- Example use: note the desired hardware implementation of a two qubit gate (
CX[adiabatic] 0 1
) - Example use: note the subgraph of a detector (
DETECTOR[subgraph=X,color=red] rec[-1] rec[-2]
)
- Example use: note the desired hardware implementation of a two qubit gate (
OBSERVABLE_INCLUDE
can now be given Pauli targets, to artificially start/end correlation sheets.- Example use: describe an experiment verifying RX-then-MZ produces unbiased random results
- Example use: keep observables away from the arbitrary rotation in a magic state injection circuit
Notable changes:
- Added method
stim.Circuit.reference_detector_and_observable_signs
- Added method
stim.Circuit.solve_flow_measurements
- Added method
stim.Circuit.without_tags
- Added method
stim.CircuitErrorLocation.noise_tag
property - Added method
stim.DetectorErrorModel.without_tags
- Added method
stim.FlipSimulator.generate_bernoulli_samples
- Added method
stim.FlipSimulator.to_numpy
- Added method
stim.Flow.__mul__
- Added property
stim.CircuitInstruction.tag
- Added property
stim.CircuitRepeatBlock.tag
- Added property
stim.CircuitTargetsInsideInstruction.tag
- Added property
stim.CircuitRepeatBlock.tag
- Added property
stim.DemInstruction.tag
- Added property
stim.Flow.included_observables
- Added argument
stim.Flow.__init__(..., included_observables=None)
- Added argument
stim.Circuit.append(..., tag: str = "")
- Added argument
stim.DetectorErrorModel.append(..., tag: str = "")
stim.Circuit.append
now allows targets of typestim.PauliString
(for gates likeMPP
)stim.Circuit.append
can now be given astim.Circuit
- The stim circuit file format now allows specifying tags (e.g.
CX[custom_tag] 0 1
) - The stim detector error model format now allows specifying tags (e.g.
error[custom_tag](0.1) D0 L0
) stim.Tableau.from_state_vector
no longer requires its input to be normalizedstim.DetectorErrorModel.append
can now be given astim.DetectorErrorModel
- Added wheel packages for sinter and stimcirq
- Added python 3.13 builds for linux and osx
- The
sinter.Decoder
base class now auto-implementsdecode_via_files
if a child implementscompile_decoder_for_dem
- Gates documentation now includes MBQC decompositions
New gates:
- Added
C_NXYZ
gate - Added
C_XNYZ
gate - Added
C_XYNZ
gate - Added
C_NZYX
gate - Added
C_ZNYX
gate - Added
C_ZYNX
gate - Added
H_NXY
gate - Added
H_NXZ
gate - Added
H_NYZ
gate (the final single qubit Clifford needed to have all 24!) - Added
II
gate - Added
I_ERROR
gate - Added
II_ERROR
gate
Bug fixes:
- Fixed
stim.Circuit.to_tableau
ignoringSPP
andSPP_DAG
- Fixed stimcirq failing to round trip circuits using MR (such as stim's example circuits)
- Fixed
stim.Circuit.detecting_regions
not raising an exception for anticommutations at the start of the circuit - Fixed
stim.Circuit.diagram("detslice")
not showing anticommutations at the start of the circuit - Fixed various
stim.FlipSimulator
query methods refusing to accept negative indices - Fixed
stim.Tableau.iter_all(0)
segfaulting - Fixed
stim.Flow.__init__
not xor-sorting its measurements to make them unique - Fixed sinter's
max_batch_size
configuration option being ignored
Special thanks to this release's contributors: