Esempio n. 1
0
    def test_error_open_bamfile(self):
        """
        Provide onyl file with no content - error shoud be raised.
        """
        bam_fname = get_temp_file_name()

        message = r"Error opening BAM file: .*"
        with self.assertRaisesRegex(ValueError, message):
            xlsites._processs_bam_file(bam_fname, self.metrics, 50, self.tmp)
Esempio n. 2
0
    def test_no_nh_tag(self):
        data_no_nh = {
            'chromosomes': [('chr1', 3000)],
            'segments': [
                # No NH tag is set
                ('name5', 0, 0, 0, 50, [(0, 0)], {})
            ]
        }
        bam_fname = make_bam_file(data_no_nh)

        message = r'"NH" tag not set for record: .*'
        with self.assertRaisesRegex(ValueError, message):
            xlsites._processs_bam_file(bam_fname, self.metrics, 10, self.tmp)
Esempio n. 3
0
 def test_low_quality(self):
     """
     Unmapped read (FLAG=4):
     """
     bam_fname = make_bam_file({
         'chromosomes': [('chr1', 3000)],
         'segments': [('name1', 0, 0, 0, 3, [(0, 0)], {})],
     })
     self.metrics.lowmapq_recs = 0
     self.metrics.used_recs = 0
     xlsites._processs_bam_file(bam_fname, self.metrics, 10, self.tmp)
     self.assertEqual(self.metrics.lowmapq_recs, 1)
     self.assertEqual(self.metrics.used_recs, 0)
Esempio n. 4
0
    def test_pos_neg_strand(self):
        """
        positive, negative strnad
        len %2 == 0  na negativnem stnadu
        and not %2
        """
        bam_fname = make_bam_file({
            'chromosomes': [('chr1', 3000)],
            'segments': [
                # (qname, flag, refname, pos, mapq, cigar, tags)
                ('_:rbc:AAA', 16, 0, 50, 255, [(0, 100)], {
                    'NH': 1
                }),
                ('_:rbc:CCC', 0, 0, 50, 255, [(0, 101)], {
                    'NH': 1
                }),
            ],
        })
        grouped = xlsites._processs_bam_file(bam_fname, self.metrics, 10,
                                             self.tmp)

        expected = {
            ('chr1', '-'): {
                150: {
                    'AAA': [(99, 50, 100, 1, 0)]
                }
            },
            ('chr1', '+'): {
                49: {
                    'CCC': [(100, 150, 101, 1, 0)]
                }
            },
        }
        self.assertEqual(grouped, expected)
Esempio n. 5
0
    def test_diff_barcodes(self):
        """
        Different barcodes on same position.
        """
        bam_fname = make_bam_file({
            'chromosomes': [('chr1', 3000)],
            'segments': [
                # (qname, flag, refname, pos, mapq, cigar, tags)
                ('_:rbc:AAA', 0, 0, 50, 255, [(0, 101)], {'NH': 1}),
                ('_:rbc:CCC', 0, 0, 50, 255, [(0, 101)], {'NH': 1}),
                ('_:rbc:CCC', 0, 0, 50, 255, [(0, 101)], {'NH': 1}),
                ('_:rbc:GGG', 0, 0, 50, 255, [(0, 101)], {'NH': 1}),
            ],
        }, rnd_seed=0)
        grouped = list(xlsites._processs_bam_file(bam_fname, self.metrics, 10, self.tmp))

        expected = [
            (('chr1', '+'), 0.0167, {
                49: {
                    'AAA': [(100, 150, 101, 1, 0)],
                    'CCC': [(100, 150, 101, 1, 0), (100, 150, 101, 1, 0)],
                    'GGG': [(100, 150, 101, 1, 0)],
                }
            }),
        ]
        self.assertEqual(grouped, expected)
Esempio n. 6
0
 def test_unmapped(self):
     """
     Unmapped read (FLAG=4):
     """
     bam_fname = make_bam_file({
         'chromosomes': [('chr1', 3000)],
         'segments': [('name1', 4, 0, 0, 0, [(0, 0)], {})],
     }, rnd_seed=0)
     self.metrics.all_recs = 0
     self.metrics.notmapped_recs = 0
     self.metrics.used_recs = 0
     list(xlsites._processs_bam_file(bam_fname, self.metrics, 0, self.tmp))
     self.assertEqual(self.metrics.notmapped_recs, 1)
     self.assertEqual(self.metrics.all_recs, 1)
     self.assertEqual(self.metrics.used_recs, 0)