code: def _split_param_space(self):
      """Takes in a ParamSpace object and splits it so that
      it can be used in DistributeScan experiments."""
  
      import numpy as np
      import copy
  
      out = {}
  
      # randomly shuffle the param_space
      rand = np.random.default_rng()
      rand.shuffle(self._params.param_space, axis=0)
  
      # split into n arras
      param_spaces = np.array_split(
          self._params.param_space, self.machines
      )
  
      # remove keys to allow copy
      param_keys = self._params.param_keys
      self._params.param_keys = []
  
      # create the individual ParamSpace objects
      for i in range(self.machines):
          out[i] = copy.deepcopy(self._params)
          out[i].param_space = param_spaces[i]
          out[i].dimensions = len(out[i].param_space)
          out[i].param_index = list(range(out[i].dimensions))
          out[i].param_keys = param_keys
  
      return out
  
label_desc: Use image node_id 2 for calling the DistributeParamSpace obj's underlying member method code with example usage: obj._split_param_space() and returns: out