v1.12.0 - Foreseen Flips
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
- Properties:
- 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
- Methods:
- Added
stim.Circuit.count_determined_measurements
- Added
stim.Circuit.num_ticks
- Added
stim.Circuit.reference_sample
- Added
stim.CircuitRepeatBlock.name
(for duck typing vsstim.CircuitInstruction
) - Added
stim.DemRepeatBlock.type
(for duck typing vsstim.DemInstruction
) - Added
stim.GateTarget.pauli_type
- Added
stim.GateTarget.qubit_value
- Added
stim.TableauSimulator.postselect_observable
- Added optional
reference_sample
argument tostim.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
: usem.key
instead ofmetadata.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
andcount_detection_events=False
tosinter.{iter_collect,collect}
Notable changes to crumble:
- Added support for MPP operations
- Added example circuits
Notable bug fixes
- Fixed
stimcirq.__version__
andsinter.__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