code: def get_syn_function(
      func_name, noise_type="no_noise", noise_scale=None
  ):
      """Returns a synthetic function from the function name along with its
      optimum point, optimum value and the domain_bounds. sf_obj is the
      concerned synthetic function.
      """
      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, noise_type=noise_type, noise_scale=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)
  
      return (
          mf_obj,
          sf_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 20 for calling a global function with example usage: get_syn_function(func_name, noise_type, noise_scale) and returns: mf_obj,  sf_obj,  opt_pt,  opt_val,  fidel_to_opt,  fidel_bounds,  domain_bounds