code: def forward_op(x, module_dict, **kwargs):
      r"""A helper function for the heterogeneous operations. Given a dictionary input
      `x`, it will return a dictionary with the same keys and the values applied by the
      corresponding values of the `module_dict` with specified parameters. The keys in `x`
      are same as the keys in the `module_dict`. If `module_dict` is not a dictionary,
      it is assumed to be a single value.
  
      Args:
          x (Dict[str, Tensor]): A dictionary that the value of each item is a tensor.
          module_dict (:class:`torch.nn.ModuleDict`): The value of the `module_dict`
              will be fed with each value in `x`.
          **kwargs (optional): Parameters that will be passed into each value of the
              `module_dict`.
      """
      if not isinstance(x, dict):
          raise ValueError("The input x should be a dictionary.")
      res = {}
      if not isinstance(module_dict, dict) and not isinstance(
          module_dict, nn.ModuleDict
      ):
          for key in x:
              res[key] = module_dict(x[key], **kwargs)
      else:
          for key in x:
              res[key] = module_dict[key](x[key], **kwargs)
      return res
  
imports: import collections.abc
  import torch
  import torch_geometric.nn
  import torch_geometric.utils
  import torch.nn
  from torch import Tensor
  from torch_geometric.nn.inits import reset
  from torch_sparse import matmul
  from typing import List, Dict
label_desc: Use image node_id 1 for calling a global function with example usage: forward_op(x, module_dict) and returns: res