code: def __init__(self, net_param, action_param, is_training):
      super(SelectiveSampling, self).__init__()
      tf.logging.info("starting segmentation application")
      self.is_training = is_training
  
      self.net_param = net_param
      self.action_param = action_param
  
      self.data_param = None
      self.segmentation_param = None
      self.SUPPORTED_SAMPLING = {
          "selective": (
              self.initialise_selective_sampler,
              self.initialise_grid_sampler,
              self.initialise_grid_aggregator,
          )
      }
  
imports: import tensorflow
  from niftynet.application.base_application import BaseApplication
  from niftynet.contrib.segmentation_selective_sampler.sampler_selective import SelectiveSampler, Constraint
  from niftynet.engine.application_factory import ApplicationNetFactory, InitializerFactory, OptimiserFactory
  from niftynet.engine.application_variables import CONSOLE, NETWORK_OUTPUT, TF_SUMMARIES
  from niftynet.engine.sampler_grid_v2 import GridSampler
  from niftynet.engine.windows_aggregator_grid import GridSamplesAggregator
  from niftynet.io.image_reader import ImageReader
  from niftynet.layer.binary_masking import BinaryMaskingLayer
  from niftynet.layer.discrete_label_normalisation import DiscreteLabelNormalisationLayer
  from niftynet.layer.histogram_normalisation import HistogramNormalisationLayer
  from niftynet.layer.loss_segmentation import LossFunction
  from niftynet.layer.mean_variance_normalisation import MeanVarNormalisationLayer
  from niftynet.layer.pad import PadLayer
  from niftynet.layer.post_processing import PostProcessingLayer
  from niftynet.layer.rand_flip import RandomFlipLayer
  from niftynet.layer.rand_rotation import RandomRotationLayer
  from niftynet.layer.rand_spatial_scaling import RandomSpatialScalingLayer
label_desc: Use image node_id 1 to create a new SelectiveSampling object from inherited base classes: BaseApplication with example: obj = SelectiveSampling(net_param, action_param, is_training)