Ejemplo n.º 1
0
    def test_TP_scores_better_than_FP(self):
        """FPs must score lower than TPs"""

        # make a new reference set with different (lower) priors
        priors2 = self.priors.copy()
        priors2["Y:002"] = 0.55
        priors2["Y:007"] = 0.15
        rs2 = ReferenceSet(dict(null=0.4, refA=0.3, refB=0.3),
                           ids=Yobo.ids(),
                           row_priors=priors2)
        rs2.add(self.refnull).add(self.refA).add(self.refB)
        rs2.learn_obo(Yobo)

        # compare with refA, which has Y:002 equal to 1
        FP = Representation(name="FP").set("Y:007", 1)
        chain_FP = rs2.inference_chain(FP, "refA", verbose=True, fp_penalty=2)
        chain_FP.evaluate_inference()
        TP = Representation(name="TP").set("Y:002", 1)
        chain_TP = rs2.inference_chain(TP, "refA", verbose=True)
        chain_TP.evaluate_inference()

        self.assertGreaterEqual(chain_TP.posterior, chain_FP.posterior)
Ejemplo n.º 2
0
    def test_FP_with_fp_penalty(self):
        """FP increases more with lower fp_penalty"""

        # make a new reference set with different priors
        priors2 = self.priors.copy()
        priors2["Y:003"] = 0.4
        priors2["Y:002"] = 0.15
        priors2["Y:007"] = 0.1
        rs2 = ReferenceSet(dict(null=0.4, ref=0.3),
                           ids=Yobo.ids(),
                           row_priors=priors2)
        ref = Representation(name="ref")
        ref.set("Y:001", 1).impute(Yobo, priors2)
        ref.set("Y:007", priors2["Y:007"] / 2)
        rs2.add(self.refnull).add(ref)
        rs2.learn_obo(Yobo)

        FP = Representation(name="model").set("Y:007", 0.35)
        chain1 = rs2.inference_chain(FP, "ref", verbose=True, fp_penalty=0.1)
        chain1.evaluate_inference()
        self.assertGreater(chain1.posterior, chain1.prior)
        chain2 = rs2.inference_chain(FP, "ref", verbose=True, fp_penalty=1)
        chain2.evaluate_inference()
        self.assertLess(chain2.posterior, chain1.posterior)
Ejemplo n.º 3
0
    def test_FP_can_increase(self):
        """FP can in principle yield greater score"""

        # make a new reference set with different priors
        priors2 = self.priors.copy()
        priors2["Y:002"] = 0.1
        rs2 = ReferenceSet(dict(null=0.4, refA=0.3, refB=0.3),
                           ids=Yobo.ids(),
                           row_priors=priors2)
        rs2.add(self.refnull).add(self.refA).add(self.refB)
        rs2.learn_obo(Yobo)

        FP = Representation(name="model").set("Y:002", 0.2)
        chain = rs2.inference_chain(FP, "refB", verbose=True, fp_penalty=1)
        chain.evaluate_inference()
        self.assertGreater(chain.posterior, chain.prior)
Ejemplo n.º 4
0
    def test_inference_chain(self):
        """compute an inference chain."""

        # create a reference set
        refA = Representation(name="refA")
        refA.set("Y:002", 1).impute(Yobo, Ydefaults)
        refB = Representation(name="refB")
        refB.set("Y:001", 1).impute(Yobo, Ydefaults)
        rs = ReferenceSet(dict(refA=0.5, refB=0.5),
                          ids=Yobo.ids(),
                          row_priors=Ydefaults)
        rs.add(refA).add(refB)
        rs.learn_obo(Yobo)

        # compute a chain object explaining scoring steps
        chain = rs.inference_chain(refA, "refB", verbose=True)
        self.assertEqual(chain.__dict__["model"], "refA")
        self.assertEqual(chain.__dict__["reference"], "refB")
        self.assertGreater(len(chain.data), 2,
                           "data chain should describe multiple features")
        self.assertTrue("background" in chain.data[0].__dict__,
                        "chain data have comparison information")
        self.assertTrue("result" in chain.data[0].__dict__,
                        "chain data have TP/FP/etc codes")