code: def test_pna(out_dim, dropout, act, norm, jk):
      x = torch.randn(3, 8)
      edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]])
      deg = torch.tensor([0, 2, 1])
      out_channels = 16 if out_dim is None else out_dim
      aggregators = ["mean", "min", "max", "std", "var", "sum"]
      scalers = [
          "identity",
          "amplification",
          "attenuation",
          "linear",
          "inverse_linear",
      ]
  
      model = PNA(
          8,
          16,
          num_layers=3,
          out_channels=out_dim,
          dropout=dropout,
          act=act,
          norm=norm,
          jk=jk,
          aggregators=aggregators,
          scalers=scalers,
          deg=deg,
      )
      assert str(model) == f"PNA(8, {out_channels}, num_layers=3)"
      assert model(x, edge_index).size() == (3, out_channels)
  
imports: import os
  import os.path
  import random
  import sys
  import warnings
  import pytest
  import torch
  import torch.nn.functional
  import torch_geometric.typing
  from torch_geometric.data import Data
  from torch_geometric.loader import NeighborLoader
  from torch_geometric.nn import SAGEConv
  from torch_geometric.nn.models import GAT, GCN, GIN, PNA, EdgeCNN, GraphSAGE
  from torch_geometric.profile import benchmark
  from torch_geometric.testing import onlyFullTest, onlyLinux, onlyNeighborSampler, onlyOnline, withCUDA, withPackage
label_desc: Use image node_id 5 for calling a global function with example usage: test_pna(out_dim, dropout, act, norm, jk) without return types