code: def __str__(self):
      output_string = "DataCollection"
      data_groups = self.get_data_groups()
      for data_group in data_groups:
          output_string += "\n{} {}".format(
              data_group.label, data_group.get_shape()
          )
      return output_string
  
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 3 for calling the DataCollection obj's underlying member method code with example usage: obj.__str__() and returns: output_string