From 333ec8dcb105155b25194b2d6e6b9092857a7042 Mon Sep 17 00:00:00 2001 From: dehann Date: Sat, 4 May 2019 21:36:57 -0400 Subject: [PATCH] new functions --- src/FGOSUtils.jl | 35 +++++++++++++++++++++++++++++++++++ src/IncrementalInference.jl | 2 ++ 2 files changed, 37 insertions(+) diff --git a/src/FGOSUtils.jl b/src/FGOSUtils.jl index 20d49e93c..aab22b9a3 100644 --- a/src/FGOSUtils.jl +++ b/src/FGOSUtils.jl @@ -774,4 +774,39 @@ Return `::Bool` on whether this variable has been marginalized. isMarginalized(vert::Graphs.ExVertex) = getData(vert).ismargin isMarginalized(fgl::FactorGraph, sym::Symbol; api::DataLayerAPI=localapi) = isMarginalized(getVert(fg, sym, api=api)) + + +""" + $SIGNATURES + +Free all variables from marginalization. +""" +function unmarginalizeVariablesAll!(fgl::FactorGraph) + fgl.isfixedlag = false + fgl.qfl = 9999999999 + vsyms = union(ls(fgl)...) + for sym in vsyms + getData(fgl, sym).ismargin = false + end + nothing +end + +""" + $SIGNATURES + +Reset initialization flag on all variables in `::FactorGraphs`. + +Notes +- Numerical values remain, but inference will overwrite since init flags are now `false`. +""" +function resetVariableAllInitializations!(fgl::FactorGraph) + vsyms = union(ls(fgl)...) + for sym in vsyms + getData(fgl, sym).initialized = false + end + nothing +end + + + # diff --git a/src/IncrementalInference.jl b/src/IncrementalInference.jl index 24a540025..19059ee7f 100644 --- a/src/IncrementalInference.jl +++ b/src/IncrementalInference.jl @@ -194,6 +194,8 @@ export localProduct, treeProductUp, approxCliqMarginalUp!, + unmarginalizeVariablesAll!, + resetVariableAllInitializations!, isMarginalized, isCliqMarginalizedFromVars, isCliqParentNeedDownMsg,