def _mask_X(X, diffs, correlation_threshold=DEFAULT_CORRELATION_THRESHOLD): cc, threshold = bin_corrs_from_X(diffs, X, correlation_threshold= correlation_threshold) mask = np.abs(cc) > threshold Xm = X[mask] logging.debug("Masked shape is %s" % (Xm.shape,)) return Xm
def plot_correlations(results): for result in results: pdf = result.pdf obs = result.obs Qs = iter(obs.meanQ) xgrid = pdf.make_xgrid() fl = pdf.make_flavors() figure, axarr = plt.subplots(len(fl), sharex=True, sharey=True, figsize=(8, len(fl)+3)) for b in result.binlabels: Q = next(Qs) X = get_X(pdf, Q=Q, xgrid=xgrid, fl=fl, reshape=True) values, threshold = bin_corrs_from_X(result._all_vals.ix[b], X) ind = 0 for f, axis in zip(fl, axarr): step = len(xgrid) current_vals = values[ind:ind+step] ind+=step line, = axis.plot(xgrid, current_vals) stacked = np.array([xgrid, current_vals]).T sel_ranges = split_ranges(stacked, abs(current_vals)>threshold, filter_falses=True) for arr in sel_ranges: x,y = arr.T axis.plot(x,y, linewidth=3, color=line.get_color()) axis.axvspan(np.min(x), np.max(x), color="#eeeeff") axis.set_ylim([-1,1]) axis.set_xscale('log') axis.set_ylabel("$%s$"%PDG_PARTONS[f]) axis.axhline(threshold, c='r', ls='--') axis.axhline(-threshold, c='r', ls='--') axarr[0].set_title(str(obs) + "\n") plt.xlabel("$x$") figure.subplots_adjust(hspace=0) plt.setp([a.get_xticklabels() for a in figure.axes[:-1]], visible=False) yield (obs,pdf), figure