pub struct GraphicalSeparation<'a, G, D>where
G: BaseGraph<Direction = D>,{ /* private fields */ }
Expand description
Graphical independence struct
Implementations§
Source§impl<'a, G, D> GraphicalSeparation<'a, G, D>where
G: BaseGraph<Direction = D>,
impl<'a, G, D> GraphicalSeparation<'a, G, D>where
G: BaseGraph<Direction = D>,
Sourcepub const fn new(g: &'a G) -> Self
pub const fn new(g: &'a G) -> Self
Build a new graphical independence struct.
§Panics
If $\mathbf{X}$, $\mathbf{Y}$ and $\mathbf{Z}$ are not disjoint subsets of $\mathbf{V}$.
§Examples
use causal_hub::prelude::*;
// Build a new directed graph.
let g = DiGraph::new(
["A", "B", "C", "D", "E", "F"],
[
("A", "C"),
("B", "C"),
("C", "D"),
("C", "E"),
]
);
// Build d-separation query struct.
let q = GSeparation::from(&g);
// Assert A _||_ B | { } .
assert!(q.are_independent([0], [1], []));
// Assert A _||_ B | { C } .
assert!(!q.are_independent([0], [1], [2]));
// Assert A _||_ D | { } .
assert!(!q.are_independent([0], [3], []));
// Assert A _||_ D | { C } .
assert!(q.are_independent([0], [3], [2]));
// Assert { A, B } _||_ { D, E } | { C } .
assert!(q.are_independent([0, 1], [3, 4], [2]));
Trait Implementations§
Source§impl<'a, G, D: Clone> Clone for GraphicalSeparation<'a, G, D>
impl<'a, G, D: Clone> Clone for GraphicalSeparation<'a, G, D>
Source§fn clone(&self) -> GraphicalSeparation<'a, G, D>
fn clone(&self) -> GraphicalSeparation<'a, G, D>
Returns a duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<'a, G, D: Debug> Debug for GraphicalSeparation<'a, G, D>
impl<'a, G, D: Debug> Debug for GraphicalSeparation<'a, G, D>
Source§impl<'a, G, D> From<&'a G> for GraphicalSeparation<'a, G, D>where
G: BaseGraph<Direction = D>,
impl<'a, G, D> From<&'a G> for GraphicalSeparation<'a, G, D>where
G: BaseGraph<Direction = D>,
Source§impl<'a, G> GeneralizedIndependence for GraphicalSeparation<'a, G, Directed>
impl<'a, G> GeneralizedIndependence for GraphicalSeparation<'a, G, Directed>
Source§fn are_independent<I, J, K>(&self, x: I, y: J, z: K) -> bool
fn are_independent<I, J, K>(&self, x: I, y: J, z: K) -> bool
Checks whether $\mathbf{X} \mathrlap{\thinspace\perp}{\perp}_{\mathcal{G}} \mathbf{Y} \mid \mathbf{Z}$ holds or not.
Source§impl<'a, G> GeneralizedIndependence for GraphicalSeparation<'a, G, Undirected>where
G: UndirectedGraph<Direction = Undirected>,
impl<'a, G> GeneralizedIndependence for GraphicalSeparation<'a, G, Undirected>where
G: UndirectedGraph<Direction = Undirected>,
Source§fn are_independent<I, J, K>(&self, x: I, y: J, z: K) -> bool
fn are_independent<I, J, K>(&self, x: I, y: J, z: K) -> bool
Checks whether $\mathbf{X} \mathrlap{\thinspace\perp}{\perp}_{\mathcal{G}} \mathbf{Y} \mid \mathbf{Z}$ holds or not.
Source§impl<'a, G> Independence for GraphicalSeparation<'a, G, Directed>
impl<'a, G> Independence for GraphicalSeparation<'a, G, Directed>
Source§impl<'a, G> Independence for GraphicalSeparation<'a, G, Undirected>where
G: UndirectedGraph<Direction = Undirected>,
impl<'a, G> Independence for GraphicalSeparation<'a, G, Undirected>where
G: UndirectedGraph<Direction = Undirected>,
Auto Trait Implementations§
impl<'a, G, D> Freeze for GraphicalSeparation<'a, G, D>
impl<'a, G, D> RefUnwindSafe for GraphicalSeparation<'a, G, D>where
G: RefUnwindSafe,
impl<'a, G, D> Send for GraphicalSeparation<'a, G, D>
impl<'a, G, D> Sync for GraphicalSeparation<'a, G, D>
impl<'a, G, D> Unpin for GraphicalSeparation<'a, G, D>
impl<'a, G, D> UnwindSafe for GraphicalSeparation<'a, G, D>where
G: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).Source§unsafe fn to_subset_unchecked(&self) -> SS
unsafe fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.