class_docstr: Perform a roll augmentation by shifting the window in a circular manner.
docstr: Apply the transformation to the input data.
  
  Input data must have {"samples": {"audio": torch.Tensor}}. The audio
  must be [C, N] in shape, where C is the number of channels, and N is the
  number of samples.
  
  Returns:
      The transformed batch.
docstr_tok: ["Apply","the","transformation","to","the","input","data",".","Input","data","must","have","{","``","samples","''",":","{","``","audio","''",":","torch.Tensor","}","}",".","The","audio","must","be","[","C",",","N","]","in","shape",",","where","C","is","the","number","of","channels",",","and","N","is","the","number","of","samples",".","Returns",":","The","transformed","batch","."]
code: def __call__(
      self,
      data: Dict[
          str, Union[Dict[str, torch.Tensor], torch.Tensor, int]
      ],
      *args,
      **kwargs,
  ) -> Dict[str, Union[Dict[str, torch.Tensor], torch.Tensor, int]]:
      """
      Apply the transformation to the input data.
  
      Input data must have {"samples": {"audio": torch.Tensor}}. The audio
      must be [C, N] in shape, where C is the number of channels, and N is the
      number of samples.
  
      Returns:
          The transformed batch.
      """
      audio = data["samples"]["audio"]
      C, N = audio.shape
      if not C in (1, 2):
          raise ValueError(f"Unexpected number of channels {C}")
  
      audio = torch.roll(
          audio,
          torch.randint(
              -int(N * self.window), int(N * self.window), [1]
          ).item(),
          1,
      )
      data["samples"]["audio"] = audio
      return data
  
imports: import argparse
  import math
  import pathlib
  import random
  from typing import Callable, Dict, List, Optional, Union
  import torch
  import torchaudio
  from data.transforms import TRANSFORMATIONS_REGISTRY, BaseTransformation
  from data.transforms.audio_aux import mfccs
label_desc: Use image node_id 3 for calling the Roll obj's underlying member method code with example usage: obj.__call__(data) and returns: data