diff options
author | Cathy Yeh <cathy@driver.xyz> | 2017-12-03 20:38:28 -0800 |
---|---|---|
committer | Cathy Yeh <cathy@driver.xyz> | 2017-12-03 20:38:28 -0800 |
commit | 26b43410569044aff46053cae7c68862825dd4ec (patch) | |
tree | b184df84d416e2ddf837b25baadff4f9feaaa250 /beliefs/utils | |
parent | 6a1b35f5bf122232d058ed0f3ea19c15629c0cbc (diff) | |
parent | c906bd37fba63ba706cc3b7802bfb18ffb05ee9a (diff) | |
download | beliefs-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')
-rw-r--r-- | beliefs/utils/__init__.py | 0 | ||||
-rw-r--r-- | beliefs/utils/math_helper.py | 19 | ||||
-rw-r--r-- | beliefs/utils/random_variables.py | 21 |
3 files changed, 40 insertions, 0 deletions
diff --git a/beliefs/utils/__init__.py b/beliefs/utils/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/beliefs/utils/__init__.py diff --git a/beliefs/utils/math_helper.py b/beliefs/utils/math_helper.py new file mode 100644 index 0000000..a25ea68 --- /dev/null +++ b/beliefs/utils/math_helper.py @@ -0,0 +1,19 @@ +"""Random math utils.""" + + +def is_kronecker_delta(vector): + """Returns True if vector is a kronecker delta vector, False otherwise. + Specific evidence ('YES' or 'NO') is a kronecker delta vector, whereas + virtual evidence ('MAYBE') is not. + """ + count = 0 + for x in vector: + if x == 1: + count += 1 + elif x != 0: + return False + + if count == 1: + return True + else: + return False 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} |