code: def get_mf_branin_function(fidel_dim):
      """Returns the Branin function as a multifidelity function."""
      a0 = 1
      b0 = 5.1 / (4 * np.pi**2)
      c0 = 5 / np.pi
      r0 = 6
      s0 = 10
      t0 = 1 / (8 * np.pi)
      alpha = np.array([b0, c0, t0])
      # Define delta
      delta = [0.01, 0.1, -0.005]
      delta = np.array(delta[0:fidel_dim] + [0] * (3 - fidel_dim))
  
      # A wrapper for the MF objective
      def mf_branin_obj(z, x):
          """Wrapper for the MF Branin objective."""
          assert len(z) == fidel_dim
          z_extended = np.append(z, [0] * (3 - fidel_dim))
          alpha_z = alpha - (1 - z_extended) * delta
          return branin_function_alpha(x, alpha_z, a0, r0, s0)
  
      # A wrapper for the SF objective
      def sf_branin_obj(x):
          """Wrapper for the SF Branin objective."""
          return branin_function(x, a0, b0, c0, r0, s0, t0)
  
      # Other data
      fidel_to_opt = np.ones((fidel_dim))
      fidel_bounds = [[0, 1]] * fidel_dim
      opt_pt = np.array([np.pi, 2.275])
      opt_val = sf_branin_obj(opt_pt)
      domain_bounds = [[-5, 10], [0, 15]]
      return (
          mf_branin_obj,
          sf_branin_obj,
          opt_pt,
          opt_val,
          fidel_to_opt,
          fidel_bounds,
          domain_bounds,
      )
  
imports: from __future__ import division
  import numpy
  from .general_utils import map_to_cube
  from ..exd.experiment_caller import EuclideanFunctionCaller
label_desc: Use image node_id 8 for calling a global function with example usage: get_mf_branin_function(fidel_dim) and returns: mf_branin_obj,  sf_branin_obj,  opt_pt,  opt_val,  fidel_to_opt,  fidel_bounds,  domain_bounds, branin_function_alpha, branin_function