Skip to content

v1.15.0 - Terror of the Tag

Latest
Compare
Choose a tag to compare
@Strilanc Strilanc released this 07 May 06:20
· 13 commits to main since this release
42e0b9e

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])
  • 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 type stim.PauliString (for gates like MPP)
  • stim.Circuit.append can now be given a stim.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 normalized
  • stim.DetectorErrorModel.append can now be given a stim.DetectorErrorModel
  • Added wheel packages for sinter and stimcirq
  • Added python 3.13 builds for linux and osx
  • The sinter.Decoder base class now auto-implements decode_via_files if a child implements compile_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 ignoring SPP and SPP_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:

@mhucka
@caryan
@m-mcewen
@yuewuo
@drqec