def _generic_draw(root, repo_ids, df_type, mean, cov_pairs, img_folder="", image_file="", small=True, medium=False, large=False, lim_0_1=False): group_by = SUITE_SIZE if df_type == DataFrameType.FIXED_SIZE else SUITE_COVERAGE_BIN dfs = [read_combined_df(root, repo_id, df_type) for repo_id in repo_ids] df = _join(dfs, group_by, mean=mean) vda_df = _get_vda(df, group_by, cov_pairs=cov_pairs) if df_type == DataFrameType.FIXED_SIZE: order = sorted(df[group_by].unique()) else: order = list(sorted(df[group_by].unique(), key=cov_bin_key)) ys = name_columns(cov_pairs) fig, axs = _draw(group_by, vda_df, df, order, ys, mean) _add_lines(axs[:-1], small, medium, large, lim_0_1) if not image_file: f = "fixed_size" if df_type == DataFrameType.FIXED_SIZE else "fixed_coverage" if mean: f += "_mean" image_file = Path(img_folder) / f"{f}_vda.png" plt.savefig(image_file, dpi=300) logger.info("Saved graph to {p}", p=image_file)
def draw_grouped_fixed_size(root, repo_ids, img_folder="", image_file=""): # size size_dfs = [ read_combined_df(root, repo_id, DataFrameType.FIXED_SIZE) for repo_id in repo_ids ] size_dfs = [ df.groupby([SUITE_SIZE, METRIC], as_index=False).mean() for df in size_dfs ] size_dfs = pd.concat(size_dfs, axis=0, ignore_index=True, sort=False) if not image_file: image_file = Path(img_folder) / "fixed_size_grouped.png" draw_vertically(size_dfs, SUITE_SIZE, image_file)
def _generic_draw(root, repo_ids, df_type, cov_pairs, img_folder="", image_file="", small=True, medium=False, large=False, lim_0_1=False, auto_lines=False, plot_type="p", for_presentation=True ): group_by = SUITE_SIZE if df_type == DataFrameType.FIXED_SIZE else SUITE_COVERAGE_BIN dfs = [read_combined_df(root, repo_id, df_type) for repo_id in repo_ids] dfs = [_get_vda(df, group_by, cov_pairs=cov_pairs) for df in dfs] # with pd.option_context('display.max_rows', None, 'display.max_columns', # None): # more options can be specified also # for df in dfs: # print(df) vda_df = _join(dfs) if df_type == DataFrameType.FIXED_SIZE: order = sorted(vda_df[group_by].unique()) else: order = list(sorted(vda_df[group_by].unique(), key=cov_bin_key)) ys = name_columns(cov_pairs) sns.set_context("paper") if for_presentation: sns.set_context("talk") with sns.axes_style(rc=RC if for_presentation else {}): fig, axs = _draw(group_by, vda_df, order, ys, plot_type=plot_type) _add_lines(axs[:-1], small, medium, large, lim_0_1, auto_lines=auto_lines) if not image_file: f = ["fixed_size" if df_type == DataFrameType.FIXED_SIZE else "fixed_coverage"] f += [_explain_plot(plot_type)] f += ["vda"] stem = "_".join(f) image_file = Path(img_folder) / f"{stem}.png" plt.tight_layout() plt.savefig(image_file, dpi=300, transparent=for_presentation) logger.info("Saved graph to {p}", p=image_file)
zip( map(str, map(operator.attrgetter("path"), ms)), map(str, map(operator.attrgetter("path"), ms)), map(str, map(operator.attrgetter("total_cases"), ms)), map(str, map(operator.attrgetter("statements"), ms)) ) ) ))) # exit() repos = [] for m in ms: repo_id = m.repo.id repo_id = repo_id.replace("@", "_") df = read_combined_df(graphs_path, repo_id, DataFrameType.FIXED_SIZE) if df is not None: metrics = df[METRIC].unique() if len(metrics) < 3: continue by_metric = df.groupby(METRIC)[SUITE_COVERAGE].agg(["min", "max"]) r = ( repo_id, df[SUITE_SIZE].max(), # by_metric["max"][str(CoverageMetric.STATEMENT)], # by_metric["max"][str(CoverageMetric.BRANCH)], # by_metric["max"][str(CoverageMetric.ALL_PAIRS)], # by_metric["min"][str(CoverageMetric.STATEMENT)], # by_metric["min"][str(CoverageMetric.BRANCH)], # by_metric["min"][str(CoverageMetric.ALL_PAIRS)],