def main()

in evals/elsuite/function_deduction/scripts/make_plots.py [0:0]


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--log-dir", "-d", type=str, required=True)
    parser.add_argument("--out-dir", "-o", type=str, default="./outputs")
    args = parser.parse_args()
    log_dir = Path(args.log_dir)
    out_dir = Path(args.out_dir)

    df = extract_final_reports(log_dir, solver_to_name, rename_columns)

    # Drop all columns named "complexity*"
    df = df[df.columns.drop(list(df.filter(regex="complexity")))]

    # Creating a new DataFrame with the desired order
    ordered_df = df.set_index("solver").loc[list(solver_to_name.values())].reset_index()
    print(ordered_df)

    make_plot(
        df=ordered_df,
        x_column="adjusted_avg_score",
        y_column="solver",
        x_err_column="sem_adjusted_avg_score",
        title="Adjusted Average Score (Lower is Better)",
        xlabel="Adjusted Average Score",
        ylabel="Solver",
        out_path=out_dir / "avg_adjusted_score.png",
    )

    ordered_df["solved_ratio"] = 100 * ordered_df["solved_ratio"]
    ordered_df["sem_solved_ratio"] = 100 * ordered_df["sem_solved_ratio"]
    make_plot(
        df=ordered_df,
        x_column="solved_ratio",
        y_column="solver",
        x_err_column="sem_solved_ratio",
        title="Solved Samples Ratio (Higher is Better)",
        xlabel="Solved Ratio (%)",
        ylabel="Solver",
        out_path=out_dir / "solved_ratio.png",
    )

    make_plot(
        df=ordered_df,
        x_column="avg_success_rounds",
        y_column="solver",
        x_err_column="sem_avg_success_rounds",
        title="Average Number of Rounds for Solved Samples (Lower is Better)",
        xlabel="No. of Rounds",
        ylabel="Solver",
        out_path=out_dir / "avg_success_rounds.png",
    )

    make_ask_guess_incorrect_plot(
        df=ordered_df,
        out_path=out_dir / "ask_guess_incorrect.png",
    )