code: def get_function_data(
      func_name,
      domain_dim=None,
      fidel_dim=None,
      noise_type="no_noise",
      noise_scale=None,
  ):
      """Gets a function data from the description."""
      # pylint: disable=too-many-branches
      fidel_dim_to_pass = 1 if fidel_dim is None else fidel_dim
      if func_name == "hartmann":
          if domain_dim is None:
              domain_dim = 6
          if fidel_dim is not None and fidel_dim > 4:
              raise ValueError(
                  (
                      "For the hartmann functions, fidel_dim has to be 4 or less. "
                      + "Given: %s."
                  )
                  % (fidel_dim)
              )
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_mf_hartmann_function_data(
              fidel_dim_to_pass, domain_dim
          )
      elif func_name == "hartmann3":
          return get_function_data(
              "hartmann", 3, fidel_dim, noise_type, noise_scale
          )
      elif func_name == "hartmann6":
          return get_function_data(
              "hartmann", 6, fidel_dim, noise_type, noise_scale
          )
      elif func_name == "branin":
          if domain_dim != 2 and domain_dim is not None:
              raise ValueError(
                  (
                      "For the branin function, domain_dim has to be 2 or None. "
                      + "Given: %s."
                  )
                  % (domain_dim)
              )
          if fidel_dim is not None and fidel_dim > 3:
              raise ValueError(
                  (
                      "For the branin function, fidel_dim has to be 3 or less. "
                      + "Given: %s."
                  )
                  % (fidel_dim)
              )
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_mf_branin_function(fidel_dim_to_pass)
      elif func_name == "borehole":
          if domain_dim != 8 and domain_dim is not None:
              raise ValueError(
                  (
                      "For the borehole function, domain_dim has to be 8 or None. "
                      + "Given: %s."
                  )
                  % (domain_dim)
              )
          if fidel_dim != 1 and fidel_dim is not None:
              raise ValueError(
                  (
                      "For the borehole function, fidel_dim has to be 1 or None. "
                      + "Given: %s."
                  )
                  % (fidel_dim)
              )
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_mf_borehole_function()
      elif func_name == "park1":
          if domain_dim != 4 and domain_dim is not None:
              raise ValueError(
                  (
                      "For the park1 function, domain_dim has to be 4 or None. "
                      + "Given: %s."
                  )
                  % (domain_dim)
              )
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_mf_park1_function()
      elif func_name == "park2":
          if domain_dim != 4 and domain_dim is not None:
              raise ValueError(
                  (
                      "For the park2 function, domain_dim has to be 4 or None. "
                      + "Given: %s."
                  )
                  % (domain_dim)
              )
          (
              mf_obj,
              sf_obj,
              opt_pt,
              opt_val,
              fidel_to_opt,
              fidel_bounds,
              domain_bounds,
          ) = get_mf_park2_function()
      else:
          raise ValueError("Unknwon func_name: %s." % (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 18 for calling a global function with example usage: get_function_data(func_name, domain_dim, fidel_dim, noise_type, noise_scale) and returns: mf_obj,  sf_obj,  opt_pt,  opt_val,  fidel_to_opt,  fidel_bounds,  domain_bounds, get_function_data, get_function_data