def _makeFactor(self, node, observed, log): nodes = np.array([node] + self.network.parents[node]) probs = self.network.probabilities[node].values nodes_in_observed = nodes[np.in1d(nodes, observed.keys())] if nodes_in_observed.size > 0: if nodes.size > nodes_in_observed.size: factor = Factor(nodes, probs, self.network) log.write("\nReduce\n") log.write(str(factor)) log.write("Evidence: " + str(observed) + "\n\n") return factor.reduce(nodes_in_observed, observed) else: return Factor() else: return Factor(nodes, probs, self.network)