aboutsummaryrefslogtreecommitdiff
path: root/beliefs/utils/random_variables.py
diff options
context:
space:
mode:
authorCathy Yeh <cathy@driver.xyz>2017-12-03 20:38:28 -0800
committerCathy Yeh <cathy@driver.xyz>2017-12-03 20:38:28 -0800
commit26b43410569044aff46053cae7c68862825dd4ec (patch)
treeb184df84d416e2ddf837b25baadff4f9feaaa250 /beliefs/utils/random_variables.py
parent6a1b35f5bf122232d058ed0f3ea19c15629c0cbc (diff)
parentc906bd37fba63ba706cc3b7802bfb18ffb05ee9a (diff)
downloadbeliefs-26b43410569044aff46053cae7c68862825dd4ec.tar.gz
beliefs-26b43410569044aff46053cae7c68862825dd4ec.tar.bz2
beliefs-26b43410569044aff46053cae7c68862825dd4ec.zip
LGS-164 belief propagation for polytrees, special case of OR cpds, refactored from LGSv0.0.2
Diffstat (limited to 'beliefs/utils/random_variables.py')
-rw-r--r--beliefs/utils/random_variables.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/beliefs/utils/random_variables.py b/beliefs/utils/random_variables.py
new file mode 100644
index 0000000..1a0b0f7
--- /dev/null
+++ b/beliefs/utils/random_variables.py
@@ -0,0 +1,21 @@
+
+
+def get_reachable_observed_variables_for_inferred_variables(model, observed=set()):
+ """
+ After performing inference on a BayesianModel, get the labels of observed variables
+ ("reachable observed variables") that influenced the beliefs of variables inferred
+ to be in a definite state.
+
+ INPUT
+ model: instance of BayesianModel class or subclass
+ observed: set of labels (strings) corresponding to vars pinned to definite
+ state during inference.
+ RETURNS
+ dict, of form key - source label (a string), value - a list of strings
+ """
+ if not observed:
+ return {}
+
+ source_vars = model.get_unobserved_variables_in_definite_state(observed)
+
+ return {var: model.reachable_observed_variables(var, observed) for var in source_vars}