Source code for trojai.datagen.transform_interface
from abc import ABC, abstractmethod
from numpy.random import RandomState
from .entity import Entity
from .image_entity import ImageEntity
from .text_entity import TextEntity
"""
Defines a generic Transform object.
"""
[docs]class Transform(ABC):
"""
A Transform is defined as an operation on an Entity.
"""
[docs] @abstractmethod
def do(self, input_obj: Entity, random_state_obj: RandomState) -> Entity:
"""
Perform the specified transformation
:param input_obj: the input Entity to be transformed
:param random_state_obj: a random state used to maintain reproducibility through transformations
:return: the transformed Entity
"""
pass
[docs]class ImageTransform(Transform):
"""
A Transform specific to ImageEntity objects
"""
[docs] @abstractmethod
def do(self, input_obj: ImageEntity, random_state_obj: RandomState) -> ImageEntity:
"""
Perform the specified transformation
:param input_obj: the input ImageEntity to be transformed
:param random_state_obj: a random state used to maintain reproducibility through transformations
:return: the transformed ImageEntity
"""
pass
[docs]class TextTransform(Transform):
"""
A Transform specific to TextEntity objects
"""
[docs] @abstractmethod
def do(self, input_obj: TextEntity, random_state_obj: RandomState) -> TextEntity:
"""
Perform the specified transformation
:param input_obj: the input TextEntity to be transformed
:param random_state_obj: a random state used to maintain reproducibility through transformations
:return: the transformed TextEntity
"""
pass