Skip to content

v1.12.0 - Foreseen Flips

Compare
Choose a tag to compare
@Strilanc Strilanc released this 22 Aug 23:39
· 112 commits to main since this release
1179fc3

Flagship changes:

  • Added support for heralded erasures
  • Added stim.FlipSimulator for tracking batches of Pauli flips through circuits
  • Doubled sinter's sample throughput on high core count machines

Notable changes to stim:

  • Added gates: HERALDED_ERASE, HERALDED_PAULI_CHANNEL_1, MXX, MYY, MZZ, MPAD
  • Added top-level method stim.gate_data
  • Added class stim.GateData
    • Properties: aliases, is_noisy_gate, is_reset, is_single_qubit_gate, is_two_qubit_gate, is_unitary, name, num_parens_arguments_range, produces_measurements, tableau, takes_measurement_record_targets, takes_pauli_targets, unitary_matrix
  • Added class stim.FlipSimulator
    • Methods: __init__, do, get_detector_flips, get_measurement_flips, get_observable_flips, peek_pauli_flips, set_pauli_flip
    • Properties: batch_size, num_detectors, num_measurements, num_observables, num_qubits
  • Added stim.Circuit.count_determined_measurements
  • Added stim.Circuit.num_ticks
  • Added stim.Circuit.reference_sample
  • Added stim.CircuitRepeatBlock.name (for duck typing vs stim.CircuitInstruction)
  • Added stim.DemRepeatBlock.type (for duck typing vs stim.DemInstruction)
  • Added stim.GateTarget.pauli_type
  • Added stim.GateTarget.qubit_value
  • Added stim.TableauSimulator.postselect_observable
  • Added optional reference_sample argument to stim.Circuit.compile_sampler
  • Made stim.PauliString.{after,before} much less picky
  • Improved performance of stim.CompiledDetectorSampler by ~30% under repetitive usage by caching more internal objects
  • Circuit-to-dem conversion now adds the probabilities of indistinguishable cases within a disjoint error channel, instead of Bernoulli-adding them
  • Added the stim convert command for converting between shot file formats

Notable changes to sinter:

  • sinter now has an API reference
  • sinter now has a command line reference
  • Added sinter.Decoder.compile_decoder_for_dem method for custom decoders to implement
    • Improves performance ~2x on high core count machines by avoiding disk usage
  • Added a shorthand to sinter plot: use m.key instead of metadata.get("key", None) in *_func arguments
  • Added square root scales to sinter plot (example: --xaxis "[sqrt]qubit count")
  • Added an optional custom_counts column to sinter's CSV format
  • Added auto option to use all processes (sinter collect --processes=auto)
  • Added sinter plot --line_fits
  • Added sinter plot --xmax
  • Added sinter plot --xmin
  • Added sinter plot --failure_values_func
  • Added sinter plot --subtitle with {common} macro
  • Added sinter collect --count_detection_events
  • Added sinter collect --count_observable_error_combos
  • Added sinter collect --allowed_cpu_affinity_ids
  • Added sinter combine --strip_custom_counts
  • Added sinter plot --custom_error_count_keys
  • Added sinter.log_binomial
  • Added sinter.log_factorial
  • Added sinter.read_stats_from_csv_files
  • Added sinter.{AnonTaskStats,TaskStats}.custom_counts
  • Added sinter.Task.circuit_path field for specifying circuits by filepath
  • Added arguments count_observable_error_combos=False and count_detection_events=False to sinter.{iter_collect,collect}

Notable changes to crumble:

  • Added support for MPP operations
  • Added example circuits

Notable bug fixes

  • Fixed stimcirq.__version__ and sinter.__version__ not existing
  • Fixed stimcirq.cirq_circuit_to_stim_circuit choking on tagged operations
  • Fixed stimcirq.cirq_circuit_to_stim_circuit not putting repeat blocks in their own moment
  • Fixed triggering numpy bool8 deprecation warnings
  • Fixed documentation not mentioning how to do pauli feedback
  • Fixed a failure in stim m2d related to appending observables crossing a simd boundary when --obs_out was used
  • Fixed some corner cases where sinter.better_sorted_str_terms produced incomparable values
  • Fixed cmake install doing nothing
  • Fixed some sinter plot crashes on degenerate data
  • Fixed several sinter classes not having evaluatable reprs
  • Fixed stim.Tableau.inverse returning invalid results when the tableau's representation included size padding
  • Fixed HTML diagrams not being isolated from each other in notebooks (wrapped them all in iframes)
  • Fixed stimzx example project discarding sign information of external stabilizers
  • Fixed stim.Circuit.shortest_graphlike_error and friends not working if there were more than 64 observables

Special thanks to this release's contributors:

@AlexBourassa
@fdmalone
@markturner289
@oon3m0oo
@viathor
@justinledford