示例#1
0
    def test_node_T_N0(self):
        # T = self.lungcancer.P('T|N=0')
        # P = self.lungcancer.compute_marginals(['T'], {'N': '0'})
        bn = oobn.read(self.get_OOBN_path())

        P = bn.compute_marginals(['T'], {'N': '0'})
        T = P['T']
        self.assertAlmostEquals(T['1A'], 0.1917, places=self.places)
        self.assertAlmostEquals(T['1B'], 0.1339, places=self.places)
        self.assertAlmostEquals(T['2A'], 0.2503, places=self.places)
        self.assertAlmostEquals(T['2B'], 0.0777, places=self.places)
        self.assertAlmostEquals(T['3'], 0.1511, places=self.places)
        self.assertAlmostEquals(T['4'], 0.1409, places=self.places)
        self.assertAlmostEquals(T['X'], 0.0544, places=self.places)
示例#2
0
    def test_node_cTNM_TNM1A(self):
        # cTNM = self.lungcancer.P('cTNM|TNM=1A')
        # P = self.lungcancer.compute_marginals(['cTNM'], {'TNM': '1A'})
        bn = oobn.read(self.get_OOBN_path())

        P = bn.compute_marginals(['cTNM'], {'TNM': '1A'})
        cTNM = P['cTNM']
        self.assertAlmostEquals(cTNM['1A'], 0.8402, places=self.places)
        self.assertAlmostEquals(cTNM['1B'], 0.0153, places=self.places)
        self.assertAlmostEquals(cTNM['2A'], 0.0130, places=self.places)
        self.assertAlmostEquals(cTNM['2B'], 0.0156, places=self.places)
        self.assertAlmostEquals(cTNM['3A'], 0.0118, places=self.places)
        self.assertAlmostEquals(cTNM['3B'], 0.0401, places=self.places)
        self.assertAlmostEquals(cTNM['4'], 0.0151, places=self.places)
        self.assertAlmostEquals(cTNM['X'], 0.0490, places=self.places)
示例#3
0
    def test_node_cTNM(self):
        # cTNM = self.lungcancer.P('cTNM')
        # P = self.lungcancer.compute_marginals(['cTNM'])
        bn = oobn.read(self.get_OOBN_path())

        P = bn.compute_marginals(['cTNM'])
        cTNM = P['cTNM']
        self.assertAlmostEquals(cTNM['1A'], 0.0966, places=self.places)
        self.assertAlmostEquals(cTNM['1B'], 0.1058, places=self.places)
        self.assertAlmostEquals(cTNM['2A'], 0.0172, places=self.places)
        self.assertAlmostEquals(cTNM['2B'], 0.0400, places=self.places)
        self.assertAlmostEquals(cTNM['3A'], 0.1261, places=self.places)
        self.assertAlmostEquals(cTNM['3B'], 0.1467, places=self.places)
        self.assertAlmostEquals(cTNM['4'], 0.4462, places=self.places)
        self.assertAlmostEquals(cTNM['X'], 0.0214, places=self.places)
示例#4
0
    def test_net_reader(self):
        filename = thomas.core.get_pkg_filename('lungcancer.net')
        bn_net = net.read(filename)

        filename = thomas.core.get_pkg_filename('lungcancer.oobn')
        bn_oobn = oobn.read(filename)

        self.assertTrue(isinstance(bn_net, BayesianNetwork))
        self.assertTrue(isinstance(bn_oobn, BayesianNetwork))

        P1 = bn_net.compute_marginals(['T'])
        P2 = bn_oobn.compute_marginals(['T'])

        self.assertAlmostEqual(P1['T']['1A'],
                               P2['T']['1A'],
                               places=self.places)
示例#5
0
    def test_node_cT_T1A_TNM1A(self):
        # cT = self.lungcancer.P('cT|T=1A,TNM=1A')
        # P = self.lungcancer.compute_marginals(['cT'], {'T': '1A', 'TNM': '1A'})
        bn = oobn.read(self.get_OOBN_path())

        P = bn.compute_marginals(['cT'], {'T': '1A', 'TNM': '1A'})
        cT = P['cT']
        self.assertAlmostEquals(cT['1'], 0.5589, places=self.places)
        self.assertAlmostEquals(cT['1A'], 0.3195, places=self.places)
        self.assertAlmostEquals(cT['1B'], 0.0031, places=self.places)
        self.assertAlmostEquals(cT['2'], 0.0150, places=self.places)
        self.assertAlmostEquals(cT['2A'], 0.0012, places=self.places)
        self.assertAlmostEquals(cT['2B'], 0.0009, places=self.places)
        self.assertAlmostEquals(cT['3'], 0.0178, places=self.places)
        self.assertAlmostEquals(cT['4'], 0.0317, places=self.places)
        self.assertAlmostEquals(cT['X'], 0.0520, places=self.places)
示例#6
0
    def test_oobn_reader(self):
        filename = thomas.core.get_pkg_filename('prostatecancer.oobn')
        bn = oobn.read(filename)

        self.assertTrue(isinstance(bn, BayesianNetwork))

        grade = bn['grade'].cpt
        self.assertAlmostEqual(grade['g2'], 0.0185338)
        self.assertAlmostEqual(grade['g3'], 0.981466)

        cT = bn['cT'].cpt.reorder_scope(['grade', 'cT'])
        self.assertAlmostEqual(cT['g2', 'T2'], 0.0)
        self.assertAlmostEqual(cT['g2', 'T3'], 0.0)
        self.assertAlmostEqual(cT['g2', 'T4'], 1.0)
        self.assertAlmostEqual(cT['g3', 'T2'], 0.521457, places=5)
        self.assertAlmostEqual(cT['g3', 'T3'], 0.442157, places=5)
        self.assertAlmostEqual(cT['g3', 'T4'], 0.0363858, places=6)

        cN = bn['cN'].cpt.reorder_scope(['edition', 'cT'])
        self.assertAlmostEqual(cN['TNM 6', 'T2', 'NX'], 0.284264)
        self.assertAlmostEqual(cN['TNM 6', 'T2', 'N0'], 0.680203)
        self.assertAlmostEqual(cN['TNM 6', 'T2', 'N1'], 0.035533)

        cTNM = bn['cTNM'].cpt.reorder_scope(['cN', 'cT', 'edition', 'cTNM'])
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 6', 'I'], 0.0)
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 6', 'II'], 1.0)
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 6', 'III'], 0.0)
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 6', 'IV'], 0.0)

        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 7', 'I'],
                               0.522727,
                               places=6)
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 7', 'II'],
                               0.454545,
                               places=6)
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 7', 'III'], 0.0, places=6)
        self.assertAlmostEqual(cTNM['NX', 'T2', 'TNM 7', 'IV'],
                               0.0227273,
                               places=6)