def __generate_new_cpt(factor, evidence_var): new_cpt = {} evidence_var_position = factor.factors.index(evidence_var.observed_variable) for key in factor.cpt.keys(): if key[evidence_var_position] == evidence_var.observed_value: new_key = list(key) new_key.pop(evidence_var_position) new_key = utils.proper_key(new_key) new_cpt[new_key] = factor.cpt.get(key) return new_cpt
def __set_cpt(node, parent_nodes, raw_cpt): splitted_cpt = raw_cpt.split() nodes = [] if parent_nodes: nodes = [n for n in parent_nodes] nodes.append(node) domains = [n.domain for n in nodes] cpt = {} index = 0 for k in itertools.product(*domains): key = utils.proper_key(k) cpt[key] = float(splitted_cpt[index]) index += 1 node.cpt = cpt