Skip to main content

JunctionTree

Struct JunctionTree 

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

A calibrated (or calibratable) junction tree for exact inference.

Implementations§

Source§

impl JunctionTree

Source

pub fn build( cfg: &JunctionTreeConfig, factors: &[(Vec<usize>, Vec<f64>)], ) -> SeqResult<Self>

Build a junction tree from a list of factors.

Each factor is (vars, table) where vars is the (unsorted is allowed) scope and table is a linear-domain non-negative potential table, row-major over the factor’s joint configuration in the given vars order. Tables are converted to the log domain internally.

Source

pub fn from_mrf(mrf: &Mrf) -> SeqResult<Self>

Build a junction tree directly from a pairwise Mrf. Unary terms become single-variable factors and each pairwise term a two-variable factor. The Mrf stores energies (probability ∝ exp(-energy)), so tables are exp(-unary) and exp(-pairwise) respectively.

Source

pub fn calibrate(&mut self) -> SeqResult<()>

Run Hugin two-pass message passing (collect to root, distribute from root) so that every clique stores its joint marginal (scaled by Z) and every separator is consistent with both incident cliques.

Source

pub fn marginal(&self, var: usize) -> SeqResult<Vec<f64>>

Marginal distribution over a single variable after calibration, normalised to sum to 1.

Source

pub fn clique_marginal(&self, clique_idx: usize) -> SeqResult<Vec<f64>>

Joint marginal over the variables of clique clique_idx, normalised to sum to 1. The output is row-major over the clique’s (sorted) variables.

Source

pub fn log_partition(&self) -> SeqResult<f64>

Log partition function log Z (log of the normalisation constant).

After calibration every clique sums (in the linear domain) to Z, so we take the log-sum-exp of any clique’s log-potential. Before calibration this is generally not Z; callers should calibrate first.

Source

pub fn n_cliques(&self) -> usize

Number of cliques in the tree.

Source

pub fn n_separators(&self) -> usize

Number of separators (tree edges) in the tree.

Source

pub fn cliques(&self) -> &[Clique]

Read-only view of the cliques.

Source

pub fn separator_vars(&self, sep_idx: usize) -> SeqResult<&[usize]>

Variables of separator sep_idx (sorted); useful for tests checking the running-intersection property.

Source

pub fn separator_cliques(&self, sep_idx: usize) -> SeqResult<(usize, usize)>

The (clique_a, clique_b) incident to separator sep_idx.

Trait Implementations§

Source§

impl Clone for JunctionTree

Source§

fn clone(&self) -> JunctionTree

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 JunctionTree

Source§

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

Formats the value using the given formatter. Read more

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> 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> 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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.