class_docstr: Synthetic dataset of various geometric shapes like cubes, spheres or
  pyramids.
  
  .. note::
  
      Data objects hold mesh faces instead of edge indices.
      To convert the mesh to a graph, use the
      :obj:`torch_geometric.transforms.FaceToEdge` as :obj:`pre_transform`.
      To convert the mesh to a point cloud, use the
      :obj:`torch_geometric.transforms.SamplePoints` as :obj:`transform` to
      sample a fixed number of points on the mesh faces according to their
      face area.
  
  Args:
      root (str): Root directory where the dataset should be saved.
      train (bool, optional): If :obj:`True`, loads the training dataset,
          otherwise the test dataset. (default: :obj:`True`)
      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
        - #classes
      * - 80
        - ~148.8
        - ~859.5
        - 3
        - 40
code: def process_set(self, dataset: str) -> List[Data]:
      categories = glob.glob(osp.join(self.raw_dir, "*", ""))
      categories = sorted([x.split(os.sep)[-2] for x in categories])
  
      data_list = []
      for target, category in enumerate(categories):
          folder = osp.join(self.raw_dir, category, dataset)
          paths = glob.glob(f"{folder}/*.off")
          for path in paths:
              data = read_off(path)
              assert data.pos is not None
              data.pos = data.pos - data.pos.mean(dim=0, keepdim=True)
              data.y = torch.tensor([target])
              data_list.append(data)
  
      if self.pre_filter is not None:
          data_list = [d for d in data_list if self.pre_filter(d)]
  
      if self.pre_transform is not None:
          data_list = [self.pre_transform(d) for d in data_list]
  
      return data_list
  
file_path: pytorch_geometric/torch_geometric/datasets/geometry.py
imports: import glob
  import os
  import os.path
  from typing import Callable, List, Optional
  import torch
  from torch_geometric.data import Data, InMemoryDataset, download_url, extract_zip
  from torch_geometric.io import read_off
label_desc: Use image node_id 6 for calling the GeometricShapes obj's underlying member method code with example usage: obj.process_set(dataset) and returns: data_list