code: def _make_submission(self):
      orginal_class_ids = np.asarray(
          self._dataset.train_dataset.valid_class_idx
      )
      path_to_submission = self._dataset.path_to_submission
      for scan_id in self._full_preds:
          full_pred = (
              self._full_preds[scan_id].cpu().numpy().astype(np.int8)
          )
          full_pred = orginal_class_ids[
              full_pred
          ]  # remap labels to original labels between 0 and 40
          scan_name = self._raw_datas[scan_id].scan_name
          path_file = osp.join(
              path_to_submission, "{}.txt".format(scan_name)
          )
          np.savetxt(path_file, full_pred, delimiter="/n", fmt="%d")
  
file_path: torch-points3d/torch_points3d/metrics/scannet_segmentation_tracker.py
imports: import os.path
  from typing import Dict, Any
  import logging
  import numpy
  import torch
  from torch_geometric.nn.unpool import knn_interpolate
  from torch_points3d.metrics.confusion_matrix import ConfusionMatrix
  from torch_points3d.metrics.segmentation_tracker import SegmentationTracker
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.core.data_transform import SaveOriginalPosId
  from torch_points3d.models import model_interface
label_desc: Use image node_id 5 for calling the ScannetSegmentationTracker obj's underlying member method code with example usage: obj._make_submission() without return types