class_docstr: Datasets introduced in
  `Geom-GCN: Geometric Graph Convolutional Networks
  <https://arxiv.org/abs/2002.05287>`__
  
  Parameters
  ----------
  name : str
      Name of the dataset.
  raw_dir : str
      Raw file directory to store the processed data.
  force_reload : bool
      Whether to re-download the data source.
  verbose : bool
      Whether to print progress information.
  transform : callable
      A transform that takes in a :class:`~dgl.DGLGraph` object and returns
      a transformed version. The :class:`~dgl.DGLGraph` object will be
      transformed before every access.
docstr: Load and process the data.
docstr_tok: ["Load","and","process","the","data","."]
code: def process(self):
      """Load and process the data."""
      try:
          import torch
      except ImportError:
          raise ModuleNotFoundError(
              "This dataset requires PyTorch to be the backend."
          )
  
      # Process node features and labels.
      with open(
          f"{self.raw_path}/out1_node_feature_label.txt", "r"
      ) as f:
          data = f.read().split("\n")[1:-1]
      features = [
          [float(v) for v in r.split("\t")[1].split(",")] for r in data
      ]
      features = torch.tensor(features, dtype=torch.float)
      labels = [int(r.split("\t")[2]) for r in data]
      self._num_classes = max(labels) + 1
      labels = torch.tensor(labels, dtype=torch.long)
  
      # Process graph structure.
      with open(f"{self.raw_path}/out1_graph_edges.txt", "r") as f:
          data = f.read().split("\n")[1:-1]
          data = [[int(v) for v in r.split("\t")] for r in data]
      dst, src = torch.tensor(data, dtype=torch.long).t().contiguous()
  
      self._g = graph((src, dst), num_nodes=features.size(0))
      self._g.ndata["feat"] = features
      self._g.ndata["label"] = labels
  
      # Process 10 train/val/test node splits.
      train_masks, val_masks, test_masks = [], [], []
      for i in range(10):
          filepath = (
              f"{self.raw_path}/{self.name}_split_0.6_0.2_{i}.npz"
          )
          f = np.load(filepath)
          train_masks += [torch.from_numpy(f["train_mask"])]
          val_masks += [torch.from_numpy(f["val_mask"])]
          test_masks += [torch.from_numpy(f["test_mask"])]
      self._g.ndata["train_mask"] = torch.stack(
          train_masks, dim=1
      ).bool()
      self._g.ndata["val_mask"] = torch.stack(val_masks, dim=1).bool()
      self._g.ndata["test_mask"] = torch.stack(test_masks, dim=1).bool()
  
imports: import os
  import numpy
  from ..convert import graph
  from .dgl_dataset import DGLBuiltinDataset
  from .utils import _get_dgl_url
label_desc: Use image node_id 2 for calling the GeomGCNDataset obj's underlying member method code with example usage: obj.process() without return types