docstr: Input:
      root: the root path to the local data files
      npoint: number of points from each cloud
      split: which split of the data, 'train' or 'test'
      fps: whether to sample points with farthest point sampler
      normal_channel: whether to use additional channel
      cache_size: the cache size of in-memory point clouds
docstr_tok: ["Input",":","root",":","the","root","path","to","the","local","data","files","npoint",":","number","of","points","from","each","cloud","split",":","which","split","of","the","data",",","'train","'","or","'test'","fps",":","whether","to","sample","points","with","farthest","point","sampler","normal_channel",":","whether","to","use","additional","channel","cache_size",":","the","cache","size","of","in-memory","point","clouds"]
code: def __init__(
      self,
      root,
      npoint=1024,
      split="train",
      fps=False,
      normal_channel=True,
      cache_size=15000,
  ):
      """
      Input:
          root: the root path to the local data files
          npoint: number of points from each cloud
          split: which split of the data, 'train' or 'test'
          fps: whether to sample points with farthest point sampler
          normal_channel: whether to use additional channel
          cache_size: the cache size of in-memory point clouds
      """
      self.root = root
      self.npoints = npoint
      self.fps = fps
      self.catfile = os.path.join(
          self.root, "modelnet40_shape_names.txt"
      )
  
      self.cat = [line.rstrip() for line in open(self.catfile)]
      self.classes = dict(zip(self.cat, range(len(self.cat))))
      self.normal_channel = normal_channel
  
      shape_ids = {}
      shape_ids["train"] = [
          line.rstrip()
          for line in open(
              os.path.join(self.root, "modelnet40_train.txt")
          )
      ]
      shape_ids["test"] = [
          line.rstrip()
          for line in open(
              os.path.join(self.root, "modelnet40_test.txt")
          )
      ]
  
      assert split == "train" or split == "test"
      shape_names = [
          "_".join(x.split("_")[0:-1]) for x in shape_ids[split]
      ]
      # list of (shape_name, shape_txt_file_path) tuple
      self.datapath = [
          (
              shape_names[i],
              os.path.join(
                  self.root, shape_names[i], shape_ids[split][i]
              )
              + ".txt",
          )
          for i in range(len(shape_ids[split]))
      ]
      print("The size of %s data is %d" % (split, len(self.datapath)))
  
      self.cache_size = cache_size
      self.cache = {}
  
file_path: dgl/examples/pytorch/pointcloud/bipointnet/ModelNetDataLoader.py
imports: import os
  import warnings
  import numpy
  from torch.utils.data import Dataset
label_desc: Use image node_id 1 to create a new ModelNetDataLoader object from inherited base classes: Dataset with example: obj = ModelNetDataLoader(root, npoint, split, fps, normal_channel, cache_size)