docstr: Args:
      feat_maps (Tensor): Shape of :math:`(N, C, H, W)`.
  
  Returns:
      tuple: Returns (edge, score, text_comps).
  
          - | edge (ndarray): The edge array of shape :math:`(N, 2)`
              where each row is a pair of text component indices
              that makes up an edge in graph.
          - | score (ndarray): The score array of shape :math:`(N,)`,
              corresponding to the edge above.
          - | text_comps (ndarray): The text components of shape
              :math:`(N, 9)` where each row corresponds to one box and
              its score: (x1, y1, x2, y2, x3, y3, x4, y4, score).
docstr_tok: ["Args",":","feat_maps","(","Tensor",")",":","Shape","of",":","math",":","`","(","N",",","C",",","H",",","W",")","`",".","Returns",":","tuple",":","Returns","(","edge",",","score",",","text_comps",")",".","-","|","edge","(","ndarray",")",":","The","edge","array","of","shape",":","math",":","`","(","N",",","2",")","`","where","each","row","is","a","pair","of","text","component","indices","that","makes","up","an","edge","in","graph",".","-","|","score","(","ndarray",")",":","The","score","array","of","shape",":","math",":","`","(","N",",",")","`",",","corresponding","to","the","edge","above",".","-","|","text_comps","(","ndarray",")",":","The","text","components","of","shape",":","math",":","`","(","N",",","9",")","`","where","each","row","corresponds","to","one","box","and","its","score",":","(","x1",",","y1",",","x2",",","y2",",","x3",",","y3",",","x4",",","y4",",","score",")","."]
code: def single_test(self, feat_maps):
      r"""
      Args:
          feat_maps (Tensor): Shape of :math:`(N, C, H, W)`.
  
      Returns:
          tuple: Returns (edge, score, text_comps).
  
              - | edge (ndarray): The edge array of shape :math:`(N, 2)`
                  where each row is a pair of text component indices
                  that makes up an edge in graph.
              - | score (ndarray): The score array of shape :math:`(N,)`,
                  corresponding to the edge above.
              - | text_comps (ndarray): The text components of shape
                  :math:`(N, 9)` where each row corresponds to one box and
                  its score: (x1, y1, x2, y2, x3, y3, x4, y4, score).
      """
      pred_maps = self.out_conv(feat_maps)
      feat_maps = paddle.concat([feat_maps, pred_maps], axis=1)
  
      none_flag, graph_data = self.graph_test(pred_maps, feat_maps)
  
      (
          local_graphs_node_feat,
          adjacent_matrices,
          pivots_knn_inds,
          pivot_local_graphs,
          text_comps,
      ) = graph_data
  
      if none_flag:
          return None, None, None
      gcn_pred = self.gcn(
          local_graphs_node_feat, adjacent_matrices, pivots_knn_inds
      )
      pred_labels = F.softmax(gcn_pred, axis=1)
  
      edges = []
      scores = []
      pivot_local_graphs = pivot_local_graphs.squeeze().numpy()
  
      for pivot_ind, pivot_local_graph in enumerate(pivot_local_graphs):
          pivot = pivot_local_graph[0]
          for k_ind, neighbor_ind in enumerate(
              pivots_knn_inds[pivot_ind]
          ):
              neighbor = pivot_local_graph[neighbor_ind.item()]
              edges.append([pivot, neighbor])
              scores.append(
                  pred_labels[
                      pivot_ind * pivots_knn_inds.shape[1] + k_ind, 1
                  ].item()
              )
  
      edges = np.asarray(edges)
      scores = np.asarray(scores)
  
      return edges, scores, text_comps
  
file_path: PaddleOCR/ppocr/modeling/heads/det_drrg_head.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import warnings
  import cv2
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from .gcn import GCN
  from .local_graph import LocalGraphs
  from .proposal_local_graph import ProposalLocalGraphs
label_desc: Use image node_id 3 for calling the DRRGHead obj's underlying member method code with example usage: obj.single_test(feat_maps) and returns: edges,  scores,  text_comps, None,  None,  None