class_docstr: The feature-store class used to store feature data for GNNs
class_docstr_tok: ["The","feature-store","class","used","to","store","feature","data","for","GNNs"]
docstr: Retrieve the feature data corresponding to the indices, type and feature name
  
  Parameters:
  -----------
  indices: np.ndarray or torch.Tensor
      The indices of the values to extract.
  type_name : str
      The node-type/edge-type to store data
  feat_name:
      The feature name to retrieve data for
  
  Returns:
  --------
  np.ndarray or torch.Tensor
      Array object of the backend type
docstr_tok: ["Retrieve","the","feature","data","corresponding","to","the","indices",",","type","and","feature","name","Parameters",":","--","--","--","--","--","-","indices",":","np.ndarray","or","torch.Tensor","The","indices","of","the","values","to","extract",".","type_name",":","str","The","node-type\/edge-type","to","store","data","feat_name",":","The","feature","name","to","retrieve","data","for","Returns",":","--","--","--","--","np.ndarray","or","torch.Tensor","Array","object","of","the","backend","type"]
code: def get_data(
      self,
      indices: Union[np.ndarray, torch.Tensor],
      type_name: str,
      feat_name: str,
  ) -> Union[np.ndarray, torch.Tensor]:
      """
      Retrieve the feature data corresponding to the indices, type and feature name
  
      Parameters:
      -----------
      indices: np.ndarray or torch.Tensor
          The indices of the values to extract.
      type_name : str
          The node-type/edge-type to store data
      feat_name:
          The feature name to retrieve data for
  
      Returns:
      --------
      np.ndarray or torch.Tensor
          Array object of the backend type
      """
  
      if feat_name not in self.fd:
          raise ValueError(
              f"{feat_name} not found in features: {list(self.fd.keys())}"
          )
  
      if type_name not in self.fd[feat_name]:
          raise ValueError(
              f"type_name {type_name} not found in"
              f" feature: {list(self.fd[feat_name].keys())}"
          )
  
      feat = self.fd[feat_name][type_name]
      if not isinstance(wgth, MissingModule) and isinstance(
          feat, wgth.WholeMemoryEmbedding
      ):
          indices_tensor = (
              indices
              if isinstance(indices, torch.Tensor)
              else torch.as_tensor(indices, device="cuda")
          )
          return feat.gather(indices_tensor)
      else:
          return feat[indices]
  
file_path: cugraph/python/cugraph/cugraph/gnn/feature_storage/feat_storage.py
imports: from __future__ import annotations
  from collections import defaultdict
  from typing import Sequence, Union
  import cudf
  import cupy
  import numpy
  import pandas
  from cugraph.utilities.utils import import_optional, MissingModule
label_desc: Use image node_id 4 for calling the FeatureStore obj's underlying member method code with example usage: obj.get_data(indices, type_name, feat_name) and returns: feat, feat