class_docstr: An abstract class of a ``Transform``.
  A transform is callable that processes ``data``.
  
  It could be stateful and may modify ``data`` in place,
  the implementation should be aware of:
  
      #. thread safety when mutating its own states.
         When used from a multi-process context, transform's instance variables are read-only.
         thread-unsafe transforms should inherit :py:class:`monai.transforms.ThreadUnsafe`.
      #. ``data`` content unused by this transform may still be used in the
         subsequent transforms in a composed transform.
      #. storing too much information in ``data`` may cause some memory issue or IPC sync issue,
         especially in the multi-processing environment of PyTorch DataLoader.
  
  See Also
  
      :py:class:`monai.transforms.Compose`
class_docstr_tok: ["An","abstract","class","of","a","``","Transform","``",".","A","transform","is","callable","that","processes","``","data","``",".","It","could","be","stateful","and","may","modify","``","data","``","in","place",",","the","implementation","should","be","aware","of",":","#",".","thread","safety","when","mutating","its","own","states",".","When","used","from","a","multi-process","context",",","transform","'s","instance","variables","are","read-only",".","thread-unsafe","transforms","should","inherit",":","py",":","class",":","`","monai.transforms.ThreadUnsafe","`",".","#",".","``","data","``","content","unused","by","this","transform","may","still","be","used","in","the","subsequent","transforms","in","a","composed","transform",".","#",".","storing","too","much","information","in","``","data","``","may","cause","some","memory","issue","or","IPC","sync","issue",",","especially","in","the","multi-processing","environment","of","PyTorch","DataLoader",".","See","Also",":","py",":","class",":","`","monai.transforms.Compose","`"]
docstr: ``data`` is an element which often comes from an iteration over an
  iterable, such as :py:class:`torch.utils.data.Dataset`. This method should
  return an updated version of ``data``.
  To simplify the input validations, most of the transforms assume that
  
  - ``data`` is a Numpy ndarray, PyTorch Tensor or string,
  - the data shape can be:
  
    #. string data without shape, `LoadImage` transform expects file paths,
    #. most of the pre-/post-processing transforms expect: ``(num_channels, spatial_dim_1[, spatial_dim_2, ...])``,
       except for example: `AddChannel` expects (spatial_dim_1[, spatial_dim_2, ...])
  
  - the channel dimension is often not omitted even if number of channels is one.
  
  This method can optionally take additional arguments to help execute transformation operation.
  
  Raises:
      NotImplementedError: When the subclass does not override this method.
code: def __call__(self, data: Any):
      """
      ``data`` is an element which often comes from an iteration over an
      iterable, such as :py:class:`torch.utils.data.Dataset`. This method should
      return an updated version of ``data``.
      To simplify the input validations, most of the transforms assume that
  
      - ``data`` is a Numpy ndarray, PyTorch Tensor or string,
      - the data shape can be:
  
        #. string data without shape, `LoadImage` transform expects file paths,
        #. most of the pre-/post-processing transforms expect: ``(num_channels, spatial_dim_1[, spatial_dim_2, ...])``,
           except for example: `AddChannel` expects (spatial_dim_1[, spatial_dim_2, ...])
  
      - the channel dimension is often not omitted even if number of channels is one.
  
      This method can optionally take additional arguments to help execute transformation operation.
  
      Raises:
          NotImplementedError: When the subclass does not override this method.
  
      """
      raise NotImplementedError(
          f"Subclass {self.__class__.__name__} must implement this method."
      )
  
imports: from __future__ import annotations
  import logging
  from abc import ABC, abstractmethod
  from collections.abc import Callable, Generator, Hashable, Iterable, Mapping
  from typing import Any, TypeVar
  import numpy
  import torch
  from monai import config, transforms
  from monai.config import KeysCollection
  from monai.data.meta_tensor import MetaTensor
  from monai.transforms.traits import LazyTrait, RandomizableTrait, ThreadUnsafe
  from monai.utils import MAX_SEED, ensure_tuple, first
  from monai.utils.enums import TransformBackends
  from monai.utils.misc import MONAIEnvVars
label_desc: Use image node_id 1 for calling the Transform obj's underlying member method code with example usage: obj.__call__(data) without return types