class_docstr: An implementation similar to the Integrated Graph Convolutional Long Short Term
  Memory Cell for heterogeneous Graphs.
  
  Args:
      in_channels_dict (dict of keys=str and values=int): Dimension of each node's input features.
      out_channels (int): Number of output features.
      metadata (tuple): Metadata on node types and edge types in the graphs. Can be generated via PyG method
          :obj:`snapshot.metadata()` where snapshot is a single HeteroData object.
      bias (bool, optional): If set to :obj:`False`, the layer will not learn
          an additive bias. (default: :obj:`True`)
docstr: Making a forward pass. If the hidden state and cell state
  matrix dicts are not present when the forward pass is called these are
  initialized with zeros.
  
  Arg types:
      * **x_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensors)* - Node features dicts. Can
          be obtained via PyG method :obj:`snapshot.x_dict` where snapshot is a single HeteroData object.
      * **edge_index_dict** *(Dictionary where keys=Tuples and values=PyTorch Long Tensors)* - Graph edge type
          and index dicts. Can be obtained via PyG method :obj:`snapshot.edge_index_dict`.
      * **h_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor, optional)* - Node type and
          hidden state matrix dict for all nodes.
      * **c_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor, optional)* - Node type and
          cell state matrix dict for all nodes.
  
  Return types:
      * **h_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor)* - Node type and
          hidden state matrix dict for all nodes.
      * **c_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor)* - Node type and
          cell state matrix dict for all nodes.
docstr_tok: ["Making","a","forward","pass",".","If","the","hidden","state","and","cell","state","matrix","dicts","are","not","present","when","the","forward","pass","is","called","these","are","initialized","with","zeros",".","Arg","types",":","*","*","*","x_dict","*","*","*","(","Dictionary","where","keys=Strings","and","values=PyTorch","Float","Tensors",")","*","-","Node","features","dicts",".","Can","be","obtained","via","PyG","method",":","obj",":","`","snapshot.x_dict","`","where","snapshot","is","a","single","HeteroData","object",".","*","*","*","edge_index_dict","*","*","*","(","Dictionary","where","keys=Tuples","and","values=PyTorch","Long","Tensors",")","*","-","Graph","edge","type","and","index","dicts",".","Can","be","obtained","via","PyG","method",":","obj",":","`","snapshot.edge_index_dict","`",".","*","*","*","h_dict","*","*","*","(","Dictionary","where","keys=Strings","and","values=PyTorch","Float","Tensor",",","optional",")","*","-","Node","type","and","hidden","state","matrix","dict","for","all","nodes",".","*","*","*","c_dict","*","*","*","(","Dictionary","where","keys=Strings","and","values=PyTorch","Float","Tensor",",","optional",")","*","-","Node","type","and","cell","state","matrix","dict","for","all","nodes",".","Return","types",":","*","*","*","h_dict","*","*","*","(","Dictionary","where","keys=Strings","and","values=PyTorch","Float","Tensor",")","*","-","Node","type","and","hidden","state","matrix","dict","for","all","nodes",".","*","*","*","c_dict","*","*","*","(","Dictionary","where","keys=Strings","and","values=PyTorch","Float","Tensor",")","*","-","Node","type","and","cell","state","matrix","dict","for","all","nodes","."]
code: def forward(
      self,
      x_dict,
      edge_index_dict,
      h_dict=None,
      c_dict=None,
  ):
      """
      Making a forward pass. If the hidden state and cell state
      matrix dicts are not present when the forward pass is called these are
      initialized with zeros.
  
      Arg types:
          * **x_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensors)* - Node features dicts. Can
              be obtained via PyG method :obj:`snapshot.x_dict` where snapshot is a single HeteroData object.
          * **edge_index_dict** *(Dictionary where keys=Tuples and values=PyTorch Long Tensors)* - Graph edge type
              and index dicts. Can be obtained via PyG method :obj:`snapshot.edge_index_dict`.
          * **h_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor, optional)* - Node type and
              hidden state matrix dict for all nodes.
          * **c_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor, optional)* - Node type and
              cell state matrix dict for all nodes.
  
      Return types:
          * **h_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor)* - Node type and
              hidden state matrix dict for all nodes.
          * **c_dict** *(Dictionary where keys=Strings and values=PyTorch Float Tensor)* - Node type and
              cell state matrix dict for all nodes.
      """
  
      h_dict = self._set_hidden_state(x_dict, h_dict)
      c_dict = self._set_cell_state(x_dict, c_dict)
      i_dict = self._calculate_input_gate(
          x_dict, edge_index_dict, h_dict, c_dict
      )
      f_dict = self._calculate_forget_gate(
          x_dict, edge_index_dict, h_dict, c_dict
      )
      c_dict = self._calculate_cell_state(
          x_dict, edge_index_dict, h_dict, c_dict, i_dict, f_dict
      )
      o_dict = self._calculate_output_gate(
          x_dict, edge_index_dict, h_dict, c_dict
      )
      h_dict = self._calculate_hidden_state(o_dict, c_dict)
      return h_dict, c_dict
  
imports: import torch
  from torch.nn import Parameter
  from torch_geometric.nn import HeteroConv, SAGEConv
  from torch_geometric.nn.inits import glorot
  import torch.nn
label_desc: Use image node_id 15 for calling the HeteroGCLSTM obj's underlying member method code with example usage: obj.forward(x_dict, edge_index_dict, h_dict, c_dict) and returns: h_dict,  c_dict