class_docstr: A simple message passing operator that performs (non-trainable)
  propagation.
  
  .. math::
      \mathbf{x}^{\prime}_i = \bigoplus_{j \in \mathcal{N(i)}} e_{ji} \cdot
      \mathbf{x}_j
  
  where :math:`\bigoplus` defines a custom aggregation scheme.
  
  Args:
      aggr (str or [str] or Aggregation, optional): The aggregation scheme
          to use, *e.g.*, :obj:`"add"`, :obj:`"sum"` :obj:`"mean"`,
          :obj:`"min"`, :obj:`"max"` or :obj:`"mul"`.
          In addition, can be any
          :class:`~torch_geometric.nn.aggr.Aggregation` module (or any string
          that automatically resolves to it). (default: :obj:`"sum"`)
      combine_root (str, optional): Specifies whether or how to combine the
          central node representation (one of :obj:`"sum"`, :obj:`"cat"`,
          :obj:`"self_loop"`, :obj:`None`). (default: :obj:`None`)
      **kwargs (optional): Additional arguments of
          :class:`torch_geometric.nn.conv.MessagePassing`.
  
  Shapes:
      - **inputs:**
        node features :math:`(|\mathcal{V}|, F)` or
        :math:`((|\mathcal{V_s}|, F), (|\mathcal{V_t}|, *))`
        if bipartite,
        edge indices :math:`(2, |\mathcal{E}|)`
      - **outputs:** node features :math:`(|\mathcal{V}|, F)` or
        :math:`(|\mathcal{V_t}|, F)` if bipartite
class_docstr_tok: ["A","simple","message","passing","operator","that","performs","(","non-trainable",")","propagation",".","..","math",":",":","\\mathbf","{","x","}","^","{","\\prime","}","_i","=","\\bigoplus_","{","j","\\in","\\mathcal","{","N","(","i",")","}","}","e_","{","ji","}","\\cdot","\\mathbf","{","x","}","_j","where",":","math",":","`","\\bigoplus","`","defines","a","custom","aggregation","scheme",".","Args",":","aggr","(","str","or","[","str","]","or","Aggregation",",","optional",")",":","The","aggregation","scheme","to","use",",","*","e.g",".","*",",",":","obj",":","`","``","add","''","`",",",":","obj",":","`","``","sum","''","`",":","obj",":","`","``","mean","''","`",",",":","obj",":","`","``","min","''","`",",",":","obj",":","`","``","max","''","`","or",":","obj",":","`","``","mul","''","`",".","In","addition",",","can","be","any",":","class",":","`","~torch_geometric.nn.aggr.Aggregation","`","module","(","or","any","string","that","automatically","resolves","to","it",")",".","(","default",":",":","obj",":","`","``","sum","''","`",")","combine_root","(","str",",","optional",")",":","Specifies","whether","or","how","to","combine","the","central","node","representation","(","one","of",":","obj",":","`","``","sum","''","`",",",":","obj",":","`","``","cat","''","`",",",":","obj",":","`","``","self_loop","''","`",",",":","obj",":","`","None","`",")",".","(","default",":",":","obj",":","`","None","`",")","*","*","kwargs","(","optional",")",":","Additional","arguments","of",":","class",":","`","torch_geometric.nn.conv.MessagePassing","`",".","Shapes",":","-","*","*","inputs",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F",")","`","or",":","math",":","`","(","(","|\\mathcal","{","V_s","}","|",",","F",")",",","(","|\\mathcal","{","V_t","}","|",",","*",")",")","`","if","bipartite",",","edge","indices",":","math",":","`","(","2",",","|\\mathcal","{","E","}","|",")","`","-","*","*","outputs",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F",")","`","or",":","math",":","`","(","|\\mathcal","{","V_t","}","|",",","F",")","`","if","bipartite"]
code: def message_and_aggregate(
      self, adj_t: Adj, x: OptPairTensor
  ) -> Tensor:
      assert isinstance(self.aggr, str)
      return spmm(adj_t, x[0], reduce=self.aggr)
  
file_path: pytorch_geometric/torch_geometric/nn/conv/simple_conv.py
imports: from typing import List, Optional, Union
  import torch
  from torch import Tensor
  from torch_geometric.nn.aggr import Aggregation
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.typing import Adj, OptPairTensor, OptTensor, Size, SparseTensor, torch_sparse
  from torch_geometric.utils import add_self_loops, spmm
label_desc: Use image node_id 4 for calling the SimpleConv obj's underlying member method code with example usage: obj.message_and_aggregate(adj_t, x) and returns: spmm