code: def check_ice_pdp(self, plot_obj, model_type):
      feat_types = [
          obj.feature_info.type for obj in plot_obj.pdp_isolate_objs
      ]
      grid_combos = plot_obj.feature_grid_combos
  
      for cls_idx, res in enumerate(plot_obj.results):
          ice_lines = res.ice_lines.to_numpy()
  
          for i, grid in enumerate(grid_combos):
              ice_uni_values = np.unique(ice_lines[:, i])
              assert len(ice_uni_values) == 1
  
              target_value = self.calculate_target_value(
                  model_type, grid, feat_types, cls_idx
              )
              assert np.isclose(
                  res.pdp[i],
                  target_value,
                  rtol=1e-05,
                  atol=1e-08,
                  equal_nan=False,
              )
              assert np.isclose(
                  ice_uni_values[0],
                  target_value,
                  rtol=1e-05,
                  atol=1e-08,
                  equal_nan=False,
              )
  
imports: import numpy
  import pytest
  import copy
  from abc import abstractmethod
  from pdpbox.pdp import PDPResult, PDPIsolate, PDPInteract
  from pdpbox.utils import FeatureInfo, _make_list
  from conftest import DummyModel, PlotTestBase
label_desc: Use image node_id 4 for calling the TestPDPInteract obj's underlying member method code with example usage: obj.check_ice_pdp(plot_obj, model_type) without return types