Exemplo n.º 1
0
    def test_filter_passesAllThroughWhenNoFilters(self):
        base_collection = [1, 2, 3, 4, 5]
        filters = {}

        generator = utils.FilteredGenerator(filters)
        actual_collection = [x for x in generator.filter(base_collection)]

        self.assertEqual([(1, None), (2, None), (3, None), (4, None),
                          (5, None)], actual_collection)
Exemplo n.º 2
0
    def test_filter_singleFilter(self):
        filters = {'div by 2': lambda x: x % 2 == 0}
        generator = utils.FilteredGenerator(filters)

        base_collection = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        actual_collection = [x for x in generator.filter(base_collection)]

        self.assertEqual([(1, None), (2, 'div by 2'), (3, None),
                          (4, 'div by 2'), (5, None), (6, 'div by 2'),
                          (7, None), (8, 'div by 2'), (9, None),
                          (10, 'div by 2')], actual_collection)
Exemplo n.º 3
0
    def test_filter_multipleFilterAreSortedByName(self):
        filters = {
            'div by 5': lambda x: x % 5 == 0,
            'div by 2': lambda x: x % 2 == 0
        }
        generator = utils.FilteredGenerator(filters)

        base_collection = [1, 10]
        actual_collection = [x for x in generator.filter(base_collection)]

        self.assertEqual([(1, None), (10, 'div by 2; div by 5')],
                         actual_collection)
Exemplo n.º 4
0
def filter_alignments(pysam_alignments, excluded_writer=AlignWriter.NULL):
    filters = {'cigar unavailable': \
                    lambda a: a.cigarstring is None,
                'mapping quality < 1': \
                    lambda a: a.mapping_quality < 1,
                'not in proper pair': \
                    lambda a: a.flag & BamFlag.PROPER_PAIR == 0,
                'qc failed': \
                    lambda a: a.flag & BamFlag.QCFAIL != 0,
                'secondary alignment': \
                    lambda a: a.flag & BamFlag.SECONDARY != 0,
                'supplementary alignment': \
                    lambda a: a.flag & BamFlag.SUPPLEMENTARY != 0,
                    }
    generator = utils.FilteredGenerator(filters)
    for pysam_align, filter_value in generator.filter(pysam_alignments):
        connor_align = ConnorAlign(pysam_align, filter_value)
        if filter_value:
            excluded_writer.write(family=None,
                                  paired_align=None,
                                  connor_align=connor_align)
        else:
            yield connor_align
Exemplo n.º 5
0
    def test_filter_returnsEmptyIfBaseEmpty(self):
        generator = utils.FilteredGenerator({})
        base_collection = []
        actual_collection = [x for x in generator.filter(base_collection)]

        self.assertEqual([], actual_collection)