Source code for torch_geometric.transforms.base_transform
import copy
from abc import ABC
from typing import Any
[docs]class BaseTransform(ABC):
r"""An abstract base class for writing transforms.
Transforms are a general way to modify and customize
:class:`~torch_geometric.data.Data` or
:class:`~torch_geometric.data.HeteroData` objects, either by implicitly
passing them as an argument to a :class:`~torch_geometric.data.Dataset`, or
by applying them explicitly to individual
:class:`~torch_geometric.data.Data` or
:class:`~torch_geometric.data.HeteroData` objects:
.. code-block:: python
import torch_geometric.transforms as T
from torch_geometric.datasets import TUDataset
transform = T.Compose([T.ToUndirected(), T.AddSelfLoops()])
dataset = TUDataset(path, name='MUTAG', transform=transform)
data = dataset[0] # Implicitly transform data on every access.
data = TUDataset(path, name='MUTAG')[0]
data = transform(data) # Explicitly transform data.
"""
def __call__(self, data: Any) -> Any:
# Shallow-copy the data so that we prevent in-place data modification.
return self.forward(copy.copy(data))
def forward(self, data: Any) -> Any:
pass
def __repr__(self) -> str:
return f'{self.__class__.__name__}()'