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