code: def __getitem__(self, idx: int):
      if self._input_files is None:
          raise dgl.DGLError(
              "Please set input files by calling `set_input_files` "
              "before trying to fetch a sample"
          )
  
      fn, batch_offset = self._batch_to_fn_d[idx]
      if fn != self._current_batch_fn:
          if self.sparse_format == "csc":
              df = _load_sampled_file(
                  dataset_obj=self, fn=fn, skip_rename=True
              )
              self._current_batches = (
                  create_homogeneous_sampled_graphs_from_dataframe_csc(
                      df
                  )
              )
          else:
              df = _load_sampled_file(dataset_obj=self, fn=fn)
              self._current_batches = (
                  create_homogeneous_sampled_graphs_from_dataframe(
                      sampled_df=df,
                      edge_dir=self.edge_dir,
                      return_type=self._return_type,
                  )
              )
      current_offset = idx - batch_offset
      return self._current_batches[current_offset]
  
imports: from __future__ import annotations
  from typing import Tuple, Dict, Optional, List, Union
  import os
  import cudf
  from cugraph.utilities.utils import import_optional
  from cugraph_dgl.dataloading.utils.sampling_helpers import create_homogeneous_sampled_graphs_from_dataframe, create_heterogeneous_sampled_graphs_from_dataframe, create_homogeneous_sampled_graphs_from_dataframe_csc
label_desc: Use image node_id 3 for calling the HomogenousBulkSamplerDataset obj's underlying member method code with example usage: obj.__getitem__(idx) and returns: self