def test_zhang_mtseq(self): """genetic code setting should work""" from cogent3.app.composable import NotCompleted opt = dict(max_evaluations=20, limit_action="ignore") aln = load_aligned_seqs("data/ENSG00000198712.fa", moltype="dna") natsel = evo_app.natsel_zhang("CNFGTR", tip1="Human", opt_args=opt, gc=2) result = natsel(aln) self.assertEqual(result.df, 3) # but if provide wrong gc, get NotCompleted natsel = evo_app.natsel_zhang("CNFGTR", tip1="Human", opt_args=opt, gc=1) result = natsel(aln) self.assertIsInstance(result, NotCompleted)
def test_zhang_mprobs(self): """natsel_zhang optimise_motif_probs setting should work""" opt = dict(max_evaluations=2, limit_action="ignore") aln = load_aligned_seqs("data/ENSG00000198712.fa", moltype="dna") # default, not optimising root probs natsel = evo_app.natsel_zhang("MG94HKY", tip1="Human", opt_args=opt, gc=2) result = natsel(aln) self.assertEqual(result.null.lf.nfp, 6) # optimising root probs natsel = evo_app.natsel_zhang( "MG94HKY", tip1="Human", opt_args=opt, gc=2, optimise_motif_probs=True ) result = natsel(aln) self.assertEqual(result.null.lf.nfp, 9)
def test_zhang(self): """natsel_zhang correctly configured and should not fail""" opt = dict(max_evaluations=20, limit_action="ignore") aln = load_aligned_seqs("data/primate_brca1.fasta", moltype="dna") natsel = evo_app.natsel_zhang( "CNFGTR", tree="data/primate_brca1.tree", tip1="Human", tip2="Chimpanzee", opt_args=opt, ) result = natsel(aln) self.assertEqual(result.df, 3) self.assertEqual(result.alt.nfp, 21) # the naming scheme is model name followed by null/alt self.assertTrue("CNFGTR-null" in result) self.assertTrue("CNFGTR-alt" in result) # result keys correct when given a model Y98 = get_model("Y98") natsel = evo_app.natsel_zhang( Y98, tree="data/primate_brca1.tree", tip1="Human", tip2="Chimpanzee", opt_args=opt, ) result = natsel(aln) self.assertEqual(result.df, 3) self.assertTrue("Y98-null" in result) self.assertTrue("Y98-alt" in result) # fails if not a codon model with self.assertRaises(ValueError): _ = evo_app.natsel_zhang( "F81", tree="data/primate_brca1.tree", tip1="Human", tip2="Chimpanzee", opt_args=opt, ) # fails if no tip names provided with self.assertRaises(ValueError): _ = evo_app.natsel_zhang("Y98", tree="data/primate_brca1.tree", opt_args=opt)