code: def _assertMaterializedColumns(
      self,
      got_values_dict,
      expected_values_dict,
      places=3,
      sort_values=False,
  ):
      for key, expected_column in expected_values_dict.items():
          self.assertIn(key, got_values_dict)
  
          got_column = got_values_dict[key]
          self.assertIsInstance(got_column, types.MaterializedColumn)
  
          if isinstance(expected_column.value, (np.ndarray, list)):
              # verify the arrays are identical
              if sort_values:
                  # sort got value for testing non-deterministic values
                  got_value = sorted(got_column.value)
              else:
                  got_value = got_column.value
              for got_v, expected_v in zip(
                  got_value, expected_column.value
              ):
                  self.assertAlmostEqual(
                      got_v, expected_v, places, msg="key %s" % key
                  )
          else:
              self.assertAlmostEqual(
                  got_column.value,
                  expected_column.value,
                  places,
                  msg="key %s" % key,
              )
  
imports: import os
  import tempfile
  import apache_beam
  from apache_beam.testing import util
  import numpy
  import tensorflow
  from tensorflow_model_analysis import constants
  from tensorflow_model_analysis.api import model_eval_lib
  from tensorflow_model_analysis.api import types
  from tensorflow_model_analysis.contrib import model_eval_lib
  from tensorflow_model_analysis.eval_saved_model import testutil
  from tensorflow_model_analysis.eval_saved_model.example_trainers import linear_classifier
  from tensorflow_model_analysis.slicer import slicer_lib
label_desc: Use image node_id 4 for calling the BuildAnalysisTableTest obj's underlying member method code with example usage: obj._assertMaterializedColumns(got_values_dict, expected_values_dict, places, sort_values) without return types