class TestOrderedSkeleton(unittest.TestCase): def setUp(self): self.os = OrderedSkeleton() self.os.load("unittestdict.txt") self.gs = GraphSkeleton() self.gs.load("unittestdict.txt") def test_constructor(self): self.assertNotEqual(self.os.V, self.gs.V) self.gs.toporder() self.assertEqual(self.os.V, self.gs.V)
def __init__(self, nodes): self.nodes = {} self.children = defaultdict(list) self.parents = defaultdict(list) self.outputs = {} for name, node_spec in nodes.iteritems(): node_type = node_spec["type"] if node_type == "inferred": parents = node_spec["parents"] # store the relationship between these elements for parent in parents: normalised = normalise_name(parent) self.parents[name].append(normalised) self.children[normalised].append(name) truth_table = parse_truth_table(node_spec["p"], parents) node = make_node(truth_table, parents, node_type) self.nodes[name] = node if node_type == "fsm_input": node = make_node([1.0, 0.0], None, node_type) self.nodes[name] = node if node_type == "sensor_input": proxy_node = make_node([1.0, 0.0], None, "proxy") proxy_name = "_proxy_%s" % name self.nodes[proxy_name] = proxy_node self.children[proxy_name].append(name) node = make_node({ "['T']": [1.0, 0.0], "['F']": [0.0, 1.0] }, [proxy_name], node_type) self.nodes[name] = node if node_type == "output": self.outputs[name] = node_spec for node in self.nodes: if len(self.children[node]) > 0: self.nodes[node]["children"] = self.children[node] else: self.nodes[node]["children"] = None # certainty scaling self.event_caution = 0.0 og = OrderedSkeleton() og.V = self.nodes.keys() edges = [] for k, children in self.children.iteritems(): for child in children: edges.append((k, child)) og.E = edges og.toporder() nd = NodeData() nd.Vdata = self.nodes #logging.debug(pprint.pformat(nd.Vdata)) self.net = DiscreteBayesianNetwork(og, nd) self.factor_net = TableCPDFactorization(self.net)
def setUp(self): self.os = OrderedSkeleton() self.os.load("unittestdict.txt") self.gs = GraphSkeleton() self.gs.load("unittestdict.txt")