def test___contains__(self): self.assertTrue(Interval(1, 2) in Interval(1, 7)) self.assertFalse(Interval(1, 7) in Interval(1, 2)) self.assertTrue(Interval(1.0, 2) in Interval(1.0, 7)) self.assertFalse(Interval(1, 7) in Interval(1, 2)) self.assertTrue(1 in Interval(1, 7)) self.assertFalse(0 in Interval(1, 7))
def test_blat_contigs(self): ev = GenomeEvidence( Breakpoint('reference3', 1114, orient=ORIENT.RIGHT), Breakpoint('reference3', 2187, orient=ORIENT.RIGHT), opposing_strands=True, bam_cache=BAM_CACHE, reference_genome=REFERENCE_GENOME, read_length=40, stdev_fragment_size=25, median_fragment_size=100, stdev_count_abnormal=2, min_splits_reads_resolution=1, min_flanking_pairs_resolution=1 ) ev.contigs = [ Contig( 'CTGAGCATGAAAGCCCTGTAAACACAGAATTTGGATTCTTTCCTGTTTGGTTCCTGGTCGTGAGTGGCAGGTGCCATCATGTTTCATTCTGCCTGAGAGCAG' 'TCTACCTAAATATATAGCTCTGCTCACAGTTTCCCTGCAATGCATAATTAAAATAGCACTATGCAGTTGCTTACACTTCAGATAATGGCTTCCTACATATTG' 'TTGGTTATGAAATTTCAGGGTTTTCATTTCTGTATGTTAAT', 0) ] print(ev.contigs[0].seq) seq = align.align_sequences({'seq': ev.contigs[0].seq}, BAM_CACHE, REFERENCE_GENOME, aligner_reference=get_data('mock_reference_genome.2bit'), aligner='blat') print(seq) align.select_contig_alignments(ev, seq) print(ev.contigs[0].alignments) alignment = list(ev.contigs[0].alignments)[0] self.assertEqual(1, alignment.read1.reference_id) self.assertEqual(1, alignment.read2.reference_id) self.assertEqual(Interval(125, 244), align.query_coverage_interval(alignment.read1)) self.assertEqual(Interval(117, 244), align.query_coverage_interval(alignment.read2)) self.assertEqual(1114, alignment.read1.reference_start) self.assertEqual(2187, alignment.read2.reference_start) self.assertEqual([(CIGAR.S, 125), (CIGAR.EQ, 120)], alignment.read1.cigar) self.assertEqual([(CIGAR.S, 117), (CIGAR.EQ, 128)], alignment.read2.cigar)
def test___contains__(self): assert Interval(1, 2) in Interval(1, 7) assert not Interval(1, 7) in Interval(1, 2) assert Interval(1.0, 2) in Interval(1.0, 7) assert not Interval(1, 7) in Interval(1, 2) assert 1 in Interval(1, 7) assert 0 not in Interval(1, 7)
def test_convert_pos_one_to_one(self): mapping = {} for x in range(0, 10): s = x * 10 + 1 mapping[Interval(s, s + 9)] = Interval(s, s + 9) for pos in range(1, 101): assert Interval.convert_pos(mapping, pos) == pos
def test_net_zero(self): bpp = BreakpointPair(Breakpoint('1', 1099, orient=ORIENT.LEFT), Breakpoint('1', 1302, orient=ORIENT.RIGHT), untemplated_seq='TT') dist = partial(TranscriptomeEvidence.distance, self.trans_evidence) self.assertEqual(Interval(-200), bpp.net_size()) self.assertEqual(Interval(0), bpp.net_size(dist))
def test_inversion_and_deletion(self): s = 'CTGAGCATGAAAGCCCTGTAAACACAGAATTTGGATTCTTTCCTGTTTGGTTCCTGGTCGTGAGTGGCAGGTGCCATCATGTTTCATTCTGCCTGAGAGCAGTCTACCTAAATATATAGCTCTGCTCACAGTTTCCCTGCAATGCATAATTAAAATAGCACTATGCAGTTGCTTACACTTCAGATAATGGCTTCCTACATATTGTTGGTTATGAAATTTCAGGGTTTTCATTTCTGTATGTTAAT' evidence = MockObject( interchromosomal=False, opposing_strands=True, break1=MockObject(orient=ORIENT.RIGHT, chr='3'), break2=MockObject(orient=ORIENT.RIGHT, chr='3'), contigs=[MockObject(seq=s, alignments=set())], standardize_read=lambda x: x, contig_aln_max_event_size=DEFAULTS.contig_aln_max_event_size, contig_aln_merge_inner_anchor=5, contig_aln_merge_outer_anchor=DEFAULTS.contig_aln_merge_outer_anchor, contig_aln_min_query_consumption=0.9, contig_aln_min_extend_overlap=DEFAULTS.contig_aln_min_extend_overlap, contig_aln_min_anchor_size=DEFAULTS.contig_aln_min_anchor_size, contig_aln_min_score=DEFAULTS.contig_aln_min_score, outer_window1=Interval(1000, 1200), outer_window2=Interval(2000, 2200), reference_genome=None, bam_cache=mock.Mock(stranded=False) ) read1 = SamRead( reference_id=3, reference_start=1114, cigar=[(CIGAR.S, 125), (CIGAR.EQ, 120)], query_sequence=s, is_reverse=False, reference_name='3', alignment_rank=0 ) read2 = SamRead( reference_id=3, reference_start=2187, cigar=[(CIGAR.S, 117), (CIGAR.EQ, 8), (CIGAR.D, 1), (CIGAR.EQ, 120)], query_sequence=reverse_complement(s), is_reverse=True, reference_name='3', alignment_rank=1 ) raw_alignments = {s: [read1, read2]} align.select_contig_alignments(evidence, raw_alignments) alignments = list(evidence.contigs[0].alignments) self.assertEqual(2, len(alignments))
def test_net_zero(self): transcript = PreTranscript([(1001, 1100), (1301, 1400), (1701, 1800)], strand=STRAND.POS) for patt in transcript.generate_splicing_patterns(): transcript.transcripts.append(Transcript(transcript, patt)) trans_evidence = MockObject( annotations={}, read_length=100, max_expected_fragment_size=550, call_error=11, overlapping_transcripts={transcript}, ) setattr( trans_evidence, '_select_transcripts', lambda *pos: trans_evidence.overlapping_transcripts, ) setattr( trans_evidence, 'distance', partial(TranscriptomeEvidence.distance, trans_evidence), ) bpp = BreakpointPair( Breakpoint('1', 1099, orient=ORIENT.LEFT), Breakpoint('1', 1302, orient=ORIENT.RIGHT), untemplated_seq='TT', ) dist = partial(TranscriptomeEvidence.distance, trans_evidence) assert bpp.net_size() == Interval(-200) assert bpp.net_size(dist) == Interval(0)
def test_intersection(self): interval_list = [Interval(1, 10), Interval(5, 7), Interval(7)] self.assertEqual(Interval(7), Interval.intersection(*interval_list)) interval_list.append(Interval(11)) self.assertEqual(None, Interval.intersection(*interval_list)) with self.assertRaises(AttributeError): Interval.intersection()
def test_merge_large_length(self): i1 = Interval(1001, 5003) result = merge_integer_intervals(i1, i1, weight_adjustment=25) self.assertEqual(i1, result) i1 = Interval(12856838, 12897006) result = merge_integer_intervals(i1, i1, weight_adjustment=25) self.assertEqual(i1, result)
def test_intersection(self): interval_list = [Interval(1, 10), Interval(5, 7), Interval(7)] assert Interval.intersection(*interval_list) == Interval(7) interval_list.append(Interval(11)) assert Interval.intersection(*interval_list) is None with pytest.raises(AttributeError): Interval.intersection()
def test_convert_pos_one_to_one(self): mapping = {} for x in range(0, 10): s = x * 10 + 1 mapping[Interval(s, s + 9)] = Interval(s, s + 9) mapping = IntervalMapping(mapping) for pos in range(1, 101): self.assertEqual(pos, mapping.convert_pos(pos))
def test_reverse_reads(self, genomic_evidence, trans_evidence): read, mate = mock_read_pair( MockRead('name', '1', 1001, 1100, is_reverse=False), MockRead('name', '1', 2201, 2301, is_reverse=True), ) assert genomic_evidence.compute_fragment_size(read, mate) == Interval(1300) assert genomic_evidence.compute_fragment_size(mate, read) == Interval(1300) assert trans_evidence.compute_fragment_size(read, mate) == Interval(1300) assert trans_evidence.compute_fragment_size(mate, read) == Interval(1300)
def test_deletion_in_exon(self): bpp = BreakpointPair(Breakpoint('7', 55238890, orient=ORIENT.LEFT), Breakpoint('7', 55238899, orient=ORIENT.RIGHT), untemplated_seq='') self.assertEqual(Interval(-8), bpp.net_size(self.egfr_distance)) bpp = BreakpointPair(Breakpoint('7', 55238890, orient=ORIENT.LEFT), Breakpoint('7', 55238899, orient=ORIENT.RIGHT), untemplated_seq='GTAC') self.assertEqual(Interval(-4), bpp.net_size(self.egfr_distance))
def test_insertion(self): bpp = BreakpointPair(Breakpoint('1', 11, orient=ORIENT.RIGHT), Breakpoint('1', 10, orient=ORIENT.LEFT), untemplated_seq='T') self.assertEqual(Interval(1), bpp.net_size()) bpp = BreakpointPair(Breakpoint('1', 11, orient=ORIENT.RIGHT), Breakpoint('1', 10, orient=ORIENT.LEFT), untemplated_seq='TT') self.assertEqual(Interval(2), bpp.net_size())
def test_dist(self): x = Interval(1, 4) y = Interval(-1, 0) z = Interval(0, 3) assert Interval.dist(x, y) == 1 assert Interval.dist(y, x) == -1 assert Interval.dist(x, z) == 0 assert Interval.dist(z, x) == 0 assert Interval.dist(y, z) == 0 assert Interval.dist(z, y) == 0 assert Interval.dist((1, 4), (10, 12)) == -6
def test_dist(self): x = Interval(1, 4) y = Interval(-1, 0) z = Interval(0, 3) self.assertEqual(1, Interval.dist(x, y)) self.assertEqual(-1, Interval.dist(y, x)) self.assertEqual(0, Interval.dist(x, z)) self.assertEqual(0, Interval.dist(z, x)) self.assertEqual(0, Interval.dist(y, z)) self.assertEqual(0, Interval.dist(z, y)) self.assertEqual(-6, Interval.dist((1, 4), (10, 12)))
def test_deletion_across_intron(self): # 55240539_55240621 55323947_55324313 bpp = BreakpointPair(Breakpoint('7', 55240610, orient=ORIENT.LEFT), Breakpoint('7', 55323950, orient=ORIENT.RIGHT), untemplated_seq='GTAC') self.assertEqual(Interval(-10), bpp.net_size(self.egfr_distance)) # 55210998_55211181 55218987_55219055 bpp = BreakpointPair(Breakpoint('7', 55211180, orient=ORIENT.LEFT), Breakpoint('7', 55218990, orient=ORIENT.RIGHT), untemplated_seq='') self.assertEqual(Interval(-4 + -135, -4), bpp.net_size(self.egfr_distance))
def test_reverse_reads(self): read, mate = mock_read_pair( MockRead('name', '1', 1001, 1100, is_reverse=False), MockRead('name', '1', 2201, 2301, is_reverse=True)) self.assertEqual(Interval(1300), self.genomic_ev.compute_fragment_size(read, mate)) self.assertEqual(Interval(1300), self.genomic_ev.compute_fragment_size(mate, read)) self.assertEqual(Interval(1300), self.trans_ev.compute_fragment_size(read, mate)) self.assertEqual(Interval(1300), self.trans_ev.compute_fragment_size(mate, read))
def test_convert_pos_ratioed_intervals(self): mapping = { (1.0, 100): (1, 20.0), (101.0, 500): (21.0, 30), (501.0, 600): (31.0, 51), (601.0, 900): (52, 57.0), (901.0, 1100): (58.0, 100) } self.assertEqual(Interval(1), Interval.convert_ratioed_pos(mapping, 1)) self.assertEqual(Interval(20), Interval.convert_ratioed_pos(mapping, 100)) self.assertEqual(Interval(100, 100), Interval.convert_ratioed_pos(mapping, 1100)) mapping = {(1, 100): (1, 1), (101, 500): (21, 30)} self.assertEqual(Interval(1, 1), Interval.convert_ratioed_pos(mapping, 1)) self.assertEqual(Interval(1, 1), Interval.convert_ratioed_pos(mapping, 100)) mapping = {(1, 100.0): (20.0, 30), (100.1, 500): (1.0, 1.0)} self.assertEqual(Interval(1, 1), Interval.convert_ratioed_pos(mapping, 101)) self.assertEqual(Interval(1, 1), Interval.convert_ratioed_pos(mapping, 500)) self.assertEqual(Interval(25, 25), Interval.convert_ratioed_pos(mapping, 50))
def test_generate_gene_mapping_err(self): # _generate_interval_mapping [genomic.IntergenicRegion(11:77361962_77361962+)] 1181.39453125 5 30 None 77356962 77366962) ir = genomic.IntergenicRegion('11', 5000, 5000, STRAND.POS) tgt_width = 1000 d = DiagramSettings() d.gene_min_buffer = 10 # (self, canvas, gene, width, height, fill, label='', reference_genome=None) draw_genes(d, self.canvas, [ir], tgt_width, []) # _generate_interval_mapping ['Interval(29684391, 29684391)', 'Interval(29663998, 29696515)'] 1181.39453125 5 60 None 29662998 29697515 # def generate_interval_mapping(cls, input_intervals, target_width, ratio, min_width, buffer_length=None, start=None, end=None, min_inter_width=None) itvls = [Interval(29684391, 29684391), Interval(29663998, 29696515)] generate_interval_mapping(itvls, 1181.39, 5, 60, None, 29662998, 29697515)
def test_split_overlapping_no_weight(self): input_intervals = [Interval(1, 10), Interval(2, 11), Interval(4, 5), Interval(4, 8)] exp = [ Interval(1, 1), Interval(2, 3), Interval(4, 4), Interval(5, 7), Interval(8, 9), Interval(10, 11), ] print('expected', exp) result = Interval.split_overlap(*input_intervals) result = sorted(result) print('found', result) self.assertEqual(exp, result)
def test_bwa_contigs(self): ev = GenomeEvidence( Breakpoint('reference3', 1114, orient=ORIENT.RIGHT), Breakpoint('reference3', 2187, orient=ORIENT.RIGHT), opposing_strands=True, bam_cache=BAM_CACHE, reference_genome=REFERENCE_GENOME, read_length=40, stdev_fragment_size=25, median_fragment_size=100, config={ 'validate.stdev_count_abnormal': 2, 'validate.min_splits_reads_resolution': 1, 'validate.min_flanking_pairs_resolution': 1, }, ) ev.contigs = [ Contig( 'CTGAGCATGAAAGCCCTGTAAACACAGAATTTGGATTCTTTCCTGTTTGGTTCCTGGTCGTGAGTGGCAGGTGCCATCATGTTTCATTCTGCCTGAGAGCAG' 'TCTACCTAAATATATAGCTCTGCTCACAGTTTCCCTGCAATGCATAATTAAAATAGCACTATGCAGTTGCTTACACTTCAGATAATGGCTTCCTACATATTG' 'TTGGTTATGAAATTTCAGGGTTTTCATTTCTGTATGTTAAT', 0, ) ] print(ev.contigs[0].seq) seq = align.align_sequences( {'seq': ev.contigs[0].seq}, BAM_CACHE, REFERENCE_GENOME, aligner_reference=get_data('mock_reference_genome.fa'), aligner='bwa mem', aligner_output_file='mem.out', aligner_fa_input_file='mem.in.fa', ) align.select_contig_alignments(ev, seq) print(ev.contigs[0].alignments) alignment = list(ev.contigs[0].alignments)[0] assert alignment.read2.query_sequence == reverse_complement(alignment.read1.query_sequence) assert alignment.read1.reference_name == 'reference3' assert alignment.read2.reference_name == 'reference3' assert alignment.read1.reference_id == 1 assert alignment.read2.reference_id == 1 assert align.query_coverage_interval(alignment.read1) == Interval(125, 244) assert align.query_coverage_interval(alignment.read2) == Interval(117, 244) assert alignment.read1.reference_start == 1114 assert alignment.read2.reference_start == 2187 assert alignment.read1.cigar == [(CIGAR.S, 125), (CIGAR.EQ, 120)] assert alignment.read2.cigar == [(CIGAR.S, 117), (CIGAR.EQ, 128)]
def test_pslx_row_to_pysam_single_block(self): pslx_row = { 'score': 20, 'tseqs': ['AATACCAAATACATGATATA'], 'tstarts': [3432307], 'tstart': 3432307, 'block_sizes': [20], 'qname': 'seq1', 'tname': 'Y', 'qstarts': [93], 'strand': '+', 'qseqs': ['AATACCATACATGATATA'], 'percent_ident': 100.0, 'qseq_full': 'AGCCTCCCAAGTAGCTGGGACTACAGGCGCCCGCCACTACGCCCGGCTAATTTTTTGTATTTTTAGTAGAGACGGGGTTTCACCGTTTT' 'AGCCAGGATGGTCTCGATCTCCTGACCTCATGATCCGCCCGCCTCGGC', } read = Blat.pslx_row_to_pysam(pslx_row, self.cache, None) self.assertEqual(23, read.reference_id) self.assertEqual(Interval(93, 112), query_coverage_interval(read))
def test_pslx_row_to_pysam_duplication(self): reference = { '14': MockObject(seq=MockLongString( 'TTCTTCCATGCCCCCTAATCATGGCCACATTGTATCAGCCTGAGCATGAGCAACAGCACCATGGCCACATACGGGAATGGGCCTCATTGGTGTAATATTTGGCAGATTCTCTCCACACCCCCCGTGGCGGTCTGGCTTACTGTTAAGAAGGGTAACCTTAAAAAATACATTTCCCACTCCAGAAAATACTCATATGTGGCCTGTTAGCAGCACAAGAAGGGTGAAAGCAATGCCCATTCCTGCCTCCCTCCCCCTGCTCACCTCCACGTCCCTGTTTGCCCCTTTGTAGGTGAAGTGAGTATATTCAGCGTCTTCATGGCAGGGGAGAGGGTGTATTAATCCGTCTATGTCCGCTGGAAAGGCAGTCTCTGAGCGGGCCACAAGGGTTCAGCCATGGCCCATCCAATAACCTTTTTGATGACTTGGATGAAGAGACAAACATTCCAACCACATTCAAAGATCCAGACCTCCAAAGTGTGGCTCATTTGGTAGATAATGGAATTATATTTGGAAAGCATTTCCCGCAGCTGGGATGATGGGTCAAAAACAGATAGCATTTTACCAGATCATATTTGTGTGTGTGTGTGTGCGCGCGTGTGTGTGTGTGTGTGTGTGTGTTTTAAATTCAGTTTCCCAACTACAGGATG', offset=73014463, )) } pslx_row = { 'block_count': 2, 'tstarts': [73014606, 73014747], 'block_sizes': [141, 30], 'qname': '', 'tname': '14', 'qstarts': [0, 239], 'strand': '+', 'qseq_full': 'AAGAAGGGTAACCTTAAAAAATACATTTCCCACTCCAGAAAATACTCATATGTGGCCTGTTAGCAGCACAAGAAGGGTGAAAGCAATGCCCATTCCTGCCTCCCTCCCCCTGCTCACCTCCACGTCCCTGTTTGCCCCTTTACTCATATGTGGCCTGTTAGCAGCACAAGAAGGGTGAAAGCAATGCCCATTCCTGCCTCCCTCCCCCTGCTCACCTCCACGTCCCTGTTTGCCCCTTTGTAGGTGAAGTGAGTATATTCAGCGTCTTC', 'score': 1, } read2 = Blat.pslx_row_to_pysam(pslx_row, self.cache, reference) self.assertEqual(13, read2.reference_id) self.assertEqual(73014606, read2.reference_start) self.assertEqual([(CIGAR.M, 141), (CIGAR.I, 98), (CIGAR.M, 30)], _cigar.convert_for_igv(read2.cigar)) self.assertEqual(Interval(0, len(pslx_row['qseq_full']) - 1), query_coverage_interval(read2))
def test_pslx_row_to_pysam_gapped_alignment_with_reference(self): pslx_row = { 'block_count': 1, 'tstarts': [950, 7233], 'block_sizes': [47, 100], 'qname': 'seq1', 'tname': 'fake', 'qstarts': [0, 47], 'strand': '+', 'qseq_full': 'ATCTAATAACTTGATCAATA' 'TCTGTGATTATATTTTCATT' 'GCCTTCC' 'AATTTTGCAGATTATAAGAT' 'CAATAGATATTTATTGTAAA' 'ATGCACAAATAGTGCAACAT' 'TTCTTAAAGTAGACCGTGAA' 'ATACTTCATGTTGCCATGTT', 'score': 1, } read = Blat.pslx_row_to_pysam(pslx_row, self.cache, REFERENCE_GENOME) self.assertEqual(0, read.reference_id) self.assertEqual(Interval(0, 146), query_coverage_interval(read)) self.assertEqual(950, read.reference_start) self.assertEqual([(CIGAR.EQ, 53), (CIGAR.D, 6236), (CIGAR.EQ, 94)], read.cigar)
def test_blat_contigs_deletion_revcomp(self): ev = GenomeEvidence(Breakpoint('fake', 1714, orient=ORIENT.LEFT), Breakpoint('fake', 2968, orient=ORIENT.RIGHT), opposing_strands=False, bam_cache=BAM_CACHE, reference_genome=REFERENCE_GENOME, read_length=40, stdev_fragment_size=25, median_fragment_size=100) seq = 'GGTATATATTTCTCAGATAAAAGATATTTTCCCTTTTATCTTTCCCTAAGCTCACACTACATATATTGCATTTATCTTATATCTGCTTTAAAACCTATTTAT' \ 'TATGTCATTTAAATATCTAGAAAAGTTATGACTTCACCAGGTATGAAAAATATAAAAAGAACTCTGTCAAGAAT' ev.contigs = [Contig(reverse_complement(seq), 0)] align.select_contig_alignments( ev, align.align_sequences({'seq': ev.contigs[0].seq}, BAM_CACHE, REFERENCE_GENOME, aligner_reference=REFERENCE_GENOME_FILE_2BIT, aligner='blat')) print('alignments:', ev.contigs[0].alignments) alignment = list(ev.contigs[0].alignments)[0] print(alignment) self.assertTrue(alignment.read2 is None) self.assertEqual(0, alignment.read1.reference_id) self.assertTrue(alignment.read1.is_reverse) self.assertEqual(seq, alignment.read1.query_sequence) self.assertEqual(Interval(0, 175), align.query_coverage_interval(alignment.read1)) self.assertEqual(1612, alignment.read1.reference_start) self.assertEqual([(CIGAR.EQ, 102), (CIGAR.D, 1253), (CIGAR.EQ, 74)], alignment.read1.cigar)
def test_deletion_in_exon(self, egfr_evidence): bpp = BreakpointPair( Breakpoint('7', 55238890, orient=ORIENT.LEFT), Breakpoint('7', 55238899, orient=ORIENT.RIGHT), untemplated_seq='', ) assert bpp.net_size(lambda p1, p2: TranscriptomeEvidence.distance( egfr_evidence, p1, p2)) == Interval(-8) bpp = BreakpointPair( Breakpoint('7', 55238890, orient=ORIENT.LEFT), Breakpoint('7', 55238899, orient=ORIENT.RIGHT), untemplated_seq='GTAC', ) assert bpp.net_size(lambda p1, p2: TranscriptomeEvidence.distance( egfr_evidence, p1, p2)) == Interval(-4)
def test_blat_contigs_deletion(self): ev = GenomeEvidence( Breakpoint('fake', 1714, orient=ORIENT.LEFT), Breakpoint('fake', 2968, orient=ORIENT.RIGHT), opposing_strands=False, bam_cache=BAM_CACHE, reference_genome=REFERENCE_GENOME, read_length=40, stdev_fragment_size=25, median_fragment_size=100 ) ev.contigs = [ Contig( 'GGTATATATTTCTCAGATAAAAGATATTTTCCCTTTTATCTTTCCCTAAGCTCACACTACATATATTGCATTTATCTTATATCTGCTTTAAAACCTATTTAT' 'TATGTCATTTAAATATCTAGAAAAGTTATGACTTCACCAGGTATGAAAAATATAAAAAGAACTCTGTCAAGAAT', 0) ] seq = align.align_sequences({'seq': ev.contigs[0].seq}, BAM_CACHE, REFERENCE_GENOME, aligner_reference=get_data('mock_reference_genome.2bit'), aligner='blat') for query, reads in seq.items(): print('>>>', query) for read in reads: print(repr(read)) align.select_contig_alignments(ev, seq) alignments = list(ev.contigs[0].alignments) print('alignments:') for aln in alignments: print(aln, repr(aln.read1), repr(aln.read2)) self.assertEqual(1, len(alignments)) alignment = alignments[0] self.assertTrue(alignment.read2 is None) self.assertEqual(0, alignment.read1.reference_id) self.assertTrue(not alignment.read1.is_reverse) self.assertEqual(Interval(0, 175), align.query_coverage_interval(alignment.read1)) self.assertEqual(1612, alignment.read1.reference_start) self.assertEqual([(CIGAR.EQ, 102), (CIGAR.D, 1253), (CIGAR.EQ, 74)], alignment.read1.cigar)
def test_single_bp_dup(self): transcript = fusion.FusionTranscript() transcript.position = Interval(1, 500) transcript.exons = [ genomic.Exon(1, 7, transcript=transcript, intact_end_splice=False), genomic.Exon(8, 8, transcript=transcript, intact_start_splice=False, intact_end_splice=False), genomic.Exon(9, 100, transcript=transcript, intact_start_splice=False), genomic.Exon(200, 500, transcript=transcript), ] cfg = DiagramSettings(width=1500) canvas = Drawing(size=(cfg.width, 1000)) drawing_width = cfg.width - cfg.label_left_margin - cfg.left_margin - cfg.right_margin canvas.add( draw_ustranscript(cfg, canvas, transcript, target_width=drawing_width)) if OUTPUT_SVG: canvas.saveas('test_single_bp_dup.svg')
def test_single_bp_ins_exon(self): transcript = fusion.FusionTranscript() transcript.position = Interval(401258, 408265) transcript.exons = [ genomic.Exon(401258, 401461, transcript=transcript), genomic.Exon(404799, 405254, intact_end_splice=False, transcript=transcript), genomic.Exon( 405255, 405255, intact_start_splice=False, intact_end_splice=False, transcript=transcript, ), genomic.Exon(405256, 408265, intact_start_splice=False, transcript=transcript), ] cfg = DiagramSettings(width=1500) canvas = Drawing(size=(cfg.width, 1000)) drawing_width = cfg.width - cfg.label_left_margin - cfg.left_margin - cfg.right_margin canvas.add( draw_ustranscript(cfg, canvas, transcript, target_width=drawing_width)) if OUTPUT_SVG: canvas.saveas('test_single_bp_ins_exon.svg')