code: def forward(self, graph, feature, anchor_eid, dists_max):
      with graph.local_scope():
          u_feat = self.linear_hidden_u(feature)
          v_feat = self.linear_hidden_v(feature)
          graph.srcdata.update({"u_feat": u_feat})
          graph.dstdata.update({"v_feat": v_feat})
  
          graph.apply_edges(
              fn.u_mul_e("u_feat", "sp_dist", "u_message")
          )
          graph.apply_edges(
              fn.v_add_e("v_feat", "u_message", "message")
          )
  
          messages = torch.index_select(
              graph.edata["message"],
              0,
              torch.LongTensor(anchor_eid).to(feature.device),
          )
          messages = messages.reshape(
              dists_max.shape[0], dists_max.shape[1], messages.shape[-1]
          )
  
          messages = self.act(messages)  # n*m*d
  
          out_position = self.linear_out_position(messages).squeeze(
              -1
          )  # n*m_out
          out_structure = torch.mean(messages, dim=1)  # n*d
  
          return out_position, out_structure
  
file_path: dgl/examples/pytorch/P-GNN/model.py
imports: import dgl.function
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the PGNN_layer obj's underlying member method code with example usage: obj.forward(graph, feature, anchor_eid, dists_max) and returns: out_position,  out_structure