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)
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)
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)
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)
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)
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)