class_docstr: The protein-protein interaction networks from the `"Predicting
  Multicellular Function through Multi-layer Tissue Networks"
  <https://arxiv.org/abs/1707.04638>`_ paper, containing positional gene
  sets, motif gene sets and immunological signatures as features (50 in
  total) and gene ontology sets as labels (121 in total).
  
  Args:
      root (str): Root directory where the dataset should be saved.
      split (str, optional): If :obj:`"train"`, loads the training dataset.
          If :obj:`"val"`, loads the validation dataset.
          If :obj:`"test"`, loads the test dataset. (default: :obj:`"train"`)
      transform (callable, optional): A function/transform that takes in an
          :obj:`torch_geometric.data.Data` object and returns a transformed
          version. The data object will be transformed before every access.
          (default: :obj:`None`)
      pre_transform (callable, optional): A function/transform that takes in
          an :obj:`torch_geometric.data.Data` object and returns a
          transformed version. The data object will be transformed before
          being saved to disk. (default: :obj:`None`)
      pre_filter (callable, optional): A function that takes in an
          :obj:`torch_geometric.data.Data` object and returns a boolean
          value, indicating whether the data object should be included in the
          final dataset. (default: :obj:`None`)
      force_reload (bool, optional): Whether to re-process the dataset.
          (default: :obj:`False`)
  
  **STATS:**
  
  .. list-table::
      :widths: 10 10 10 10 10
      :header-rows: 1
  
      * - #graphs
        - #nodes
        - #edges
        - #features
        - #tasks
      * - 20
        - ~2,245.3
        - ~61,318.4
        - 50
        - 121
code: def __init__(
      self,
      root: str,
      split: str = "train",
      transform: Optional[Callable] = None,
      pre_transform: Optional[Callable] = None,
      pre_filter: Optional[Callable] = None,
      force_reload: bool = False,
  ) -> None:
      assert split in ["train", "val", "test"]
  
      super().__init__(
          root,
          transform,
          pre_transform,
          pre_filter,
          force_reload=force_reload,
      )
  
      if split == "train":
          self.load(self.processed_paths[0])
      elif split == "val":
          self.load(self.processed_paths[1])
      elif split == "test":
          self.load(self.processed_paths[2])
  
file_path: pytorch_geometric/torch_geometric/datasets/ppi.py
imports: import json
  import os
  import os.path
  from itertools import product
  from typing import Callable, List, Optional
  import numpy
  import torch
  from torch_geometric.data import Data, InMemoryDataset, download_url, extract_zip
  from torch_geometric.utils import remove_self_loops
label_desc: Use image node_id 1 to create a new PPI object from inherited base classes: InMemoryDataset with example: obj = PPI(root, split, transform, pre_transform, pre_filter, force_reload)