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"]
docstr: Factory method for the tracker
  
  Arguments:
      wandb_log - Log using weight and biases
      tensorboard_log - Log using tensorboard
  Returns:
      [BaseTracker] -- tracker
docstr_tok: ["Factory","method","for","the","tracker","Arguments",":","wandb_log","-","Log","using","weight","and","biases","tensorboard_log","-","Log","using","tensorboard","Returns",":","[","BaseTracker","]","--","tracker"]
code: def get_tracker(self, wandb_log: bool, tensorboard_log: bool):
      """Factory method for the tracker
  
      Arguments:
          wandb_log - Log using weight and biases
          tensorboard_log - Log using tensorboard
      Returns:
          [BaseTracker] -- tracker
      """
      return ShapenetPartTracker(
          self, wandb_log=wandb_log, use_tensorboard=tensorboard_log
      )
  
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 4 for calling the ShapeNetDataset obj's underlying member method code with example usage: obj.get_tracker(wandb_log, tensorboard_log) and returns: ShapenetPartTracker