code: def augment_gaussian_blur(
      data_sample: np.ndarray,
      sigma_range: Tuple[float, float],
      per_channel: bool = True,
      p_per_channel: float = 1,
      different_sigma_per_axis: bool = False,
      p_isotropic: float = 0,
  ) -> np.ndarray:
      def get_range_val(value, rnd_type="uniform"):
          if isinstance(value, (list, tuple, np.ndarray)):
              if len(value) == 2:
                  if value[0] == value[1]:
                      n_val = value[0]
                  else:
                      orig_type = type(value[0])
                      if rnd_type == "uniform":
                          n_val = random.uniform(value[0], value[1])
                      else:
                          n_val = random.normalvariate(
                              value[0], value[1]
                          )
                      n_val = orig_type(n_val)
              elif len(value) == 1:
                  n_val = value[0]
              else:
                  raise RuntimeError(
                      "`value` must be a list/tuple with one or two elements."
                  )
              return n_val
          else:
              return value
  
      if not per_channel:
          sigma = (
              get_range_val(sigma_range)
              if (
                  (not different_sigma_per_axis)
                  or (
                      (np.random.uniform() < p_isotropic)
                      and different_sigma_per_axis
                  )
              )
              else [
                  get_range_val(sigma_range)
                  for _ in data_sample.shape[1:]
              ]
          )
      else:
          sigma = None
      for c in range(data_sample.shape[0]):
          if np.random.uniform() <= p_per_channel:
              if per_channel:
                  sigma = (
                      get_range_val(sigma_range)
                      if (
                          (not different_sigma_per_axis)
                          or (
                              (np.random.uniform() < p_isotropic)
                              and different_sigma_per_axis
                          )
                      )
                      else [
                          get_range_val(sigma_range)
                          for _ in data_sample.shape[1:]
                      ]
                  )
              data_sample[c] = gaussian_filter(
                  data_sample[c], sigma, order=0
              )
      return data_sample
  
imports: from typing import List, Tuple, Union, Callable
  import collections
  import numbers
  import random
  import numpy
  import scipy
  import scipy.ndimage
  import SimpleITK
  from scipy.ndimage.filters import gaussian_filter, gaussian_gradient_magnitude
  from skimage.transform import resize
label_desc: Use image node_id 11 for calling a global function with example usage: augment_gaussian_blur(data_sample, sigma_range, per_channel, p_per_channel, different_sigma_per_axis, p_isotropic) and returns: data_sample, n_val, value