class_docstr: Multi-fidelity GP Class for Cartesian Product GPs. 
class_docstr_tok: ["Multi-fidelity","GP","Class","for","Cartesian","Product","GPs","."]
docstr: Returns the training kernel matrix given the data, kernel, and lists_of_dists. 
docstr_tok: ["Returns","the","training","kernel","matrix","given","the","data",",","kernel",",","and","lists_of_dists","."]
code: def _get_train_kernel_matrix_from_data_and_lists_of_dists(
      cls, data, kern, lists_of_dists
  ):
      """Returns the training kernel matrix given the data, kernel, and lists_of_dists."""
      n = len(data)
      ret = kern.hyperparams["scale"] * np.ones((n, n))
      for idx, kern in enumerate(kern.kernel_list):
          if lists_of_dists[idx] is not None:
              ret *= kern.evaluate_from_dists(lists_of_dists[idx])
          else:
              curr_data = get_idxs_from_list_of_lists(data, idx)
              ret *= kern(curr_data, curr_data)
      return ret
  
imports: from __future__ import print_function
  from argparse import Namespace
  import numpy
  from ..exd import domains
  from ..exd.cp_domain_utils import load_cp_domain_from_config_file
  from .None import gp_core, mf_gp
  from .euclidean_gp import get_euclidean_integral_gp_kernel_with_scale, prep_euclidean_integral_kernel_hyperparams
  from .kernel import CartesianProductKernel, HammingKernel
  from ..utils.general_utils import get_idxs_from_list_of_lists
  from ..utils.option_handler import get_option_specs, load_options
  from ..utils.reporters import get_reporter
label_desc: Use image node_id 5 for calling the CPMFGP obj's underlying member method code with example usage: obj._get_train_kernel_matrix_from_data_and_lists_of_dists(cls, data, kern, lists_of_dists) and returns: ret