code: def test_neighbor_sample_multi_vertex(
      dask_client, multi_edge_multi_vertex_graph_1
  ):
      F, G, N = multi_edge_multi_vertex_graph_1
      cugraph_store = CuGraphStore(F, G, N, multi_gpu=True, order="CSR")
  
      batches = cudf.DataFrame(
          {
              "start": cudf.Series([0, 1, 2, 3, 4], dtype="int64"),
              "batches": cudf.Series(cupy.zeros(5, dtype="int32")),
          }
      )
  
      sampling_results = (
          uniform_neighbor_sample(
              cugraph_store._subgraph(),
              batches,
              fanout_vals=[-1],
              with_replacement=False,
              with_edge_properties=True,
              random_state=62,
              return_offsets=False,
              with_batch_ids=True,
              use_legacy_names=False,
          )
          .sort_values(by=["majors", "minors"])
          .compute()
      )
  
      out = _sampler_output_from_sampling_results_heterogeneous(
          sampling_results=sampling_results,
          renumber_map=None,
          graph_store=cugraph_store,
          metadata=torch.arange(6, dtype=torch.int64),
      )
  
      noi_groups = out.node
      row_dict = out.row
      col_dict = out.col
      metadata = out.metadata
  
      assert metadata.tolist() == list(range(6))
  
      for node_type, node_ids in noi_groups.items():
          actual_vertex_ids = torch.arange(N[node_type])
  
          assert node_ids.tolist() == sorted(actual_vertex_ids.tolist())
  
      for edge_type, ei in G.items():
          assert sorted(row_dict[edge_type].tolist()) == sorted(
              ei[0].tolist()
          )
          assert sorted(col_dict[edge_type].tolist()) == sorted(
              ei[1].tolist()
          )
  
      # check the hop dictionaries
      assert len(out.num_sampled_nodes) == 2
      assert out.num_sampled_nodes["black"].tolist() == [2, 0]
      assert out.num_sampled_nodes["brown"].tolist() == [3, 0]
  
      assert len(out.num_sampled_edges) == 5
      assert out.num_sampled_edges[
          ("brown", "horse", "brown")
      ].tolist() == [2]
      assert out.num_sampled_edges[
          ("brown", "tortoise", "black")
      ].tolist() == [3]
      assert out.num_sampled_edges[
          ("brown", "mongoose", "black")
      ].tolist() == [2]
      assert out.num_sampled_edges[
          ("black", "cow", "brown")
      ].tolist() == [2]
      assert out.num_sampled_edges[
          ("black", "snake", "black")
      ].tolist() == [1]
  
file_path: cugraph/python/cugraph-pyg/cugraph_pyg/tests/mg/test_mg_cugraph_sampler.py
imports: import cudf
  import cupy
  import pytest
  from cugraph_pyg.data import CuGraphStore
  from cugraph_pyg.sampler.cugraph_sampler import _sampler_output_from_sampling_results_heterogeneous
  from cugraph.gnn import FeatureStore
  from cugraph.utilities.utils import import_optional, MissingModule
  from cugraph.dask import uniform_neighbor_sample
label_desc: Use image node_id 2 for calling a global function with example usage: test_neighbor_sample_multi_vertex(dask_client, multi_edge_multi_vertex_graph_1) without return types