コード例 #1
0
    def test_color_conversions(self):
        """Test color translations."""
        translator = ColorTranslator()

        # Does the translate method correctly convert the passed argument?
        self.assertEqual(
            translator.float1_color((0.5, 0.5, 0.5)),
            translator.translate((0.5, 0.5, 0.5)),
            "Did not correctly translate colour from floating point RGB tuple",
        )
        self.assertEqual(
            translator.int255_color((1, 75, 240)),
            translator.translate((1, 75, 240)),
            "Did not correctly translate colour from integer RGB tuple",
        )
        self.assertEqual(
            translator.artemis_color(7),
            translator.translate(7),
            "Did not correctly translate colour from Artemis colour scheme",
        )
        self.assertEqual(
            translator.scheme_color(2),
            translator.translate(2),
            "Did not correctly translate colour from user-defined colour scheme",
        )
コード例 #2
0
    def test_color_conversions(self):
        """Test color translations."""
        translator = ColorTranslator()

        # Does the translate method correctly convert the passed argument?
        assert translator.float1_color((0.5, 0.5, 0.5)) == translator.translate((0.5, 0.5, 0.5)), \
            "Did not correctly translate colour from floating point RGB tuple"
        assert translator.int255_color((1, 75, 240)) == translator.translate((1, 75, 240)), \
            "Did not correctly translate colour from integer RGB tuple"
        assert translator.artemis_color(7) == translator.translate(7), \
            "Did not correctly translate colour from Artemis colour scheme"
        assert translator.scheme_color(2) == translator.translate(2), \
            "Did not correctly translate colour from user-defined colour scheme"
コード例 #3
0
def draw_by_bio(info, cates, long_intervals, seqlen, filename):
    import diagram as _dia
    reload(_dia)
    diagram = _dia.Diagram('Test Diagram')

    inner_colors, outer_colors = read_colors()
    if len(cates) > len(outer_colors):
        raise Exception('outer_colors num: %s, cannot satisfy category num: %s' % (len(outer_colors), len(cates)))
    color_map = zip(cates, outer_colors)
    color_trans = ColorTranslator()
    color_name_pairs = [(color_trans.translate(t[1]), t[0]) for t in color_map]
    color_map = dict(color_map)

    def _add_feats(feature_set, i, width=3, minimal_angle_margin=20):
        loc, concur_cates = info[i]
        concur_cates = concur_cates.keys()
        concur_num = len(concur_cates)

        # -------- calc width --------
        prev = 0
        if i > 0:
            prev = info[i - 1][0]

        next = seqlen
        if i < len(info) - 1:
            next = info[i + 1][0]

        width = min((next - prev) / concur_num, width)
        if width < 1:
            raise Exception('too narrow')

        # -------- add feature --------
        if concur_num > 1:
            angle_sum = (concur_num - 1) * minimal_angle_margin
            assert angle_sum < 180
            angle_slice = angle_sum / (concur_num - 1)

        def _add_feat(cate_i):
            color = color_map[concur_cates[cate_i]]
            start = loc  # - (cate_i - concur_num / 2) * width
            end = start + width
            feat = SeqFeature(FeatureLocation(start, end, strand=1))
            titled_angle = 0
            if concur_num > 1:
                titled_angle = cate_i * angle_slice - angle_sum / 2
            feature_set.add_feature(feat, color=color, tilted_angle=titled_angle)

        [_add_feat(cate_i) for cate_i in xrange(concur_num)]

    def _add_intervals(feature_set, i):
        start, end = long_intervals[i]
        feat = SeqFeature(FeatureLocation(start, end, strand=-1))
        color = inner_colors[i % len(inner_colors)]
        feature_set.add_feature(feat, color=color)

    def _add(track):
        feature_set = track.new_set()
        [_add_feats(feature_set, i, 1) for i in xrange(len(info))]
        if long_intervals is not None:
            [_add_intervals(feature_set, i) for i in xrange(len(long_intervals))]

    def _track(track_level):
        track = diagram.new_track(track_level, greytrack=False)
        _add(track)

    _track(1)

    diagram.draw(format='circular', circular=True, pagesize=(8 * cm, 8 * cm), fragments=1, orientation='portrait',
                 start=0, end=seqlen, circle_core=.7, inner_circle_core=1, color_name_pairs=color_name_pairs)
    diagram.write("%s.svg" % filename, "svg")
    text = u'输出为%s.svg' % filename
    print text.encode(codec)
コード例 #4
0
    pagesize = pagesizes.A4
    height, width = pagesize

    if len(args) == 0:
        print("Found nothing to draw")
        sys.exit()

    d = Drawing(width, height)
    margin = 0.5 * inch
    metadatanames = {}
    namecolours = {}
    colour_dict = []
    my_tracks = {}

    #create translator object for translating artemis colours to GenomeDiagram colours
    translator = ColorTranslator()
    track_count = 0
    tree_positions = []
    track_names = {}
    input_order = []

    for arg in args[::-1]:
        if arg.lower() in ["tree", "list"]:
            input_order.append(arg.lower())
            continue
        if arg.split('.')[-1].lower() in [
                "plot", "hist", "heat", "bar", "line", "graph", "area", "embl",
                "gb", "tab", "bam", "fas", "fasta", "mfa", "dna", "fst",
                "phylip", "phy", "nexus", "nxs"
        ]: