Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
 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))
Exemplo n.º 6
0
 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))
Exemplo n.º 7
0
    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)
Exemplo n.º 8
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()
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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()
Exemplo n.º 11
0
 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))
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
    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))
Exemplo n.º 14
0
    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())
Exemplo n.º 15
0
 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
Exemplo n.º 16
0
 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)))
Exemplo n.º 17
0
 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))
Exemplo n.º 18
0
 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))
Exemplo n.º 19
0
    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))
Exemplo n.º 20
0
    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)
Exemplo n.º 21
0
 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)
Exemplo n.º 22
0
 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)]
Exemplo n.º 23
0
 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))
Exemplo n.º 24
0
 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))
Exemplo n.º 25
0
 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)
Exemplo n.º 26
0
 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)
Exemplo n.º 27
0
    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)
Exemplo n.º 28
0
 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)
Exemplo n.º 29
0
 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')
Exemplo n.º 30
0
    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')