code: def main(cfg):
      OmegaConf.set_struct(cfg, False)
      print(cfg)
      input_path = cfg.input_path
      output_path = cfg.output_path
      radius = cfg.radius
      max_nn = cfg.max_nn
      radius_normal = cfg.radius_normal
      max_nn_normal = cfg.max_nn_normal
  
      fpfh = FPFH(radius, max_nn, radius_normal, max_nn_normal)
  
      list_frag = sorted(
          [f for f in os.listdir(input_path) if "fragment" in f]
      )
      path_table = osp.join(input_path, "table.json")
      with open(path_table, "r") as f:
          table = json.load(f)
  
      for i in range(len(list_frag)):
          print(i, table[str(i)], list_frag[i])
          data = torch.load(osp.join(input_path, list_frag[i]))
          feat = fpfh(data)
          save(
              osp.join(output_path, "features"),
              table[str(i)]["scene_path"],
              table[str(i)]["fragment_name"],
              data,
              feat,
          )
  
file_path: torch-points3d/scripts/test_registration_scripts/fpfh.py
imports: import open3d
  import torch
  import numpy
  import hydra
  import os
  import os.path
  import sys
  import json
  from omegaconf import OmegaConf
  from test_registration_scripts.save_feature import save
label_desc: Use image node_id 1 for calling a global function with example usage: main(cfg) without return types