code: def aggregate_dir_av(h, eig_s, eig_d, eig_idx):
      """directional average aggregation"""
      h_mod = torch.mul(
          h,
          (
              torch.abs(eig_s[:, :, eig_idx] - eig_d[:, :, eig_idx])
              / (
                  torch.sum(
                      torch.abs(
                          eig_s[:, :, eig_idx] - eig_d[:, :, eig_idx]
                      ),
                      keepdim=True,
                      dim=1,
                  )
                  + 1e-30
              )
          ).unsqueeze(-1),
      )
      return torch.sum(h_mod, dim=1)
  
file_path: dgl/python/dgl/nn/pytorch/conv/dgnconv.py
imports: from functools import partial
  import torch
  import torch.nn
  from .pnaconv import AGGREGATORS, PNAConv, PNAConvTower, SCALERS
label_desc: Use image node_id 1 for calling a global function with example usage: aggregate_dir_av(h, eig_s, eig_d, eig_idx) and returns: torch