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_INCLUDEcan 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_tagproperty - 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.appendnow allows targets of typestim.PauliString(for gates likeMPP)stim.Circuit.appendcan 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_vectorno longer requires its input to be normalizedstim.DetectorErrorModel.appendcan now be given astim.DetectorErrorModel- Added wheel packages for sinter and stimcirq
- Added python 3.13 builds for linux and osx
- The
sinter.Decoderbase class now auto-implementsdecode_via_filesif a child implementscompile_decoder_for_dem - Gates documentation now includes MBQC decompositions
New gates:
- Added
C_NXYZgate - Added
C_XNYZgate - Added
C_XYNZgate - Added
C_NZYXgate - Added
C_ZNYXgate - Added
C_ZYNXgate - Added
H_NXYgate - Added
H_NXZgate - Added
H_NYZgate (the final single qubit Clifford needed to have all 24!) - Added
IIgate - Added
I_ERRORgate - Added
II_ERRORgate
Bug fixes:
- Fixed
stim.Circuit.to_tableauignoringSPPandSPP_DAG - Fixed stimcirq failing to round trip circuits using MR (such as stim's example circuits)
- Fixed
stim.Circuit.detecting_regionsnot 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.FlipSimulatorquery 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_sizeconfiguration option being ignored
Special thanks to this release's contributors: