Commit 4c855275 authored by Jan Kiene's avatar Jan Kiene
Browse files

add saving of histograms to file

parent 1eb32d9e
Loading
Loading
Loading
Loading
+43 −14
Original line number Diff line number Diff line
@@ -2,9 +2,11 @@

import argparse
import math
import pathlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from typing import List


BINS_4_COLS = {
@@ -18,22 +20,18 @@ BINS_4_COLS = {
MEASURES_TO_PLOT = ["MAX_ABS_DIFF", "MLD", "MIN_SSNR", "MIN_ODG"]


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Parses a CSV report and creates a summary report."
    )
    parser.add_argument(
        "csv_report",
        type=str,
        help="CSV report file of test cases, e.g. report.csv",
    )
    args = parser.parse_args()
    df = pd.read_csv(args.csv_report)

    measures = MEASURES_TO_PLOT
def create_histograms(
    df: pd.DataFrame,
    measures: List[str],
    output_folder: pathlib.Path,
    display_only: bool,
):
    formats = df["format"].unique()
    categories = df["category"].unique()

    if not display_only:
        output_folder.mkdir(exist_ok=True, parents=True)

    for measure in measures:
        bins = BINS_4_COLS[measure]
        x = [f"{x}" for x in bins] + ["", "ERROR"]
@@ -74,4 +72,35 @@ if __name__ == "__main__":
            fig.set_figwidth(6)
            plt.tight_layout()

            if not display_only:
                image_file = f"histogram_{measure}_{fmt}.png"
                image_path = output_folder.joinpath(image_file)
                plt.savefig(image_path)

    if display_only:
        plt.show()


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Parses a csv file generated by parse_xml_report and creates histograms for the given measures."
    )
    parser.add_argument(
        "csv_report",
        type=str,
        help="CSV report file as generated by parse_xml_report.py",
    )
    parser.add_argument(
        "output_folder", type=pathlib.Path, help="Output folder for writing the "
    )
    parser.add_argument(
        "--display-only",
        action="store_true",
        help="Do not write the output files, but display the graphs instead.",
    )
    args = parser.parse_args()
    df = pd.read_csv(args.csv_report)

    measures = MEASURES_TO_PLOT

    create_histograms(df, measures, args.output_folder, args.display_only)