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", )
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"
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)
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" ]: