Пример #1
0
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)],