def METHOD_NAME(
    self, dataset_name: str, feature_name: str, num_of_bins: int, global_min_value: float, global_max_value: float
) -> Histogram:
    histogram_bins: List[Bin] = []
    METHOD_NAME = np.zeros((num_of_bins,), dtype=np.int64)
    bin_edges = []
    for i, entry in enumerate(self.data_list[dataset_name]):
        file = entry.get("image")
        try:
            img, meta = self.loader(file)
            curr_histogram, bin_edges = np.METHOD_NAME(
                img, bins=num_of_bins, range=(global_min_value, global_max_value)
            )
            METHOD_NAME += curr_histogram
            bin_edges = bin_edges.tolist()
            if i % 100 == 0:
                self.logger.info(
                    f"{self.client_name}, adding {i + 1} of {len(self.data_list[dataset_name])}: {file}"
                )
        except Exception as e:
            self.failure_images += 1
            self.logger.critical(
                f"Failed to load file {file} with exception: {e.__str__()}. " f"Skipping this image..."
            )
    if num_of_bins + 1 != len(bin_edges):
        secure_log_traceback()
        raise ValueError(
            f"bin_edges size: {len(bin_edges)} is not matching with number of bins + 1: {num_of_bins + 1}"
        )
    for j in range(num_of_bins):
        low_value = bin_edges[j]
        high_value = bin_edges[j + 1]
        bin_sample_count = METHOD_NAME[j]
        histogram_bins.append(Bin(low_value=low_value, high_value=high_value, sample_count=bin_sample_count))
    return Histogram(HistogramType.STANDARD, histogram_bins)