code: def scatter_(name, src, index, dim_size=None):
      r"""Aggregates all values from the :attr:`src` tensor at the indices
      specified in the :attr:`index` tensor along the first dimension.
      If multiple indices reference the same location, their contributions
      are aggregated according to :attr:`name` (either :obj:`"add"`,
      :obj:`"mean"` or :obj:`"max"`).
  
      Args:
          name (string): The aggregation to use (:obj:`"add"`, :obj:`"mean"`,
              :obj:`"max"`).
          src (Tensor): The source tensor.
          index (LongTensor): The indices of elements to scatter.
          dim_size (int, optional): Automatically create output tensor with size
              :attr:`dim_size` in the first dimension. If set to :attr:`None`, a
              minimal sized output tensor is returned. (default: :obj:`None`)
  
      :rtype: :class:`Tensor`
      """
  
      assert name in ["add", "mean", "max"]
  
      op = getattr(torch_scatter, "scatter_{}".format(name))
      fill_value = -1e9 if name == "max" else 0
  
      out = op(src, index, 0, None, dim_size)
      if isinstance(out, tuple):
          out = out[0]
  
      if name == "max":
          out[out == fill_value] = 0
  
      return out
  
imports: from torch_geometric.nn import GATConv, GCNConv, ChebConv, SAGEConv, GatedGraphConv, ARMAConv, SGConv
  import torch_geometric.nn
  import torch
  from torch import nn
  import torch.nn.functional
  import inspect
  import sys
  from torch_scatter import scatter_add
  import torch_scatter
  from torch.nn import Parameter
  from torch_geometric.nn.inits import glorot, zeros
  from torch_geometric.utils import remove_self_loops, add_self_loops, add_remaining_self_loops, softmax
label_desc: Use image node_id 2 for calling a global function with example usage: scatter_(name, src, index, dim_size) and returns: out