Beispiel #1
0
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
Beispiel #2
0
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