code: def download(self):
      # we download the raw RGBD file for the train and the validation data
      folder = osp.join(self.raw_dir, self.mode)
      if files_exist([folder]):  # pragma: no cover
          log.warning("already downloaded {}".format(self.mode))
          return
      log.info("Download elements in the file {}...".format(folder))
      for url in self.dict_urls[self.mode]:
          path = download_url(url, folder, self.verbose)
          extract_zip(path, folder, self.verbose)
          os.unlink(path)
  
imports: import json
  import logging
  import numpy
  import os
  import os.path
  from plyfile import PlyData
  import shutil
  import torch
  from torch_geometric.data import Dataset, download_url, extract_zip
  from torch_geometric.data import Data
  from torch_points3d.datasets.registration.detector import RandomDetector
  from torch_points3d.datasets.registration.utils import rgbd2fragment_rough
  from torch_points3d.datasets.registration.utils import rgbd2fragment_fine
  from torch_points3d.datasets.registration.utils import compute_overlap_and_matches
  from torch_points3d.datasets.registration.utils import to_list
  from torch_points3d.datasets.registration.utils import files_exist
  from torch_points3d.datasets.registration.utils import makedirs
  from torch_points3d.datasets.registration.utils import get_urls
  from torch_points3d.datasets.registration.utils import PatchExtractor
label_desc: Use image node_id 4 for calling the Base3DMatch obj's underlying member method code with example usage: obj.download() without return types