code: def setup_DA_params(self):
      self.deep_supervision_scales = [[1, 1, 1]] + list(
          list(i)
          for i in 1
          / np.cumprod(
              np.vstack(self.net_num_pool_op_kernel_sizes), axis=0
          )
      )[:-1]
  
      if self.threeD:
          self.data_aug_params = default_3D_augmentation_params
          self.data_aug_params["rotation_x"] = (
              -30.0 / 360 * 2.0 * np.pi,
              30.0 / 360 * 2.0 * np.pi,
          )
          self.data_aug_params["rotation_y"] = (
              -30.0 / 360 * 2.0 * np.pi,
              30.0 / 360 * 2.0 * np.pi,
          )
          self.data_aug_params["rotation_z"] = (
              -30.0 / 360 * 2.0 * np.pi,
              30.0 / 360 * 2.0 * np.pi,
          )
          if self.do_dummy_2D_aug:
              self.data_aug_params["dummy_2D"] = True
              print("Using dummy2d data augmentation")
              self.data_aug_params[
                  "elastic_deform_alpha"
              ] = default_2D_augmentation_params["elastic_deform_alpha"]
              self.data_aug_params[
                  "elastic_deform_sigma"
              ] = default_2D_augmentation_params["elastic_deform_sigma"]
              self.data_aug_params[
                  "rotation_x"
              ] = default_2D_augmentation_params["rotation_x"]
      else:
          self.do_dummy_2D_aug = False
          if max(self.patch_size) / min(self.patch_size) > 1.5:
              default_2D_augmentation_params["rotation_x"] = (
                  -15.0 / 360 * 2.0 * np.pi,
                  15.0 / 360 * 2.0 * np.pi,
              )
          self.data_aug_params = default_2D_augmentation_params
      self.data_aug_params[
          "mask_was_used_for_normalization"
      ] = self.use_mask_for_norm
  
      if self.do_dummy_2D_aug:
          self.basic_generator_patch_size = get_patch_size(
              self.patch_size[1:],
              self.data_aug_params["rotation_x"],
              self.data_aug_params["rotation_y"],
              self.data_aug_params["rotation_z"],
              self.data_aug_params["scale_range"],
          )
          self.basic_generator_patch_size = np.array(
              [self.patch_size[0]]
              + list(self.basic_generator_patch_size)
          )
      else:
          self.basic_generator_patch_size = get_patch_size(
              self.patch_size,
              self.data_aug_params["rotation_x"],
              self.data_aug_params["rotation_y"],
              self.data_aug_params["rotation_z"],
              self.data_aug_params["scale_range"],
          )
  
      self.data_aug_params["scale_range"] = (0.7, 1.4)
      self.data_aug_params["do_elastic"] = False
      self.data_aug_params["selected_seg_channels"] = [0]
      self.data_aug_params[
          "patch_size_for_spatialtransform"
      ] = self.patch_size
  
      self.data_aug_params["num_cached_per_thread"] = 2
  
      if self.stage == 1 and self.cascade:
          self.data_aug_params["num_cached_per_thread"] = 2
  
          self.data_aug_params["move_last_seg_channel_to_data"] = True
          self.data_aug_params[
              "cascade_do_cascade_augmentations"
          ] = True
  
          self.data_aug_params[
              "cascade_random_binary_transform_p"
          ] = 0.4
          self.data_aug_params[
              "cascade_random_binary_transform_p_per_label"
          ] = 1
          self.data_aug_params[
              "cascade_random_binary_transform_size"
          ] = (1, 8)
  
          self.data_aug_params["cascade_remove_conn_comp_p"] = 0.2
          self.data_aug_params[
              "cascade_remove_conn_comp_max_size_percent_threshold"
          ] = 0.15
          self.data_aug_params[
              "cascade_remove_conn_comp_fill_with_other_class_p"
          ] = 0.0
  
          self.data_aug_params["selected_seg_channels"] = [0, 1]
          self.data_aug_params["all_segmentation_labels"] = list(
              range(1, self.num_classes)
          )
  
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 7 for calling the MSDDataset obj's underlying member method code with example usage: obj.setup_DA_params() without return types