code: def svm_train(arg1, arg2=None, arg3=None, arg4=None):
      if arg2:
          arg1_array = (c_float * len(arg1))()
          arg1_array[:] = arg1
          # arg2_string_list = [str(d).encode('utf-8')[1:-1] for d in arg2]
          arg2_string_list = arg2
          arg2_array = (c_char_p * len(arg2_string_list))()
          arg2_array[:] = arg2_string_list
          # print(arg1_array[0])
          # print(arg2_array[0])
          arg4_list = arg4.encode("utf-8").split()
          arg4_array = (c_char_p * len(arg4_list))()
          arg4_array[:] = arg4_list
          # dataset_python = dataset();
          # dataset_python.load_from_python(arg1, arg2, arg3)
          # print(dataset_python)
          thundersvm.load_from_python_interface(
              arg1_array, arg2_array, len(arg1_array)
          )
          thundersvm.thundersvm_train_after_parse(
              arg4_array, len(arg4_array), arg3.encode("utf-8")
          )
      else:
          param_list = arg1.encode("utf-8").split()
          param_list.insert(0, "thundersvm-train")
          param_array = (c_char_p * len(param_list))()
          param_array[:] = param_list
          # print(param_array[0])
          thundersvm.thundersvm_train(len(param_list), param_array)
  
imports: from ctypes import *
  from ctypes.util import find_library
  from os import path
  import sys
  from sys import platform
label_desc: Use image node_id 2 for calling a global function with example usage: svm_train(arg1, arg2, arg3, arg4) without return types