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)
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)
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)