def test_count_column_freqs(self): columns = aligned_columns_to_rows(self.aln, 1) obs = count_column_freqs(columns) expect = {"A C G": 4, "C G T": 3, "G T A": 3, "T A C": 3} self.assertEqual(obs, expect) columns = aligned_columns_to_rows(self.aln[:-1], 2) obs = count_column_freqs(columns) expect = { "AA CC GG": 1, "AC CG GT": 1, "CC GG TT": 1, "GG TT AA": 1, "GT TA AC": 1, "TT AA CC": 1, } self.assertEqual(obs, expect)
def test_aligned_columns_to_rows(self): obs = aligned_columns_to_rows(self.aln[:-1], 3) expect = [ ["AAA", "CCC", "GGG"], ["CCC", "GGG", "TTT"], ["GGG", "TTT", "AAA"], ["TTT", "AAA", "CCC"], ] assert obs == expect, (obs, expect) obs = aligned_columns_to_rows(self.aln, 1) expect = [ ["A", "C", "G"], ["A", "C", "G"], ["A", "C", "G"], ["C", "G", "T"], ["C", "G", "T"], ["C", "G", "T"], ["G", "T", "A"], ["G", "T", "A"], ["G", "T", "A"], ["T", "A", "C"], ["T", "A", "C"], ["T", "A", "C"], ["A", "C", "G"], ] self.assertEqual(obs, expect) obs = aligned_columns_to_rows(self.gapped_aln[:-1], 3, allowed_chars="ACGT") expect = [["TTT", "TAT", "TTT"]] self.assertEqual(obs, expect) obs = aligned_columns_to_rows(self.ambig_aln, 2, exclude_chars=IUPAC_DNA_ambiguities) expect = [["AA", "CC", "CA"], ["CC", "CC", "CC"], ["TT", "TT", "TG"]] self.assertEqual(obs, expect)
def test_get_ML_probs(self): columns = aligned_columns_to_rows(self.aln, 1) obs = get_ML_probs(columns, with_patterns=True) expect = { "A C G": 4 / 13.0, "C G T": 3 / 13.0, "G T A": 3 / 13.0, "T A C": 3 / 13.0, } sum = 0 for pattern, lnL, freq in obs: self.assertFloatEqual(lnL, expect[pattern]) sum += lnL self.assertTrue(lnL >= 0) self.assertFloatEqual(sum, 1)
def test_get_G93_lnL_from_array(self): columns = aligned_columns_to_rows(self.aln, 1) obs = get_G93_lnL_from_array(columns) expect = math.log(math.pow(4 / 13.0, 4)) + 3 * math.log(math.pow(3 / 13.0, 3)) self.assertFloatEqual(obs, expect)