code: def make_predictions_inference_data(
      self, data, eight_schools_params
  ) -> Tuple[InferenceData, Dict[str, np.ndarray]]:
      with data.model:
          posterior_predictive = pm.sample_posterior_predictive(
              data.obj, return_inferencedata=False
          )
          idata = predictions_to_inference_data(
              posterior_predictive,
              posterior_trace=data.obj,
              coords={"school": np.arange(eight_schools_params["J"])},
              dims={"theta": ["school"], "eta": ["school"]},
          )
          assert isinstance(idata, InferenceData)
      return idata, posterior_predictive
  
imports: import warnings
  from typing import Dict, Tuple
  import numpy
  import pytensor.tensor
  import pytest
  from arviz import InferenceData
  from arviz.tests.helpers import check_multiple_attrs
  from numpy import ma
  from pytensor.tensor.subtensor import AdvancedIncSubtensor, AdvancedIncSubtensor1
  import pymc
  from pymc.backends.arviz import InferenceDataConverter, predictions_to_inference_data, to_inference_data
  from pymc.exceptions import ImputationWarning
label_desc: Use image node_id 4 for calling the TestDataPyMC obj's underlying member method code with example usage: obj.make_predictions_inference_data(data, eight_schools_params) and returns: idata,  posterior_predictive