code: def get_basic_generators(self):
      self.load_dataset()
      self.do_split()
  
      if self.threeD:
          if self.stage == 0:
              dl_tr = DataLoader3D(
                  self.dataset_tr,
                  self.basic_generator_patch_size,
                  self.patch_size,
                  self.batch_size,
                  False,
                  oversample_foreground_percent=self.oversample_foreground_percent,
                  pad_mode="constant",
                  pad_sides=self.pad_all_sides,
                  memmap_mode="r",
              )
              dl_val = DataLoader3D(
                  self.dataset_val,
                  self.patch_size,
                  self.patch_size,
                  self.batch_size,
                  False,
                  oversample_foreground_percent=self.oversample_foreground_percent,
                  pad_mode="constant",
                  pad_sides=self.pad_all_sides,
                  memmap_mode="r",
              )
          else:
              dl_tr = DataLoader3D(
                  self.dataset_tr,
                  self.basic_generator_patch_size,
                  self.patch_size,
                  self.batch_size,
                  has_prev_stage=self.cascade,
                  oversample_foreground_percent=self.oversample_foreground_percent,
                  pad_mode="constant",
                  pad_sides=self.pad_all_sides,
              )
              dl_val = DataLoader3D(
                  self.dataset_val,
                  self.patch_size,
                  self.patch_size,
                  self.batch_size,
                  has_prev_stage=self.cascade,
                  oversample_foreground_percent=self.oversample_foreground_percent,
                  pad_mode="constant",
                  pad_sides=self.pad_all_sides,
              )
      else:
          dl_tr = DataLoader2D(
              self.dataset_tr,
              self.basic_generator_patch_size,
              self.patch_size,
              self.batch_size,
              oversample_foreground_percent=self.oversample_foreground_percent,
              pad_mode="constant",
              pad_sides=self.pad_all_sides,
              memmap_mode="r",
          )
          dl_val = DataLoader2D(
              self.dataset_val,
              self.patch_size,
              self.patch_size,
              self.batch_size,
              oversample_foreground_percent=self.oversample_foreground_percent,
              pad_mode="constant",
              pad_sides=self.pad_all_sides,
              memmap_mode="r",
          )
      return dl_tr, dl_val
  
imports: import os
  import pickle
  import glob
  import json
  import numpy
  from multiprocessing import Pool
  from collections import OrderedDict
  from sklearn.model_selection import KFold
  from typing import List
  from medicalseg.datasets import MedicalDataset
  from medicalseg.cvlibs import manager
  from nnunet.transforms import get_moreDA_augmentation, default_2D_augmentation_params, default_3D_augmentation_params
  from nnunet.transforms import rotate_coords_3d, rotate_coords_2d, NumpyToTensor
  from .dataloader import DataLoader2D, DataLoader3D
  from tools.preprocess_utils import verify_dataset_integrity, convert_to_decathlon, crop, ExperimentPlanner2D_v21, ExperimentPlanner3D_v21, DatasetAnalyzer
label_desc: Use image node_id 5 for calling the MSDDataset obj's underlying member method code with example usage: obj.get_basic_generators() and returns: dl_tr,  dl_val