Beispiel #1
0
    def test_build_family_handlers(self):
        args = Namespace(umt_distance_threshold=1, min_family_size_threshold=3)
        handlers = build_family_handlers(args, samtools_test.MockAlignWriter(),
                                         samtools_test.MockAlignWriter(),
                                         self.mock_logger)
        actual_handler_names = [x.__class__.__name__ for x in handlers]

        expected_handler_names = [
            '_FamilySizeStatHandler', '_MatchStatHandler',
            '_WriteAnnotatedAlignsHandler', '_WriteConsensusHandler'
        ]
        self.assertEqual(expected_handler_names, actual_handler_names)
    def test_handle_excludeFilteredFamilies(self):
        family_1 = _mock_tag_family(consensus=_mock_align_pair("readA"),
                                    filter_value=None)
        family_2 = _mock_tag_family(consensus=_mock_align_pair("readB"),
                                    filter_value='foo')
        families = [family_1, family_2]
        writer = samtools_test.MockAlignWriter()

        handler = _WriteConsensusHandler(writer)
        for family in families:
            handler.handle(family)

        name_pairs = [(fam,
                       align.query_name) for fam, align in writer._write_calls]
        self.assertEqual([(family_1, 'readA'), (family_1, 'readA')], name_pairs)
Beispiel #3
0
    def test_handle_ordersAlignmentsByReadname(self):
        pairA1 = _mock_align_pair("readA1")
        pairA2 = _mock_align_pair("readA2")
        pairA3 = _mock_align_pair("readA3")
        pairA4 = _mock_align_pair("readA4")

        family_A = _mock_tag_family(
            align_pairs=set([pairA2, pairA1, pairA4, pairA3]))
        families = [family_A]
        writer = samtools_test.MockAlignWriter()

        handler = _WriteAnnotatedAlignsHandler(writer)
        for family in families:
            handler.handle(family)

        names = [align.query_name for _, align in writer._write_calls]
        self.assertEqual([
            'readA1', 'readA1', 'readA2', 'readA2', 'readA3', 'readA3',
            'readA4', 'readA4'
        ], names)
Beispiel #4
0
    def test_handle_writesAllAlignments(self):
        pairA1 = _mock_align_pair("readA1")
        pairA2 = _mock_align_pair("readA2", filter_value="foo")
        pairB1 = _mock_align_pair("readB1")
        pairB2 = _mock_align_pair("readB2", filter_value="bar")

        family_A = _mock_tag_family(align_pairs=set([pairA1, pairA2]))
        family_B = _mock_tag_family(align_pairs=set([pairB1, pairB2]))
        families = [family_A, family_B]
        writer = samtools_test.MockAlignWriter()

        handler = _WriteAnnotatedAlignsHandler(writer)
        for family in families:
            handler.handle(family)

        name_pairs = [(fam, align.query_name)
                      for fam, align in writer._write_calls]
        self.assertEqual([(family_A, 'readA1'), (family_A, 'readA1'),
                          (family_A, 'readA2'), (family_A, 'readA2'),
                          (family_B, 'readB1'), (family_B, 'readB1'),
                          (family_B, 'readB2'), (family_B, 'readB2')],
                         name_pairs)