class_docstr: Transformation abstract class.
  
  Parameters
  ----------
  p : float or None
      Probability of executing this transform
  data_indices : tuple or None
      Indices where the transforms need to be applied
class_docstr_tok: ["Transformation","abstract","class",".","Parameters","--","--","--","--","--","p",":","float","or","None","Probability","of","executing","this","transform","data_indices",":","tuple","or","None","Indices","where","the","transforms","need","to","be","applied"]
code: def __init__(self, p=None, data_indices=None):
      super(BaseTransform, self).__init__()
  
      if p is None:
          p = 0.5
  
      self.p = p
      if data_indices is not None and not isinstance(
          data_indices, tuple
      ):
          raise TypeError
      if isinstance(data_indices, tuple):
          for el in data_indices:
              if not isinstance(el, int):
                  raise TypeError
              if el < 0:
                  raise ValueError
  
      self.data_indices = data_indices
  
      self.state_dict = None
      self.reset_state()
  
imports: import copy
  import random
  from abc import ABCMeta, abstractmethod
  import cv2
  import numpy
  from solt.utils import Serializable
  from solt.constants import ALLOWED_INTERPOLATIONS, ALLOWED_PADDINGS
  from ._data import DataContainer, Keypoints
  from solt.utils import img_shape_checker, validate_parameter
label_desc: Use image node_id 1 to create a new BaseTransform object from inherited base classes: Serializable with example: obj = BaseTransform(p, data_indices)