code: def get_syn_func_caller(
      func_name,
      domain_dim=None,
      fidel_dim=None,
      noise_type="no_noise",
      noise_scale=None,
      to_normalise_domain=True,
  ):
      """Returns a FunctionCaller object from the function name."""
      func_name = func_name.lower()
      funcs = [
          "hartmann",
          "hartmann6",
          "hartmann3",
          "branin",
          "borehole",
          "park1",
          "park2",
      ]
      if func_name in funcs:
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_function_data(
              func_name, domain_dim, fidel_dim, noise_type, noise_scale
          )
      else:
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_high_dim_function_data(func_name, fidel_dim)
  
      # Now return
      if fidel_dim is None:
          return EuclideanFunctionCaller(
              sf_obj,
              domain_bounds,
              descr=func_name,
              vectorised=False,
              to_normalise_domain=to_normalise_domain,
              raw_argmax=opt_pt,
              maxval=opt_val,
              noise_type=noise_type,
              noise_scale=noise_scale,
          )
      else:
          fidel_cost_func = get_mf_cost_function(fidel_bounds)
          return EuclideanFunctionCaller(
              mf_obj,
              raw_domain=domain_bounds,
              descr=func_name,
              vectorised=False,
              to_normalise_domain=to_normalise_domain,
              raw_argmax=opt_pt,
              maxval=opt_val,
              noise_type=noise_type,
              noise_scale=noise_scale,
              fidel_cost_func=fidel_cost_func,
              raw_fidel_space=fidel_bounds,
              raw_fidel_to_opt=fidel_to_opt,
          )
  
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 19 for calling a global function with example usage: get_syn_func_caller(func_name, domain_dim, fidel_dim, noise_type, noise_scale, to_normalise_domain) and returns: EuclideanFunctionCaller, EuclideanFunctionCaller