def addVarNode(self, name, dim): newId = len(self.var) newVar = VarNode(name, dim, newId) self.var[name] = newVar self.dims.append(dim) return newVar
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
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
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)
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))