diff options
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} |