def stacked_L(r, c, g, color='b', linestyle='solid', label=None, figax=None): if not isinstance(c, np.ndarray): c = np.array(c) if not isinstance(g, np.ndarray): g = np.array(g) if figax==None: fig = plt.figure(figsize=default_figsize) axh = fig.add_axes(stacked_axhpos) axc = fig.add_axes(stacked_axcpos) else: fig, axh, axc = figax truth = c > 0 if label: axh.plot( r[truth], g[truth]/c[truth], color=color, linestyle=linestyle, label=label) else: axh.plot( r[truth], g[truth]/c[truth], color=color, linestyle=linestyle) G = idq.kde_to_ckde( g ) C = idq.kde_to_ckde( c ) Truth = C > 0 if label: axc.plot( r[Truth], G[Truth]/C[Truth], color=color, linestyle=linestyle, label=label) else: axc.plot( r[Truth], G[Truth]/C[Truth], color=color, linestyle=linestyle) axh.grid(True, which='both') axc.grid(True, which='both') axh.set_xlim(xmin=0, xmax=1) axc.set_xlim(xmin=0, xmax=1) axh.set_yscale('log') axc.set_yscale('log') if np.any(truth): axh.set_ylim(ymin=0, ymax=max(axh.get_ylim()[1], max(g[truth]/c[truth])*1.1)) if np.any(Truth): axc.set_ylim(ymin=0, ymax=max(axc.get_ylim()[1], max(G[Truth]/C[Truth])*1.1)) plt.setp(axc.get_xticklabels(), visible=False) axc.set_ylabel('cdf(g)/cdf(c)') axh.set_xlabel('rank') axh.set_ylabel('pdf(g)/pdf(c)') return fig, axh, axc
def stacked_kde(r, s, color='b', linestyle='solid', label=None, figax=None): if figax==None: fig = plt.figure(figsize=default_figsize) axh = fig.add_axes(stacked_axhpos) axc = fig.add_axes(stacked_axcpos) else: fig, axh, axc = figax axh.plot( r, s, color=color, linestyle=linestyle, label=label) c = idq.kde_to_ckde( s ) axc.plot( r, c, color=color, linestyle=linestyle, label=label) axh.grid(True, which="both") axc.grid(True, which="both") axh.set_xlim(xmin=0, xmax=1) axc.set_xlim(xmin=0, xmax=1) axh.set_ylim(ymin=0, ymax=max(axh.get_ylim()[1], max(s)*1.1) ) axc.set_ylim(ymin=0, ymax=1.0) plt.setp(axc.get_xticklabels(), visible=False) axc.set_ylabel('cumulative fraction of events') axh.set_xlabel('rank') axh.set_ylabel('p(rank)') return fig, axh, axc
kde_range = idq.best_range(gps, kde_ranges.keys()) kde_cln_name, kde_gch_name = kde_ranges[kde_range] kde_cln_file = event.gzopen(kde_cln_name, 'r') kde, kde_cln = numpy.load(kde_cln_file) kde_cln_file.close() kde_gch_file = event.gzopen(kde_gch_name, 'r') _, kde_gch = numpy.load(kde_gch_file) kde_gch_file.close() ### store kdes kdeD[classifier]['kde'] = kde kdeD[classifier]['kde_cln'] = kde_cln kdeD[classifier]['ckde_cln'] = idq.kde_to_ckde(kde_cln) kdeD[classifier]['kde_gch'] = kde_gch kdeD[classifier]['ckde_gch'] = idq.kde_to_ckde(kde_gch) kdeD[classifier]['kde_cln_name'] = kde_cln_name kdeD[classifier]['kde_gch_name'] = kde_gch_name kdeD[classifier]['kde_range'] = kde_range n_samples = len( outputs[classifier]['rank'] ) ### assumes all outputs have the same length, which they should for combiner in combiners: flavor = combinersD[combiner][
kde_range = idq.best_range( gps, kde_ranges.keys() ) kde_cln_name, kde_gch_name = kde_ranges[kde_range] kde_cln_file = event.gzopen(kde_cln_name, 'r') kde, kde_cln = numpy.load(kde_cln_file) kde_cln_file.close() kde_gch_file = event.gzopen(kde_gch_name, 'r') _ , kde_gch = numpy.load(kde_gch_file) kde_gch_file.close() ### store kdes kdeD[classifier]['kde'] = kde kdeD[classifier]['kde_cln'] = kde_cln kdeD[classifier]['ckde_cln'] = idq.kde_to_ckde( kde_cln ) kdeD[classifier]['kde_gch'] = kde_gch kdeD[classifier]['ckde_gch'] = idq.kde_to_ckde( kde_gch ) kdeD[classifier]['kde_cln_name'] = kde_cln_name kdeD[classifier]['kde_gch_name'] = kde_gch_name kdeD[classifier]['kde_range'] = kde_range n_samples = len(outputs[classifier]['rank']) ### assumes all outputs have the same length, which they should for combiner in combiners: flavor = combinersD[combiner]['flavor'] ### should always be None, but we pull the reference nonetheless these_classifiers = combinersD[combiner]['classifiers'] ### the classifiers this combiner combines