class_docstr: A plain python object modeling a heterogeneous graph with various
  attributes (Node types in :class:`HeteroGraph` require string type).
  
  Args:
      G (:class:`networkx.classes.graph`): A NetworkX graph object which
          contains features and labels for each node type and edge type.
      **kwargs: Keyworded argument list with keys such
          as :obj:`"node_feature"`, :obj:`"node_label"` and
          corresponding attributes.
class_docstr_tok: ["A","plain","python","object","modeling","a","heterogeneous","graph","with","various","attributes","(","Node","types","in",":","class",":","`","HeteroGraph","`","require","string","type",")",".","Args",":","G","(",":","class",":","`","networkx.classes.graph","`",")",":","A","NetworkX","graph","object","which","contains","features","and","labels","for","each","node","type","and","edge","type",".","*","*","kwargs",":","Keyworded","argument","list","with","keys","such","as",":","obj",":","`","``","node_feature","''","`",",",":","obj",":","`","``","node_label","''","`","and","corresponding","attributes","."]
docstr: custom support version of _split_link_pred
docstr_tok: ["custom","support","version","of","_split_link_pred"]
code: def _custom_split_link_pred(self):
      r"""
      custom support version of _split_link_pred
      """
      split_num = len(self.general_splits)
      split_graph = []
      edges_train = self.general_splits[0]
      edges_val = self.general_splits[1]
  
      graph_train = HeteroGraph(
          self._edge_subgraph_with_isonodes(
              self.G,
              edges_train,
          ),
          disjoint_split=(self.disjoint_split),
          negative_edges=(self.negative_edges),
      )
  
      graph_train.negative_label_val = self.negative_label_val
  
      graph_val = copy.copy(graph_train)
      if split_num == 3:
          edges_test = self.general_splits[2]
          graph_test = HeteroGraph(
              self._edge_subgraph_with_isonodes(
                  self.G, edges_train + edges_val
              ),
              negative_edges=(self.negative_edges),
          )
          graph_test.negative_label_val = self.negative_label_val
  
      graph_train._create_label_link_pred(
          graph_train, edges_train, list(graph_train.G.nodes(data=True))
      )
      graph_val._create_label_link_pred(
          graph_val, edges_val, list(graph_val.G.nodes(data=True))
      )
  
      if split_num == 3:
          graph_test._create_label_link_pred(
              graph_test,
              edges_test,
              list(graph_test.G.nodes(data=True)),
          )
  
      split_graph.append(graph_train)
      split_graph.append(graph_val)
      if split_num == 3:
          split_graph.append(graph_test)
  
      return split_graph
  
imports: import math
  import copy
  import random
  import torch
  import networkx
  import numpy
  from deepsnap.graph import Graph
  from typing import Dict, List, Union
  import warnings
label_desc: Use image node_id 32 for calling the HeteroGraph obj's underlying member method code with example usage: obj._custom_split_link_pred() and returns: split_graph