code: def evaluate(path_raw_fragment, path_results, list_tau1, list_tau2):
      """
      launch the evaluation procedure
      """
  
      list_scene = os.listdir(path_raw_fragment)
      list_total_res = []
      for scene in list_scene:
          print(scene)
          path_log = osp.join(path_raw_fragment, scene, "gt.log")
          list_pair_num, list_mat = read_gt_log(path_log)
          list_pair = []
          for pair in list_pair_num:
              name0 = "{}_{}_desc.npz".format("cloud_bin", pair[0])
              name1 = "{}_{}_desc.npz".format("cloud_bin", pair[1])
              list_pair.append(
                  [
                      osp.join(path_results, "features", scene, name0),
                      osp.join(path_results, "features", scene, name1),
                  ]
              )
          res_path = osp.join(path_results, "matches", scene)
          if not osp.exists(res_path):
              os.makedirs(res_path, exist_ok=True)
          dico = compute_recall_scene(
              scene, list_pair, list_mat, list_tau1, list_tau2, res_path
          )
          list_total_res.append(dico)
      total_recall = np.mean(
          [d["list_recall"] for d in list_total_res], axis=0
      )
      list_total_res.append(
          dict(
              scene_name="total",
              list_tau2=list_tau2,
              list_recall=list(total_recall),
          )
      )
      df = pd.DataFrame(list_total_res)
      df.to_csv(osp.join(path_results, "matches", "total_res.csv"))
  
file_path: torch-points3d/scripts/test_registration_scripts/descriptor_matcher.py
imports: import pandas
  import hydra
  import numpy
  from sklearn.neighbors import KDTree
  import os
  import os.path
  from omegaconf import OmegaConf
  import sys
  import matplotlib.pyplot
label_desc: Use image node_id 7 for calling a global function with example usage: evaluate(path_raw_fragment, path_results, list_tau1, list_tau2) without return types