docs: def run_MDR(n,stack_float,labels=None):
      """run utility function for MDR nodes."""
      # need to check that tmp is categorical
  
      x1 = stack_float.pop()
      x2 = stack_float.pop()
      # check data is categorical
      if len(np.unique(x1))<=3 and len(np.unique(x2))<=3:
          tmp = np.vstack((x1,x2)).transpose()
  
          if labels is None: # prediction
              return n.model.transform(tmp)[:,0]
          else: # training
              out =  n.model.fit_transform(tmp,labels)[:,0]
  
              return out
      else:
          return np.zeros(x1.shape[0])