v1.12.0 - Foreseen Flips
Flagship changes:
- Added support for heralded erasures
- Added
stim.FlipSimulatorfor 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_sampleargument tostim.Circuit.compile_sampler - Made
stim.PauliString.{after,before}much less picky - Improved performance of
stim.CompiledDetectorSamplerby ~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 convertcommand 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_demmethod for custom decoders to implement- Improves performance ~2x on high core count machines by avoiding disk usage
- Added a shorthand to
sinter plot: usem.keyinstead ofmetadata.get("key", None)in*_funcarguments - Added square root scales to
sinter plot(example:--xaxis "[sqrt]qubit count") - Added an optional
custom_countscolumn to sinter's CSV format - Added
autooption 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 --subtitlewith{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_pathfield for specifying circuits by filepath - Added arguments
count_observable_error_combos=Falseandcount_detection_events=Falsetosinter.{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_circuitchoking on tagged operations - Fixed
stimcirq.cirq_circuit_to_stim_circuitnot putting repeat blocks in their own moment - Fixed triggering numpy
bool8deprecation warnings - Fixed documentation not mentioning how to do pauli feedback
- Fixed a failure in
stim m2drelated to appending observables crossing a simd boundary when--obs_outwas used - Fixed some corner cases where
sinter.better_sorted_str_termsproduced incomparable values - Fixed
cmake installdoing nothing - Fixed some
sinter plotcrashes on degenerate data - Fixed several sinter classes not having evaluatable reprs
- Fixed
stim.Tableau.inversereturning 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
stimzxexample project discarding sign information of external stabilizers - Fixed
stim.Circuit.shortest_graphlike_errorand friends not working if there were more than 64 observables
Special thanks to this release's contributors:
@AlexBourassa
@fdmalone
@markturner289
@oon3m0oo
@viathor
@justinledford