code: def call(m, func_name, X, y=None):
      def unwrap_and_get_args(func):
          if hasattr(func, "__wrapped__"):
              return unwrap_and_get_args(func.__wrapped__)
          else:
              return func.__code__.co_varnames
  
      if not hasattr(m, func_name):
          raise ValueError("Model does not have function " + func_name)
      func = getattr(m, func_name)
      argnames = unwrap_and_get_args(func)
      if y is not None and "y" in argnames:
          func(X, y=y)
      else:
          func(X)
  
imports: from cuml.manifold import UMAP
  from cuml.benchmark import datagen
  from cuml.common.device_selection import using_device_type
  from cuml.internals.device_type import DeviceType
  from cuml.internals.global_settings import GlobalSettings
  from cuml.internals.safe_imports import cpu_only_import, gpu_only_import, gpu_only_import_from, safe_import
  import sklearn.ensemble
  import pickle
  import os
  import cuml
  from cuml.internals import input_utils
  from time import perf_counter
label_desc: Use image node_id 1 for calling a global function with example usage: call(m, func_name, X, y) and returns: unwrap_and_get_args, func