pub struct ExplainedError { /* private fields */ }Expand description
Describes a single error mechanism from a Stim circuit, pairing the detectors and observables it affects with the location(s) where it occurs in the circuit.
When you call methods like
Circuit::shortest_graphlike_error,
Stim returns a list of ExplainedError values. Each one represents
one fault mechanism that was needed to produce the logical error,
containing:
dem_error_terms– the detectors and logical observables flipped by this error, each annotated with coordinate data (a list ofDemTargetWithCoords).circuit_error_locations– the physical location(s) in the circuit where this error can occur, asCircuitErrorLocationvalues.
If circuit_error_locations is empty, it means there was a DEM
error that was decomposed into parts where one of the parts is
impossible to produce from a single circuit error on its own.
If the list contains a single entry, it may be because only a single representative circuit error was requested (as opposed to all possible errors that produce the same syndrome).
§Examples
use stim::{
CircuitErrorLocation, CircuitErrorLocationStackFrame,
CircuitTargetsInsideInstruction, DemTargetWithCoords,
ExplainedError, GateTarget, GateTargetWithCoords,
};
let explained = ExplainedError::new(
vec![DemTargetWithCoords::new(
stim::DemTarget::logical_observable_id(0).expect("valid id"),
vec![],
)],
vec![CircuitErrorLocation::new(
1,
vec![GateTargetWithCoords::new(
stim::GateTarget::y(0u32, false).expect("valid target"),
vec![],
)],
None,
CircuitTargetsInsideInstruction::new(
"Y_ERROR", "", vec![0.125], 0, 1,
vec![GateTargetWithCoords::new(GateTarget::from(0u32), vec![])],
),
vec![CircuitErrorLocationStackFrame::new(2, 0, 0)],
"",
)],
);
assert_eq!(explained.dem_error_terms().len(), 1);
assert_eq!(explained.circuit_error_locations().len(), 1);Implementations§
Source§impl ExplainedError
impl ExplainedError
Sourcepub fn new(
dem_error_terms: impl IntoIterator<Item = DemTargetWithCoords>,
circuit_error_locations: impl IntoIterator<Item = CircuitErrorLocation>,
) -> Self
pub fn new( dem_error_terms: impl IntoIterator<Item = DemTargetWithCoords>, circuit_error_locations: impl IntoIterator<Item = CircuitErrorLocation>, ) -> Self
Creates a new ExplainedError from its constituent parts.
§Arguments
dem_error_terms– the detectors and logical observables flipped by this error mechanism, each paired with coordinate data.circuit_error_locations– the physical circuit location(s) where this error can occur. May be empty if the error was decomposed into parts that cannot individually be produced by a single circuit error.
Sourcepub fn dem_error_terms(&self) -> &[DemTargetWithCoords]
pub fn dem_error_terms(&self) -> &[DemTargetWithCoords]
Returns the detectors and observables flipped by this error mechanism.
Each element is a DemTargetWithCoords
pairing a detector (D5) or logical observable (L0) with its
coordinate data from DETECTOR or other coordinate-assigning
instructions.
Sourcepub fn circuit_error_locations(&self) -> &[CircuitErrorLocation]
pub fn circuit_error_locations(&self) -> &[CircuitErrorLocation]
Returns the locations of circuit errors that produce the symptoms
described by dem_error_terms.
Each element is a CircuitErrorLocation that identifies a
specific instruction, target range, and nesting position within
the circuit.
If this slice is empty, it means the DEM error was decomposed into parts where one part is impossible to produce from a single circuit error on its own. If it contains a single entry, it may be because only a single representative was requested.
Trait Implementations§
Source§impl Clone for ExplainedError
impl Clone for ExplainedError
Source§fn clone(&self) -> ExplainedError
fn clone(&self) -> ExplainedError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more