def setUp(self): nodes = {'c': {'STATES': ['Present', 'Absent'], 'DESCRIPTION': '(c) Brain Tumor', 'YPOS': '11935', 'XPOS': '15250', 'TYPE': 'discrete'}, 'a': {'STATES': ['Present', 'Absent'], 'DESCRIPTION': '(a) Metastatic Cancer', 'YPOS': '10465', 'XPOS': '13495', 'TYPE': 'discrete'}, 'b': {'STATES': ['Present', 'Absent'], 'DESCRIPTION': '(b) Serum Calcium Increase', 'YPOS': '11965', 'XPOS': '11290', 'TYPE': 'discrete'}, 'e': {'STATES': ['Present', 'Absent'], 'DESCRIPTION': '(e) Papilledema', 'YPOS': '13240', 'XPOS': '17305', 'TYPE': 'discrete'}, 'd': {'STATES': ['Present', 'Absent'], 'DESCRIPTION': '(d) Coma', 'YPOS': '12985', 'XPOS': '13960', 'TYPE': 'discrete'}} model = BayesianModel([('b', 'd'), ('a', 'b'), ('a', 'c'), ('c', 'd'), ('c', 'e')]) cpd_distribution = {'a': {'TYPE': 'discrete', 'DPIS': np.array([[0.2, 0.8]])}, 'e': {'TYPE': 'discrete', 'DPIS': np.array([[0.8, 0.2], [0.6, 0.4]]), 'CONDSET': ['c'], 'CARDINALITY': [2]}, 'b': {'TYPE': 'discrete', 'DPIS': np.array([[0.8, 0.2], [0.2, 0.8]]), 'CONDSET': ['a'], 'CARDINALITY': [2]}, 'c': {'TYPE': 'discrete', 'DPIS': np.array([[0.2, 0.8], [0.05, 0.95]]), 'CONDSET': ['a'], 'CARDINALITY': [2]}, 'd': {'TYPE': 'discrete', 'DPIS': np.array([[0.8, 0.2], [0.9, 0.1], [0.7, 0.3], [0.05, 0.95]]), 'CONDSET': ['b', 'c'], 'CARDINALITY': [2, 2]}} tabular_cpds = [] for var, values in cpd_distribution.items(): evidence = values['CONDSET'] if 'CONDSET' in values else [] cpd = values['DPIS'] evidence_card = values['CARDINALITY'] if 'CARDINALITY' in values else [] states = nodes[var]['STATES'] cpd = TabularCPD(var, len(states), cpd, evidence=evidence, evidence_card=evidence_card) tabular_cpds.append(cpd) model.add_cpds(*tabular_cpds) for var, properties in nodes.items(): model.node[var] = properties self.maxDiff = None self.writer = XMLBeliefNetwork.XBNWriter(model=model)
def setUp(self): string = """<ANALYSISNOTEBOOK NAME="Notebook.Cancer Example From Neapolitan" ROOT="Cancer"> <BNMODEL NAME="Cancer"> <STATICPROPERTIES> <FORMAT VALUE="MSR DTAS XML"/> <VERSION VALUE="0.2"/> <CREATOR VALUE="Microsoft Research DTAS"/> </STATICPROPERTIES> <VARIABLES> <VAR NAME="a" TYPE="discrete" XPOS="13495" YPOS="10465"> <DESCRIPTION>(a) Metastatic Cancer</DESCRIPTION> <STATENAME>Present</STATENAME> <STATENAME>Absent</STATENAME> </VAR> <VAR NAME="b" TYPE="discrete" XPOS="11290" YPOS="11965"> <DESCRIPTION>(b) Serum Calcium Increase</DESCRIPTION> <STATENAME>Present</STATENAME> <STATENAME>Absent</STATENAME> </VAR> <VAR NAME="c" TYPE="discrete" XPOS="15250" YPOS="11935"> <DESCRIPTION>(c) Brain Tumor</DESCRIPTION> <STATENAME>Present</STATENAME> <STATENAME>Absent</STATENAME> </VAR> <VAR NAME="d" TYPE="discrete" XPOS="13960" YPOS="12985"> <DESCRIPTION>(d) Coma</DESCRIPTION> <STATENAME>Present</STATENAME> <STATENAME>Absent</STATENAME> </VAR> <VAR NAME="e" TYPE="discrete" XPOS="17305" YPOS="13240"> <DESCRIPTION>(e) Papilledema</DESCRIPTION> <STATENAME>Present</STATENAME> <STATENAME>Absent</STATENAME> </VAR> </VARIABLES> <STRUCTURE> <ARC PARENT="a" CHILD="b"/> <ARC PARENT="a" CHILD="c"/> <ARC PARENT="b" CHILD="d"/> <ARC PARENT="c" CHILD="d"/> <ARC PARENT="c" CHILD="e"/> </STRUCTURE> <DISTRIBUTIONS> <DIST TYPE="discrete"> <PRIVATE NAME="a"/> <DPIS> <DPI> 0.2 0.8</DPI> </DPIS> </DIST> <DIST TYPE="discrete"> <CONDSET> <CONDELEM NAME="a"/> </CONDSET> <PRIVATE NAME="b"/> <DPIS> <DPI INDEXES=" 0 "> 0.8 0.2</DPI> <DPI INDEXES=" 1 "> 0.2 0.8</DPI> </DPIS> </DIST> <DIST TYPE="discrete"> <CONDSET> <CONDELEM NAME="a"/> </CONDSET> <PRIVATE NAME="c"/> <DPIS> <DPI INDEXES=" 0 "> 0.2 0.8</DPI> <DPI INDEXES=" 1 "> 0.05 0.95</DPI> </DPIS> </DIST> <DIST TYPE="discrete"> <CONDSET> <CONDELEM NAME="b"/> <CONDELEM NAME="c"/> </CONDSET> <PRIVATE NAME="d"/> <DPIS> <DPI INDEXES=" 0 0 "> 0.8 0.2</DPI> <DPI INDEXES=" 0 1 "> 0.9 0.1</DPI> <DPI INDEXES=" 1 0 "> 0.7 0.3</DPI> <DPI INDEXES=" 1 1 "> 0.05 0.95</DPI> </DPIS> </DIST> <DIST TYPE="discrete"> <CONDSET> <CONDELEM NAME="c"/> </CONDSET> <PRIVATE NAME="e"/> <DPIS> <DPI INDEXES=" 0 "> 0.8 0.2</DPI> <DPI INDEXES=" 1 "> 0.6 0.4</DPI> </DPIS> </DIST> </DISTRIBUTIONS> </BNMODEL> </ANALYSISNOTEBOOK>""" self.reader_string = XMLBeliefNetwork.XBNReader(string=string) self.reader_file = XMLBeliefNetwork.XBNReader(path=StringIO(string))
def setUp(self): nodes = { "c": { "STATES": ["Present", "Absent"], "DESCRIPTION": "(c) Brain Tumor", "YPOS": "11935", "XPOS": "15250", "TYPE": "discrete", }, "a": { "STATES": ["Present", "Absent"], "DESCRIPTION": "(a) Metastatic Cancer", "YPOS": "10465", "XPOS": "13495", "TYPE": "discrete", }, "b": { "STATES": ["Present", "Absent"], "DESCRIPTION": "(b) Serum Calcium Increase", "YPOS": "11965", "XPOS": "11290", "TYPE": "discrete", }, "e": { "STATES": ["Present", "Absent"], "DESCRIPTION": "(e) Papilledema", "YPOS": "13240", "XPOS": "17305", "TYPE": "discrete", }, "f": { "STATES": ["Present", "Absent"], "DESCRIPTION": "(f) Asthma", "YPOS": "10489", "XPOS": "13440", "TYPE": "discrete", }, "d": { "STATES": ["Present", "Absent"], "DESCRIPTION": "(d) Coma", "YPOS": "12985", "XPOS": "13960", "TYPE": "discrete", }, } model = BayesianModel() model.add_nodes_from(["a", "b", "c", "d", "e", "f"]) model.add_edges_from([("b", "d"), ("a", "b"), ("a", "c"), ("c", "d"), ("c", "e")]) cpd_distribution = { "a": { "TYPE": "discrete", "DPIS": np.array([[0.2, 0.8]]) }, "e": { "TYPE": "discrete", "DPIS": np.array([[0.8, 0.2], [0.6, 0.4]]), "CONDSET": ["c"], "CARDINALITY": [2], }, "f": { "TYPE": "discrete", "DPIS": np.array([[0.3, 0.7]]) }, "b": { "TYPE": "discrete", "DPIS": np.array([[0.8, 0.2], [0.2, 0.8]]), "CONDSET": ["a"], "CARDINALITY": [2], }, "c": { "TYPE": "discrete", "DPIS": np.array([[0.2, 0.8], [0.05, 0.95]]), "CONDSET": ["a"], "CARDINALITY": [2], }, "d": { "TYPE": "discrete", "DPIS": np.array([[0.8, 0.2], [0.9, 0.1], [0.7, 0.3], [0.05, 0.95]]), "CONDSET": ["b", "c"], "CARDINALITY": [2, 2], }, } tabular_cpds = [] for var, values in cpd_distribution.items(): evidence = values["CONDSET"] if "CONDSET" in values else [] cpd = values["DPIS"] evidence_card = values[ "CARDINALITY"] if "CARDINALITY" in values else [] states = nodes[var]["STATES"] cpd = TabularCPD(var, len(states), cpd, evidence=evidence, evidence_card=evidence_card) tabular_cpds.append(cpd) model.add_cpds(*tabular_cpds) if nx.__version__.startswith("1"): for var, properties in nodes.items(): model.nodes[var] = properties else: for var, properties in nodes.items(): model._node[var] = properties self.maxDiff = None self.writer = XMLBeliefNetwork.XBNWriter(model=model)