class_docstr: Translates node positions by randomly sampled translation values
  within a given interval (functional name: :obj:`random_jitter`).
  In contrast to other random transformations,
  translation is applied separately at each position.
  
  Args:
      translate (sequence or float or int): Maximum translation in each
          dimension, defining the range
          :math:`(-\mathrm{translate}, +\mathrm{translate})` to sample from.
          If :obj:`translate` is a number instead of a sequence, the same
          range is used for each dimension.
code: def forward(self, data: Data) -> Data:
      assert data.pos is not None
      num_nodes, dim = data.pos.size()
  
      translate: Sequence[Union[float, int]]
      if isinstance(self.translate, (int, float)):
          translate = list(repeat(self.translate, times=dim))
      else:
          assert len(self.translate) == dim
          translate = self.translate
  
      jitter = data.pos.new_empty(num_nodes, dim)
      for d in range(dim):
          jitter[:, d].uniform_(-abs(translate[d]), abs(translate[d]))
  
      data.pos = data.pos + jitter
  
      return data
  
file_path: pytorch_geometric/torch_geometric/transforms/random_jitter.py
imports: from itertools import repeat
  from typing import Sequence, Union
  from torch_geometric.data import Data
  from torch_geometric.data.datapipes import functional_transform
  from torch_geometric.transforms import BaseTransform
label_desc: Use image node_id 2 for calling the RandomJitter obj's underlying member method code with example usage: obj.forward(data) and returns: data