Skip to main content

DetectorErrorModel

Struct DetectorErrorModel 

Source
pub struct DetectorErrorModel { /* private fields */ }
Expand description

Detector error model: independent error mechanisms over a program’s detectors and observables.

Derived by QecProgram::detector_error_model. Mechanisms are ordered by the program position of the noise annotation that first produced each symptom. Detector coordinates are carried verbatim from the program’s detector ops, one entry per detector, empty when the op carried none.

Implementations§

Source§

impl DetectorErrorModel

Source

pub fn mechanisms(&self) -> &[ErrorMechanism]

Source

pub fn num_mechanisms(&self) -> usize

Source

pub fn num_detectors(&self) -> usize

Source

pub fn num_observables(&self) -> usize

Source

pub fn detector_coords(&self) -> &[Vec<f64>]

Coordinates per detector, in detector order. Empty for detectors whose op carried no coordinates.

Source

pub fn decompose_graphlike(&self) -> Result<DetectorErrorModel>

Decompose hypergraph mechanisms into graphlike components.

Returns a model in which every mechanism flips at most two detectors. A mechanism with more is replaced by existing graphlike mechanisms whose non-empty detector sets partition its detectors and whose observable XOR matches; its probability composes into every component as p = p1(1-p2) + p2(1-p1). Cross-component correlations are lost; single-detector marginals are unchanged. Deterministic: retained mechanisms keep their order, the first cover in mechanism order wins.

§Errors

A hypergraph mechanism with no cover; the error names its symptom.

Source

pub fn to_text(&self) -> String

Render the model in the common detector error model text format.

One error(p) D.. L.. line per mechanism in mechanism order, then one detector line per detector (with its coordinates when present), then one logical_observable line per observable slot. The grammar is documented in docs/architecture/qec-programs.md.

Trait Implementations§

Source§

impl Clone for DetectorErrorModel

Source§

fn clone(&self) -> DetectorErrorModel

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DetectorErrorModel

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for DetectorErrorModel

Source§

fn eq(&self, other: &DetectorErrorModel) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for DetectorErrorModel

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V