Пример #1
0
def heat_score(conf, dur, filename):
    import numpy as np
    length = config.str2dur(dur)
    dirname = conf.get("changepoint", "temp_cp_data")
    cpd = ChangePointData(dirname)
    cpd.load()
    cpd_top_dt, cpd_end_dt = cpd.term()
    top_dt = cpd_end_dt - length
    if top_dt < cpd.term()[0]:
        top_dt = cpd.term()[0]
    end_dt = cpd_end_dt

    result = []
    for evdef in cpd.iter_evdef():
        l_label, l_data, l_score = zip(*cpd.get(evdef, top_dt, end_dt))
        result.append(l_score)
    else:
        xlen = len(l_label)
        ylen = cpd.len_evdef()
    data = np.array(result)
    #data = np.array([[np.log(float(score)) for score in l_score]
    #        for l_score in result])

    length = len(l_label)
    print xlen
    print ylen
    x, y = np.meshgrid(np.arange(xlen + 1), np.arange(ylen + 1))
    print x
    print y

    import matplotlib
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    import explot
    import matplotlib.colors
    cm = explot.generate_cmap(["orangered", "white"])
    #plt.pcolormesh(x, y, data, cmap = cm)
    plt.pcolormesh(x,
                   y,
                   data,
                   norm=matplotlib.colors.LogNorm(vmin=max(data.min(), 1.0),
                                                  vmax=data.max()),
                   cmap=cm)
    xt_v, xt_l = explot.dt_ticks((0, xlen), (top_dt, end_dt),
                                 cpd.binsize(),
                                 recent=True)
    #import pdb; pdb.set_trace()
    plt.xticks(xt_v, xt_l, rotation=336)
    plt.xlim(xmax=xlen)
    plt.ylim(ymax=ylen)
    plt.colorbar()
    plt.savefig(filename)
Пример #2
0
def heat_score(conf, dur, filename):
    import numpy as np
    length = config.str2dur(dur)
    dirname = conf.get("changepoint", "temp_cp_data")
    cpd = ChangePointData(dirname)
    cpd.load()
    cpd_top_dt, cpd_end_dt = cpd.term()
    top_dt = cpd_end_dt - length
    if top_dt < cpd.term()[0]:
        top_dt = cpd.term()[0]
    end_dt = cpd_end_dt

    result = []
    for evdef in cpd.iter_evdef():
        l_label, l_data, l_score = zip(*cpd.get(evdef, top_dt, end_dt))
        result.append(l_score)
    else:
        xlen = len(l_label)
        ylen = cpd.len_evdef()
    data = np.array(result)
    #data = np.array([[np.log(float(score)) for score in l_score]
    #        for l_score in result])

    length = len(l_label)
    print xlen
    print ylen
    x, y = np.meshgrid(np.arange(xlen + 1), np.arange(ylen + 1))
    print x
    print y

    import matplotlib
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    import explot
    import matplotlib.colors
    cm = explot.generate_cmap(["orangered", "white"])
    #plt.pcolormesh(x, y, data, cmap = cm)
    plt.pcolormesh(x, y, data, norm=matplotlib.colors.LogNorm(
            vmin=max(data.min(), 1.0), vmax=data.max()), cmap = cm)
    xt_v, xt_l = explot.dt_ticks((0, xlen), (top_dt, end_dt),
            cpd.binsize(), recent = True)
    #import pdb; pdb.set_trace()
    plt.xticks(xt_v, xt_l, rotation = 336)
    plt.xlim(xmax = xlen)
    plt.ylim(ymax = ylen)
    plt.colorbar()
    plt.savefig(filename)
Пример #3
0
def heatmap(conf, method, area, fn):

    def result2data(result, l_label):
        d_temp = {}
        for r, dist in result:
            d_temp[r.get_fn()] = dist
        return [d_temp[label] for label in l_label]

    import cg_dag
    if method is None:
        method = conf.get("search", "method")
    if area is None:
        area = "all"

    src_dir = conf.get("dag", "output_dir")
    l_r = pcresult.results_in_area(conf, src_dir, area)
    l_label = [r.get_fn() for r in l_r]
    l_result = []
    for r in l_r:
        if method == "log":
            result = similar_block_log(conf, r.top_dt, r.end_dt,
                    r.area, ignore_same = False)
        elif method in ("dag_ed", "dag_mcs"):
            result = cg_dag.similar_block_dag(conf,
                    r.top_dt, r.end_dt, r.area, method, ignore_same = False)
        else:
            raise NotImplementedError
        l_result.append(result2data(result, l_label))

    # replace None to max value of whole result
    mval = max([max(result) for result in l_result])
    data = np.array([[mval if i is None else i for i in result] for result
            in l_result])
    # data = np.array(l_result)
    n = len(l_r)
    assert data.shape == (n, n)
    x, y = np.meshgrid(np.arange(n + 1), np.arange(n + 1)) 

    explot.dump(fn + ".temp", (x, y, data))

    import matplotlib
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    cm = explot.generate_cmap(["orangered", "white"])
    plt.pcolor(x, y, data, cmap = cm)
    plt.colorbar()
    plt.savefig(fn)