class_docstr: Wrapper around ShapeNet that creates train and test datasets.
  
  Parameters
  ----------
  dataset_opt: omegaconf.DictConfig
      Config dictionary that should contain
  
          - dataroot
          - category: List of categories or All
          - normal: bool, include normals or not
          - pre_transforms
          - train_transforms
          - test_transforms
          - val_transforms
class_docstr_tok: ["Wrapper","around","ShapeNet","that","creates","train","and","test","datasets",".","Parameters","--","--","--","--","--","dataset_opt",":","omegaconf.DictConfig","Config","dictionary","that","should","contain","-","dataroot","-","category",":","List","of","categories","or","All","-","normal",":","bool",",","include","normals","or","not","-","pre_transforms","-","train_transforms","-","test_transforms","-","val_transforms"]
code: def __init__(self, dataset_opt):
      super().__init__(dataset_opt)
      try:
          self._category = dataset_opt.category
          is_test = dataset_opt.get("is_test", False)
      except KeyError:
          self._category = None
  
      self.train_dataset = ShapeNet(
          self._data_path,
          self._category,
          include_normals=dataset_opt.normal,
          split="train",
          pre_transform=self.pre_transform,
          transform=self.train_transform,
          is_test=is_test,
      )
  
      self.val_dataset = ShapeNet(
          self._data_path,
          self._category,
          include_normals=dataset_opt.normal,
          split="val",
          pre_transform=self.pre_transform,
          transform=self.val_transform,
          is_test=is_test,
      )
  
      self.test_dataset = ShapeNet(
          self._data_path,
          self._category,
          include_normals=dataset_opt.normal,
          split="test",
          transform=self.test_transform,
          pre_transform=self.pre_transform,
          is_test=is_test,
      )
      self._categories = self.train_dataset.categories
  
imports: import os
  import os.path
  import shutil
  import json
  from tqdm.auto import tqdm
  from itertools import repeat, product
  import numpy
  import torch
  from torch_geometric.data import Data, InMemoryDataset, extract_zip
  from torch_geometric.io import read_txt_array
  import torch_geometric.transforms
  from torch_points3d.core.data_transform import SaveOriginalPosId
  from torch_points3d.metrics.shapenet_part_tracker import ShapenetPartTracker
  from torch_points3d.datasets.base_dataset import BaseDataset, save_used_properties
  from torch_points3d.utils.download import download_url
label_desc: Use image node_id 1 to create a new ShapeNetDataset object from inherited base classes: BaseDataset with example: obj = ShapeNetDataset(dataset_opt)