code: def assert_distribution(self, data, sizes, centers, widths):
      index_cluster = 0
      index_cluster_point = 0
  
      actual_means = [
          [0.0 for _ in range(len(data[0]))] for _ in range(len(sizes))
      ]
  
      for index_point in range(len(data)):
          for index_dimension in range(len(data[0])):
              actual_means[index_cluster][index_dimension] += data[
                  index_point
              ][index_dimension]
  
          index_cluster_point += 1
          if index_cluster_point == sizes[index_cluster]:
              index_cluster_point = 0
              index_cluster += 1
  
      for index_cluster in range(len(actual_means)):
          for index_dimension in range(len(data[0])):
              actual_means[index_cluster][index_dimension] /= sizes[
                  index_cluster
              ]
              assertion.ge(
                  centers[index_cluster][index_dimension],
                  actual_means[index_cluster][index_dimension]
                  - widths[index_cluster],
              )
              assertion.le(
                  centers[index_cluster][index_dimension],
                  actual_means[index_cluster][index_dimension]
                  + widths[index_cluster],
              )
  
file_path: pyclustering/pyclustering/cluster/tests/unit/ut_generator.py
imports: import unittest
  import matplotlib
  from pyclustering.cluster.generator import data_generator
  from pyclustering.tests.assertion import assertion
label_desc: Use image node_id 2 for calling the generator_unit_tests obj's underlying member method code with example usage: obj.assert_distribution(data, sizes, centers, widths) without return types