aboutsummaryrefslogtreecommitdiff
path: root/beliefs/utils
diff options
context:
space:
mode:
Diffstat (limited to 'beliefs/utils')
-rw-r--r--beliefs/utils/__init__.py0
-rw-r--r--beliefs/utils/math_helper.py19
-rw-r--r--beliefs/utils/random_variables.py21
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}