class_docstr: A fitter for GPs in multi-fidelity optimisation. 
class_docstr_tok: ["A","fitter","for","GPs","in","multi-fidelity","optimisation","."]
docstr: Builds a Multi-fidelity GP from the hyper-parameters. 
code: def _child_build_gp(
      self,
      mean_func,
      noise_var,
      gp_cts_hps,
      gp_dscr_hps,
      other_gp_params=None,
      *args,
      **kwargs,
  ):
      """Builds a Multi-fidelity GP from the hyper-parameters."""
      # IMPORTANT: The order of the code matters in this function. Do not change.
      # Kernel scale ---------------------------------------
      ke_scale = np.exp(gp_cts_hps[0])
      gp_cts_hps = gp_cts_hps[1:]
      # Fidelity kernel ------------------------------------
      fidel_kernel_hyperparams = (
          self._prep_init_fidel_kernel_hyperparams()
      )
      (
          fidel_kernel,
          gp_cts_hps,
          gp_dscr_hps,
      ) = get_euclidean_integral_gp_kernel_with_scale(
          self.options.fidel_kernel_type,
          1.0,
          fidel_kernel_hyperparams,
          gp_cts_hps,
          gp_dscr_hps,
          self.options.fidel_use_same_bandwidth,
          None,
          self.options.fidel_esp_kernel_type,
      )
      # Domain kernel --------------------------------------
      # The code for the domain kernel should come after fidelity. Otherwise, its a bug.
      domain_kernel_hyperparams = (
          self._prep_init_domain_kernel_hyperparams()
      )
      if self.options.domain_use_additive_gp:
          gp_dscr_hps = gp_dscr_hps[
              :-1
          ]  # The first element is the group size
          add_gp_groupings = other_gp_params.add_gp_groupings
      else:
          add_gp_groupings = None
      (
          domain_kernel,
          gp_cts_hps,
          gp_dscr_hps,
      ) = get_euclidean_integral_gp_kernel_with_scale(
          self.options.domain_kernel_type,
          1.0,
          domain_kernel_hyperparams,
          gp_cts_hps,
          gp_dscr_hps,
          self.options.domain_use_same_bandwidth,
          add_gp_groupings,
          self.options.domain_esp_kernel_type,
      )
      # Construct and return MF GP
      ret_gp = EuclideanMFGP(
          self.ZZ,
          self.XX,
          self.YY,
          None,
          ke_scale,
          fidel_kernel,
          domain_kernel,
          mean_func,
          noise_var,
          reporter=self.reporter,
      )
      return ret_gp, gp_cts_hps, gp_dscr_hps
  
imports: from __future__ import division
  from argparse import Namespace
  import numpy
  from .None import gp_core, mf_gp
  from .None import kernel
  from ..utils.ancillary_utils import get_list_of_floats_as_str
  from ..utils.general_utils import get_sublist_from_indices, map_to_bounds
  from ..utils.option_handler import get_option_specs, load_options
  from ..utils.oper_utils import random_sample_from_discrete_domain
  from ..utils.reporters import get_reporter
label_desc: Use image node_id 21 for calling the EuclideanMFGPFitter obj's underlying member method code with example usage: obj._child_build_gp(mean_func, noise_var, gp_cts_hps, gp_dscr_hps, other_gp_params) and returns: ret_gp,  gp_cts_hps,  gp_dscr_hps