From 1ac60d24b2f7737da980e5c8e78bddd827da693b Mon Sep 17 00:00:00 2001 From: Hendrik Buschmeier <hbuschme@uni-bielefeld.de> Date: Wed, 9 Apr 2014 22:21:35 +0200 Subject: [PATCH] Allowing soft-evidence to be used when unrolling the DBN. --- primo/networks.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/primo/networks.py b/primo/networks.py index 440173c..42303cf 100644 --- a/primo/networks.py +++ b/primo/networks.py @@ -320,12 +320,22 @@ class TwoTBN(BayesianNetwork): cpd.add_variable(node) node.set_cpd(cpd) if not initial: - node.set_probability(1., [(node, state[node_t])]) + if isinstance(state[node_t], basestring): + node.set_probability(1., [(node, state[node_t])]) + else: + # Set soft evidence + #print "from twotbn: setting " + str(node) + " cpt to " + str(state[node_t]) + node.get_cpd().set_probability_table(state[node_t]) else: for node0 in state: - if node0.name == node.name: - node.set_probability(1., [(node, state[node0])]) - continue + if node0.name == node_t.name: + if isinstance(state[node0], basestring): + node.set_probability(1., [(node, state[node0])]) + else: + # Set soft evidence + #print "from b0: setting " + str(node) + " cpt to " + str(state[node0]) + node.get_cpd().set_probability_table(state[node0]) + break return self @@ -354,6 +364,9 @@ class TwoTBN(BayesianNetwork): node1 = self.get_node(node_name_t) self.__initial_nodes.append((node0, node1)) + def get_initial_nodes(self): + return self.__initial_nodes + def has_initial_node_by_name(self, node_name): ''' Check if this instance has an inital node with name node_name. -- GitLab