def print_instances_class_histogram()

in shapenet/utils/vis.py [0:0]


def print_instances_class_histogram(num_instances, class_names, results):
    """
    Args:
        num_instances (list): list of dataset dicts.
    """
    num_classes = len(class_names)
    N_COLS = 7
    data = list(
        itertools.chain(
            *[
                [
                    class_names[id],
                    v,
                    results["chamfer"][id] / v,
                    results["normal"][id] / v,
                    results["f1_01"][id] / v,
                    results["f1_03"][id] / v,
                    results["f1_05"][id] / v,
                ]
                for id, v in num_instances.items()
            ]
        )
    )
    total_num_instances = sum(data[1::7])
    mean_chamfer = sum(data[2::7]) / num_classes
    mean_normal = sum(data[3::7]) / num_classes
    mean_f1_01 = sum(data[4::7]) / num_classes
    mean_f1_03 = sum(data[5::7]) / num_classes
    mean_f1_05 = sum(data[6::7]) / num_classes
    data.extend([None] * (N_COLS - (len(data) % N_COLS)))
    data.extend(
        [
            "total",
            total_num_instances,
            mean_chamfer,
            mean_normal,
            mean_f1_01,
            mean_f1_03,
            mean_f1_05,
        ]
    )
    data.extend([None] * (N_COLS - (len(data) % N_COLS)))
    data.extend(
        [
            "per-instance",
            total_num_instances,
            sum(results["chamfer"].values()) / total_num_instances,
            sum(results["normal"].values()) / total_num_instances,
            sum(results["f1_01"].values()) / total_num_instances,
            sum(results["f1_03"].values()) / total_num_instances,
            sum(results["f1_05"].values()) / total_num_instances,
        ]
    )
    data = itertools.zip_longest(*[data[i::N_COLS] for i in range(N_COLS)])
    table = tabulate(
        data,
        headers=["category", "#instances", "chamfer", "normal", "F1(0.1)", "F1(0.3)", "F1(0.5)"]
        * (N_COLS // 2),
        tablefmt="pipe",
        numalign="left",
        stralign="center",
    )
    print(
        "Distribution of testing instances among all {} categories:\n".format(num_classes)
        + colored(table, "cyan")
    )