class_docstr: KITTI tracking statistics (CLEAR MOT, id-switches, fragments, ML/PT/MT, precision/recall)
  MOTA       - Multi-object tracking accuracy in [0,100]
  MOTP       - Multi-object tracking precision in [0,100] (3D) / [td,100] (2D)
  MOTAL      - Multi-object tracking accuracy in [0,100] with log10(id-switches)
  
  id-switches - number of id switches
  fragments   - number of fragmentations
  
  MT, PT, ML - number of mostly tracked, partially tracked and mostly lost trajectories
  
  recall             - recall = percentage of detected targets
  precision      - precision = percentage of correctly detected targets
  FAR                    - number of false alarms per frame
  falsepositives - number of false positives (FP)
  missed         - number of missed targets (FN)
class_docstr_tok: ["KITTI","tracking","statistics","(","CLEAR","MOT",",","id-switches",",","fragments",",","ML\/PT\/MT",",","precision\/recall",")","MOTA","-","Multi-object","tracking","accuracy","in","[","0,100","]","MOTP","-","Multi-object","tracking","precision","in","[","0,100","]","(","3D",")","\/","[","td,100","]","(","2D",")","MOTAL","-","Multi-object","tracking","accuracy","in","[","0,100","]","with","log10","(","id-switches",")","id-switches","-","number","of","id","switches","fragments","-","number","of","fragmentations","MT",",","PT",",","ML","-","number","of","mostly","tracked",",","partially","tracked","and","mostly","lost","trajectories","recall","-","recall","=","percentage","of","detected","targets","precision","-","precision","=","percentage","of","correctly","detected","targets","FAR","-","number","of","false","alarms","per","frame","falsepositives","-","number","of","false","positives","(","FP",")","missed","-","number","of","missed","targets","(","FN",")"]
docstr: Save the statistics in a whitespace separate file.
code: def saveToStats(self, save_summary):
      """
      Save the statistics in a whitespace separate file.
      """
      summary = self.createSummary()
      if save_summary:
          filename = os.path.join(
              self.result_path, "summary_%s.txt" % self.cls
          )
          dump = open(filename, "w+")
          dump.write(summary)
          dump.close()
      return summary
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  import copy
  import sys
  import math
  from collections import defaultdict
  import numpy
  from ppdet.modeling.bbox_utils import bbox_iou_np_expand
  from .map_utils import ap_per_class
  from .metrics import Metric
  from .munkres import Munkres
  from ppdet.utils.logger import setup_logger
label_desc: Use image node_id 9 for calling the KITTIEvaluation obj's underlying member method code with example usage: obj.saveToStats(save_summary) and returns: summary