code: def filter_cugraph_store_csc(
      feature_store: torch_geometric.data.FeatureStore,
      graph_store: torch_geometric.data.GraphStore,
      node_dict: Dict[str, torch.Tensor],
      row_dict: Dict[str, torch.Tensor],
      col_dict: Dict[str, torch.Tensor],
      edge_dict: Dict[str, Tuple[torch.Tensor]],
  ) -> torch_geometric.data.HeteroData:
      data = torch_geometric.data.HeteroData()
  
      for attr in graph_store.get_all_edge_attrs():
          key = attr.edge_type
          if key in row_dict and key in col_dict:
              data.put_edge_index(
                  (row_dict[key], col_dict[key]),
                  edge_type=key,
                  layout="csc",
                  is_sorted=True,
              )
  
      required_attrs = []
      for attr in feature_store.get_all_tensor_attrs():
          if attr.group_name in node_dict:
              attr.index = node_dict[attr.group_name]
              required_attrs.append(attr)
              data[attr.group_name].num_nodes = attr.index.size(0)
  
      tensors = feature_store.multi_get_tensor(required_attrs)
      for i, attr in enumerate(required_attrs):
          data[attr.group_name][attr.attr_name] = tensors[i]
  
      return data
  
file_path: cugraph/python/cugraph-pyg/cugraph_pyg/sampler/cugraph_sampler.py
imports: from typing import Sequence, Dict, Tuple
  from cugraph_pyg.data import CuGraphStore
  from cugraph.utilities.utils import import_optional
  import cudf
label_desc: Use image node_id 5 for calling a global function with example usage: filter_cugraph_store_csc(feature_store, graph_store, node_dict, row_dict, col_dict, edge_dict) and returns: data