示例#1
0
文件: encoder.py 项目: shovsj/studio
 def default(self, o):
     # TODO add more support types
     if isinstance(o, set):
         return {'__set__': list(o)}
     elif isinstance(o, numpy.ndarray):
         return {'__numpy__': _to_default_list(o)}
     elif hasattr(o, '_repr_html_'):
         rb = BrtcReprBuilder()
         rb.addHTML(o._repr_html_())
         return {
             '_repr_brtc_': rb.get(),
             '__pickled__': list(pickle.dumps(o))
         }
     elif hasattr(o, 'savefig'):
         rb = BrtcReprBuilder()
         rb.addPlt(o)
         return {
             '_repr_brtc_': rb.get(),
             '__pickled__': list(pickle.dumps(o))
         }
     else:
         rb = BrtcReprBuilder()
         rb.addRawTextMD(str(o))
         return {
             '_repr_brtc_': rb.get(),
             '__pickled__': list(pickle.dumps(o))
         }
示例#2
0
def _pairplot(table, x_vars, y_vars=None, kind='scatter', diag_kind='auto', markers=None, palette=None, height=2.5, aspect=1, dropna=True, hue=None):
    s_default = plt.rcParams['lines.markersize'] ** 2.
    plot_kws = {"s": s_default * height / 6.4}
    
    if y_vars is None:
        y_vars = x_vars
    
    if kind == 'scatter':    
        g = sns.pairplot(table, x_vars=x_vars, y_vars=y_vars, kind=kind, diag_kind=diag_kind, markers=markers, height=height, aspect=aspect, \
                         dropna=dropna, hue=hue, palette=palette, plot_kws=plot_kws)
    else:
        scatter_kws = {'scatter_kws':plot_kws}
        g = sns.pairplot(table, x_vars=x_vars, y_vars=y_vars, kind=kind, diag_kind=diag_kind, markers=markers, height=height, aspect=aspect, \
                         dropna=dropna, hue=hue, palette=palette, plot_kws=scatter_kws)
    
    if height <= 2.5:
        for ax in g.axes.flatten():
            for label in ax.get_xticklabels():
                label.set_rotation(90 * (2.5 - height))
    
    rb = BrtcReprBuilder()
    rb.addPlt(plt)
    plt.clf()
    
    return {'result': {'_repr_brtc_':rb.get()} }
示例#3
0
def _tukeys_range_test(table, response_cols, factor_col, alpha=0.05):

    rb = BrtcReprBuilder()
    rb.addMD("""## Tukey's range test Result""")

    for response_col in response_cols:
        data = table[response_col]
        posthoc = pairwise_tukeyhsd(data, table[factor_col], alpha=alpha)
        posthoc_html = posthoc._results_table.as_html()
        posthoc.plot_simultaneous()

        rb.addMD("""### {response_col}""".format(response_col=response_col))
        rb.addHTML(posthoc_html)
        rb.addPlt(plt)
        plt.clf()

    return {'result': {'_repr_brtc_': rb.get()}}
示例#4
0
def tukeys_range_test(table, response_cols, factor_col, alpha=0.05):
    if alpha < 0.001 or alpha >= 0.9:
        raise BrighticsFunctionException("0006", ['alpha', 0.001, 0.9])

    rb = BrtcReprBuilder()
    rb.addMD("""## Tukey's range test Result""")

    for response_col in response_cols:
        data = table[response_col]
        posthoc = pairwise_tukeyhsd(data, table[factor_col], alpha=alpha)
        posthoc_html = posthoc._results_table.as_html()
        posthoc.plot_simultaneous()

        rb.addMD("""### {response_col}""".format(response_col=response_col))
        rb.addHTML(posthoc_html)
        rb.addPlt(plt)
        plt.clf()

    return {'result': {'_repr_brtc_': rb.get()}}
示例#5
0
def _correlation(table, vars, method='pearson', height=2.5, corr_prec=2):

    validate(greater_than(height, 0, 'height'),
             greater_than_or_equal_to(corr_prec, 1, 'corr_prec'))

    size = len(vars)

    s_default = plt.rcParams['lines.markersize']**2.
    scatter_kws = {"s": s_default * height / 6.4}

    corr_arr = np.ones((size, size))  # TODO variable name dict
    p_arr = np.zeros((size, size))

    for i in range(size):
        for j in range(i):
            if method == 'pearson':
                r, p = stats.pearsonr(table[vars[i]], table[vars[j]])
            elif method == 'spearman':
                r, p = stats.spearmanr(table[vars[i]], table[vars[j]])
            elif method == 'kendal':
                r, p = stats.kendalltau(table[vars[i]], table[vars[j]])

            corr_arr[i][j] = r
            p_arr[i][j] = p

    for i in range(size):
        for j in range(i, size):
            corr_arr[i][j] = corr_arr[j][i]
            p_arr[i][j] = p_arr[j][i]

    def corr(x, y, **kwargs):
        if kwargs['method'] == 'pearson':
            r, p = stats.pearsonr(x, y)
        elif kwargs['method'] == 'spearman':
            r, p = stats.spearmanr(x, y)
        elif kwargs['method'] == 'kendal':
            r, p = stats.kendalltau(x, y)

        p_stars = ''
        if p <= 0.05:
            p_stars = '*'
        if p <= 0.01:
            p_stars = '**'
        if p <= 0.001:
            p_stars = '***'

        corr_text = '{:.{prec}f}'.format(r, prec=corr_prec)
        print(type(corr_prec))
        font_size = abs(r) * 15 * 2 / corr_prec + 5
        ax = plt.gca()
        ax.annotate(corr_text, [
            .5,
            .5,
        ],
                    xycoords="axes fraction",
                    ha='center',
                    va='center',
                    fontsize=font_size * height)
        ax.annotate(p_stars,
                    xy=(0.65, 0.6),
                    xycoords=ax.transAxes,
                    color='red',
                    fontsize=17 * height)

    g = sns.PairGrid(table, vars=vars, height=height)
    g.map_diag(sns.distplot)
    if method == 'pearson':
        g.map_lower(sns.regplot, scatter_kws=scatter_kws)
    else:
        g.map_lower(sns.regplot, lowess=True, scatter_kws=scatter_kws)
    g.map_upper(corr, method=method)

    rb = BrtcReprBuilder()
    rb.addPlt(plt)
    plt.clf()

    params = {'vars': vars, 'method': method, 'height': height}

    res = dict()
    res['params'] = params
    res['corr'] = corr_arr
    res['pvalue'] = p_arr
    res['_repr_brtc_'] = rb.get()

    return {'result': res}