code: def augment(self, augmentation_num=0):
      choice = None  # This is messed up
  
      for label, data_group in list(self.data_groups.items()):
          # Wrote this function while half-asleep; revisit
          input_data = data_group.augmentation_cases[augmentation_num]
  
          if self.choices is None:
              choices = np.arange(input_data.shape[self.axis[label]])
          else:
              choices = self.choices
  
          if choice is None:
              if self.random_sample:
                  choice = np.random.choice(
                      choices, self.num_chosen, replace=False
                  )
              else:
                  idx = [
                      x % len(choices)
                      for x in range(
                          self.iteration,
                          self.iteration + self.num_chosen,
                      )
                  ]
                  choice = choices[idx]
  
          # Temporary
          if input_data.shape[-1] == 6:
              choice = choice.tolist()
              choice = list(range(4)) + choice
  
          choice_slice = [slice(None)] * (len(input_data.shape))
          choice_slice[self.axis[label]] = choice
  
          # Currently only works if applied to channels; revisit
          data_group.augmentation_cases[
              augmentation_num + 1
          ] = input_data[choice_slice]
          data_group.augmentation_strings[augmentation_num + 1] = (
              data_group.augmentation_strings[augmentation_num]
              + self.augmentation_string
              + str(choice).strip("[]").replace(" ", "")
          )
  
imports: import numpy
  from random import shuffle
  from scipy.sparse import csr_matrix
  from deepneuro.utilities.util import add_parameter
  from deepneuro.augmentation.augment import Augmentation
label_desc: Use image node_id 4 for calling the ChooseData obj's underlying member method code with example usage: obj.augment(augmentation_num) without return types