docstr: A function that retrieves data currently stored in the DataCollection
  denoted by current_case, or otherwise loads a specific, singular case.
  A simpler alternative to data_generator, which can yield all of the
  cases in a DataCollection
  
  Parameters
  ----------
  case : string or int
      Casename identifier or, in the case of DataCollections
      reading from HDF5, data row identifiers.
  data_group_labels : None, optional
      A set of 
  
  Returns
  -------
  TYPE
      Description
docstr_tok: ["A","function","that","retrieves","data","currently","stored","in","the","DataCollection","denoted","by","current_case",",","or","otherwise","loads","a","specific",",","singular","case",".","A","simpler","alternative","to","data_generator",",","which","can","yield","all","of","the","cases","in","a","DataCollection","Parameters","--","--","--","--","--","case",":","string","or","int","Casename","identifier","or",",","in","the","case","of","DataCollections","reading","from","HDF5",",","data","row","identifiers",".","data_group_labels",":","None",",","optional","A","set","of","Returns","--","--","--","-","TYPE","Description"]
code: def get_data(self, case, data_group_labels=None):
      """A function that retrieves data currently stored in the DataCollection
      denoted by current_case, or otherwise loads a specific, singular case.
      A simpler alternative to data_generator, which can yield all of the
      cases in a DataCollection
  
      Parameters
      ----------
      case : string or int
          Casename identifier or, in the case of DataCollections
          reading from HDF5, data row identifiers.
      data_group_labels : None, optional
          A set of
  
      Returns
      -------
      TYPE
          Description
      """
  
      data_groups = self.get_data_groups(data_group_labels)
  
      if self.verbose:
          print(("Working on image.. ", case))
  
      if case != self.current_case:
          self.load_case_data(case)
  
      recursive_augmentation_generator = self.recursive_augmentation(
          data_groups, augmentation_num=0
      )
      next(recursive_augmentation_generator)
  
      # TODO: Evaluate use of np.stack here; it may be unnessecary or inefficient
      data_batch = {}
      data_batch["casename"] = np.stack([self.current_case])
      for data_group in data_groups:
          if len(self.augmentations) == 0:
              data_batch[
                  data_group.label
              ] = data_group.preprocessed_case
          else:
              data_batch[
                  data_group.label
              ] = data_group.augmentation_cases[-1]
          data_batch[
              data_group.label + "_augmentation_string"
          ] = np.stack([data_group.augmentation_strings[-1]])
          data_batch[data_group.label + "_affine"] = np.stack(
              [data_group.preprocessed_affine]
          )
  
      return data_batch
  
imports: import os
  import csv
  import numpy
  import tables
  import copy
  from tqdm import tqdm
  from deepneuro.augmentation.augment import Copy
  from deepneuro.utilities.conversion import read_image_files
  from deepneuro.data.data_group import DataGroup
  from deepneuro.data.data_load import parse_directories, parse_filepaths, parse_hdf5, parse_csv, parse_numpy
  from deepneuro.utilities.util import add_parameter
label_desc: Use image node_id 15 for calling the DataCollection obj's underlying member method code with example usage: obj.get_data(case, data_group_labels) and returns: data_batch