Commit 00b447a1 authored by Jan Kiene's avatar Jan Kiene
Browse files

add --no-bins arg

parent 4c855275
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ import matplotlib.pyplot as plt
from typing import List


BINS_4_COLS = {
BINS_FOR_MEASURES = {
    "MLD": [0, 1, 2, 3, 4, 5, 10, 20, math.inf],
    "MAX_ABS_DIFF": [0, 16, 256, 1024, 2048, 4096, 8192, 16384, 32769],
    "MIN_SSNR": [-math.inf, 0, 10, 20, 30, 40, 40, 50, 60, 100],
@@ -20,11 +20,16 @@ BINS_4_COLS = {
MEASURES_TO_PLOT = ["MAX_ABS_DIFF", "MLD", "MIN_SSNR", "MIN_ODG"]


def get_bins_for_diff(data: pd.Series):
    return np.linspace(data.min(), data.max(), num=10)


def create_histograms(
    df: pd.DataFrame,
    measures: List[str],
    output_folder: pathlib.Path,
    display_only: bool,
    bins_for_measures=BINS_FOR_MEASURES,
):
    formats = df["format"].unique()
    categories = df["category"].unique()
@@ -33,10 +38,11 @@ def create_histograms(
        output_folder.mkdir(exist_ok=True, parents=True)

    for measure in measures:
        bins = BINS_4_COLS[measure]
        bins = bins_for_measures.get(measure, get_bins_for_diff(df[measure]))
        x = [f"{x}" for x in bins] + ["", "ERROR"]
        for fmt in formats:
            fig, ax = plt.subplots()
            ax.xaxis.set_major_formatter("{x:.1f}")
            bottom = np.zeros(len(x))
            for cat in categories:
                data_mask = np.logical_and(df["format"] == fmt, df["category"] == cat)
@@ -98,9 +104,21 @@ if __name__ == "__main__":
        action="store_true",
        help="Do not write the output files, but display the graphs instead.",
    )
    parser.add_argument(
        "--no-bins",
        action="store_true",
        help="""Do not use the hardcoded bins for creating the spectrograms.
Use this for visualising diff scores.""",
    )
    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)
    bins_for_measures = BINS_FOR_MEASURES
    if args.no_bins:
        bins_for_measures = {}

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