コード例 #1
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')
コード例 #2
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')
コード例 #3
0
    def test_draw_consec_exons(self):
        d = DiagramSettings()
        # domains = [protein.Domain()]
        t = build_transcript(
            gene=None,
            cds_start=50,
            cds_end=249,
            exons=[(1, 99), (200, 299), (300, 350), (400, 499)],
            strand=STRAND.POS,
            domains=[],
        )
        b = Breakpoint('1', 350, 410, orient=ORIENT.LEFT)
        g = draw_ustranscript(d,
                              self.canvas,
                              t,
                              500,
                              colors={t.exons[1]: '#FFFF00'},
                              breakpoints=[b])
        self.canvas.add(g)
        if OUTPUT_SVG:
            self.canvas.saveas('test_draw_consec_exons.svg')

        # self.canvas.saveas('test_draw_ustranscript.svg')
        self.assertEqual(2, len(self.canvas.elements))
        self.assertEqual(3, len(g.elements))
        # check that only 2 splicing marks were created
        self.assertEqual(2, len(g.elements[0].elements[0].elements))
        # get the second exon
        ex2 = g.elements[0].elements[1].elements[2].elements[0]
        print(ex2)
        self.assertAlmostEqual(120.7783426339, ex2.attribs.get('width'))
        # get the third exon
        ex3 = g.elements[0].elements[1].elements[3].elements[0]
        print(ex3)
        self.assertAlmostEqual(96.52494419642852, ex3.attribs.get('width'))
コード例 #4
0
    def test_draw_consec_exons(self, canvas):
        d = DiagramSettings(domain_name_regex_filter=r'.*')
        # domains = [protein.Domain()]
        t = build_transcript(
            gene=None,
            cds_start=50,
            cds_end=249,
            exons=[(1, 99), (200, 299), (300, 350), (400, 499)],
            strand=STRAND.POS,
            domains=[],
        )
        b = Breakpoint('1', 350, 410, orient=ORIENT.LEFT)
        g = draw_ustranscript(d,
                              canvas,
                              t,
                              500,
                              colors={t.exons[1]: '#FFFF00'},
                              breakpoints=[b])
        canvas.add(g)
        if OUTPUT_SVG:
            canvas.saveas('test_draw_consec_exons.svg')

        # canvas.saveas('test_draw_ustranscript.svg')
        assert len(canvas.elements) == 2
        assert len(g.elements) == 3
        # check that only 2 splicing marks were created
        assert len(g.elements[0].elements[0].elements) == 2
        # get the second exon
        ex2 = g.elements[0].elements[1].elements[2].elements[0]
        print(ex2)
        assert pytest.approx(ex2.attribs.get('width')) == 120.7783426339
        # get the third exon
        ex3 = g.elements[0].elements[1].elements[3].elements[0]
        print(ex3)
        assert pytest.approx(ex3.attribs.get('width')) == 96.52494419642852
コード例 #5
0
    def test_draw_ustranscript(self):
        d = DiagramSettings()
        # domains = [protein.Domain()]
        d1 = protein.Domain('first', [(55, 61), (71, 73)])
        d2 = protein.Domain('second', [(10, 20), (30, 34)])

        t = build_transcript(
            gene=None,
            cds_start=50,
            cds_end=249,
            exons=[(1, 99), (200, 299), (400, 499)],
            strand=STRAND.NEG,
            domains=[d2, d1],
        )
        b = Breakpoint('1', 350, 410, orient=ORIENT.LEFT)
        g = draw_ustranscript(d,
                              self.canvas,
                              t,
                              500,
                              colors={t.exons[1]: '#FFFF00'},
                              breakpoints=[b])
        self.canvas.add(g)
        # self.canvas.saveas('test_draw_ustranscript.svg')
        self.assertEqual(2, len(self.canvas.elements))
        self.assertEqual(3, len(g.elements))
        for el, cls in zip(g.elements[0].elements,
                           ['splicing', 'exon_track', 'protein']):
            self.assertEqual(cls, el.attribs.get('class', ''))

        for el, cls in zip(g.elements[0].elements[1].elements,
                           ['scaffold', 'exon', 'exon', 'exon']):
            self.assertEqual(cls, el.attribs.get('class', ''))

        for el, cls in zip(g.elements[0].elements[2].elements,
                           ['translation', 'domain', 'domain']):
            self.assertEqual(cls, el.attribs.get('class', ''))

        self.assertEqual(
            sum([
                d.track_height,
                d.splice_height,
                2 * d.padding,
                d.domain_track_height * 2,
                d.translation_track_height,
                d.padding,
                d.breakpoint_top_margin,
                d.breakpoint_bottom_margin,
            ]),
            g.height,
        )
        self.assertEqual(d1.name, g.labels['D1'])
        self.assertEqual(d2.name, g.labels['D2'])
コード例 #6
0
 def test_two_exon_transcript(self):
     transcript = fusion.FusionTranscript()
     transcript.position = Interval(1, 555)
     transcript.exons = [
         genomic.Exon(55820038, 55820969, transcript=transcript),
         genomic.Exon(55820971, 55820976, transcript=transcript),
     ]
     transcript.exon_mapping[Interval(55820971, 55820976)] = MockObject(
         transcript=MockObject(exon_number=lambda *x: 2))
     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_two_exon_transcript.svg')