code: def prepare_data_structures(self):
      index_set = set(self.indices)
      max_size = max(len(y) for y in self.page_to_samples.values())
      num_pages = max(
          k for k in self.page_to_samples.keys()
      ) + np.uint64(1)
  
      self.page_to_samples_array = np.empty(
          (num_pages, max_size), dtype=np.int64
      )
      self.page_sizes = np.zeros(num_pages, dtype=np.int64)
  
      for page, content in self.page_to_samples.items():
          for c in content:
              if c in index_set:
                  self.page_to_samples_array[page][
                      self.page_sizes[page]
                  ] = c
                  self.page_sizes[page] += 1
  
file_path: ffcv/ffcv/traversal_order/quasi_random.py
imports: import random
  from typing import Sequence, TYPE_CHECKING
  from numba import njit
  import numpy
  from torch.utils.data import DistributedSampler
  from .base import TraversalOrder
label_desc: Use image node_id 2 for calling the QuasiRandom obj's underlying member method code with example usage: obj.prepare_data_structures() without return types