コード例 #1
0
ファイル: glyph.py プロジェクト: fw1121/jcvi
    def assign_colors(self, k):
        from matplotlib.colors import rgb2hex

        colorset = get_map('Paired', 'qualitative', k).mpl_colors
        colorset = [rgb2hex(x) for x in colorset]
        cs = colorset + ['w'] * (self.n - k - 1)
        shuffle(cs)
        self.colors = cs[:self.n / 2] + ['k'] + cs[self.n / 2:]
        lf, p, rf = self.find_k()
        self.exchange(lf, p - 2)
        self.exchange(rf, p + 2)
コード例 #2
0
ファイル: glyph.py プロジェクト: sajjadasaf/jcvi
    def assign_colors(self, k):
        from matplotlib.colors import rgb2hex

        colorset = get_map("Paired", "qualitative", k).mpl_colors
        colorset = [rgb2hex(x) for x in colorset]
        cs = colorset + ["w"] * (self.n - k - 1)
        shuffle(cs)
        self.colors = cs[:self.n / 2] + ["k"] + cs[self.n / 2:]
        lf, p, rf = self.find_k()
        self.exchange(lf, p - 2)
        self.exchange(rf, p + 2)
コード例 #3
0
ファイル: coverage.py プロジェクト: Hensonmw/jcvi
    def __init__(self, fig, root, canvas, chr, xlim, datadir,
                 order=None, hlsuffix=None, palette=None, cap=50,
                 gauge="bottom", plot_label=True, plot_chr_label=True,
                 gauge_step=5000000, vlines=None, labels_dict={},
                 diverge=('r', 'g')):
        x, y, w, h = canvas
        p = .01
        root.add_patch(Rectangle((x - p, y - p), w + 2 * p, h + 2 * p, lw=1,
                        fill=False, ec="darkslategray", zorder=10))
        datafiles = glob(op.join(datadir, chr + "*"))

        if order:
            datafiles = [z for z in datafiles if z.split(".")[1] in order]
            datafiles.sort(key=lambda x: order.index(x.split(".")[1]))

        ntracks = len(datafiles)
        yinterval = h / ntracks
        yy = y + h

        if palette is None:
            # Get the palette
            set2 = get_map('Set2', 'qualitative', ntracks).mpl_colors
        else:
            set2 = [palette] * ntracks

        if gauge == "top":
            gauge_ax = fig.add_axes([x, yy + p, w, .0001])
            adjust_spines(gauge_ax, ["top"])
            tpos = yy + .07
        elif gauge == "bottom":
            gauge_ax = fig.add_axes([x, y - p, w, .0001])
            adjust_spines(gauge_ax, ["bottom"])
            tpos = y - .07

        start, end = xlim
        if gauge:
            fs = gauge_step < 1000000
            setup_gauge_ax(gauge_ax, start, end, gauge_step, float_formatter=fs)

        if plot_chr_label:
            root.text(x + w / 2, tpos, chr, ha="center", va="center",
                      color="darkslategray", size=16)

        yys = []
        for label, datafile, c in zip(order, datafiles, set2):
            yy -= yinterval
            yys.append(yy)
            ax = fig.add_axes([x, yy, w, yinterval * .9])
            xy = XYtrack(ax, datafile, color=c)
            xy.interpolate(end)
            xy.cap(ymax=cap)
            if vlines:
                xy.vlines(vlines)
            if hlsuffix:
                hlfile = op.join(datadir, ".".join((label, hlsuffix)))
                xy.import_hlfile(hlfile, chr, diverge=diverge)
            if plot_label:
                label = labels_dict.get(label, label.capitalize())
                label = r"\textit{{{0}}}".format(label)
                root.text(x - .015, yy + yinterval / 2, label,
                            ha="right", va="center")
            xy.draw()
            ax.set_xlim(*xlim)

        self.yys = yys
コード例 #4
0
    def __init__(self,
                 fig,
                 root,
                 canvas,
                 chr,
                 xlim,
                 datadir,
                 order=None,
                 hlsuffix=None,
                 palette=None,
                 cap=50,
                 gauge="bottom",
                 plot_label=True,
                 plot_chr_label=True,
                 gauge_step=5000000,
                 vlines=None,
                 labels_dict={},
                 diverge=('r', 'g')):
        x, y, w, h = canvas
        p = .01
        root.add_patch(
            Rectangle((x - p, y - p),
                      w + 2 * p,
                      h + 2 * p,
                      lw=1,
                      fill=False,
                      ec="darkslategray",
                      zorder=10))
        datafiles = glob(op.join(datadir, chr + "*"))

        if order:
            datafiles = [z for z in datafiles if z.split(".")[1] in order]
            datafiles.sort(key=lambda x: order.index(x.split(".")[1]))

        ntracks = len(datafiles)
        yinterval = h / ntracks
        yy = y + h

        if palette is None:
            # Get the palette
            set2 = get_map('Set2', 'qualitative', ntracks).mpl_colors
        else:
            set2 = [palette] * ntracks

        if gauge == "top":
            gauge_ax = fig.add_axes([x, yy + p, w, .0001])
            adjust_spines(gauge_ax, ["top"])
            tpos = yy + .07
        elif gauge == "bottom":
            gauge_ax = fig.add_axes([x, y - p, w, .0001])
            adjust_spines(gauge_ax, ["bottom"])
            tpos = y - .07

        start, end = xlim
        if gauge:
            fs = gauge_step < 1000000
            setup_gauge_ax(gauge_ax,
                           start,
                           end,
                           gauge_step,
                           float_formatter=fs)

        if plot_chr_label:
            root.text(x + w / 2,
                      tpos,
                      chr,
                      ha="center",
                      va="center",
                      color="darkslategray",
                      size=16)

        yys = []
        for label, datafile, c in zip(order, datafiles, set2):
            yy -= yinterval
            yys.append(yy)
            ax = fig.add_axes([x, yy, w, yinterval * .9])
            xy = XYtrack(ax, datafile, color=c)
            xy.interpolate(end)
            xy.cap(ymax=cap)
            if vlines:
                xy.vlines(vlines)
            if hlsuffix:
                hlfile = op.join(datadir, ".".join((label, hlsuffix)))
                xy.import_hlfile(hlfile, chr, diverge=diverge)
            if plot_label:
                label = labels_dict.get(label, label.capitalize())
                label = r"\textit{{{0}}}".format(label)
                root.text(x - .015,
                          yy + yinterval / 2,
                          label,
                          ha="right",
                          va="center")
            xy.draw()
            ax.set_xlim(*xlim)

        self.yys = yys