code: def update(
      self, data_root, seq, data_type, result_root, result_filename
  ):
      assert data_type == "kitti", "data_type should 'kitti'"
      self.result_root = result_root
      self.gt_path = data_root
      gt_path = "{}/../labels/{}.txt".format(data_root, seq)
      gt = open(gt_path, "r")
      max_frame = 0
      for line in gt:
          line = line.strip()
          line_list = line.split(" ")
          if int(line_list[0]) > max_frame:
              max_frame = int(line_list[0])
      rs = open(result_filename, "r")
      for line in rs:
          line = line.strip()
          line_list = line.split(" ")
          if int(line_list[0]) > max_frame:
              max_frame = int(line_list[0])
      gt.close()
      rs.close()
      self.n_frames.append(max_frame + 1)
      self.seqs.append(seq)
      self.n_sequences += 1
  
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 3 for calling the KITTIMOTMetric obj's underlying member method code with example usage: obj.update(data_root, seq, data_type, result_root, result_filename) without return types