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