Example #1
0
    def addVarNode(self, name, dim):
        newId = len(self.var)
        newVar = VarNode(name, dim, newId)
        self.var[name] = newVar
        self.dims.append(dim)

        return newVar
Example #2
0
 def add_var_node(self, name, dim):
     new_id = len(self.var)
     new_var = VarNode(name, dim, new_id)
     self.var[name] = new_var
     self.dims.append(dim)
     
     return new_var
Example #3
0
    def add_var_node(self, name, dim):
        var_id = len(self.vars)
        varNode = VarNode(name, dim, var_id)
        self.vars[name] = varNode
        self.dims.append(dim)

        return varNode
Example #4
0
from factor_graph import FactorGraph
from node import VarNode, FactorNode
import numpy as np

fg = FactorGraph()
a = VarNode(name='a', graph=fg)
b = VarNode(name='b', graph=fg)
c = VarNode(name='c', init=[1., 1., 1.], graph=fg)

f1_cpd = np.array([[2, 3],
                   [6, 4]])

f2_cpd = np.array([[7, 2, 3],
                   [1, 5, 2]])
f3_cpd = np.array([[7, 9, 3],
                   [6, 4, 2]])

f1 = FactorNode(cpd=f1_cpd, graph=fg, name='f1', ordered_variables=(a, b))
f2 = FactorNode(cpd=f2_cpd, graph=fg, name='f2', ordered_variables=(a, c))
f3 = FactorNode(cpd=f3_cpd, graph=fg, name='f3', ordered_variables=(b, c))

fg.add_var_nodes([a, b, c])
fg.add_factor_nodes([f1, f2, f3])
fg.add_edge(a, f1)
fg.add_edge(f1, b)
fg.add_edge(b, f3)
fg.add_edge(f3, c)
fg.add_edge(a, f2)
fg.add_edge(f2, c)
pos = {a: (-3, 0), b: (0, 3), c: (3, 0), f1: (-1.5, 1.5), f2: (0, 0), f3: (1.5, 1.5)}
fg.save_graph_fig(num=1, pos=pos)
Example #5
0
from factor_graph import FactorGraph
from node import VarNode, FactorNode
import numpy as np

fg = FactorGraph()

params = {'graph': fg}
x1 = VarNode(name='x1', **params)
x2 = VarNode(name='x2', **params)
x3 = VarNode(name='x3', **params)
x4 = VarNode(name='x4', **params)

cpd_a = np.array([[3, 4], [3, 9]])
cpd_b = np.array([[3, 4], [5, 1]])
cpd_c = np.array([[7, 8], [3, 9]])
fa = FactorNode(cpd_a, (x1, x2), name='fa', **params)
fb = FactorNode(cpd_b, (x2, x3), name='fb', **params)
fc = FactorNode(cpd_c, (x2, x4), name='fc', **params)

fg.add_var_nodes([x1, x2, x3, x4])
fg.add_factor_nodes([fa, fb, fc])

fg.add_edge(x1, fa)
fg.add_edge(fa, x2)
fg.add_edge(x2, fb)
fg.add_edge(fb, x3)
fg.add_edge(x2, fc)
fg.add_edge(fc, x4)

print(fg.nodes)
print(fg.neighbors(x4))