code: def test_eval_single_class(self):
      gts = [
          _Instance(
              classname=1,
              indices=np.array([1, 2, 3]),
              score=1,
              scan_id=0,
          ),
          _Instance(
              classname=1, indices=np.array([4, 5]), score=1, scan_id=0
          ),
          _Instance(
              classname=1,
              indices=np.array([6, 7, 8]),
              score=1,
              scan_id=0,
          ),
      ]
  
      preds = [
          _Instance(
              classname=1,
              indices=np.array([1, 2, 3]),
              score=1,
              scan_id=0,
          ),
          _Instance(
              classname=1, indices=np.array([6]), score=0, scan_id=0
          ),
      ]
      meter = InstanceAPMeter()
      meter.add(preds, gts)
  
      rec, prec, ap = meter.eval(0.5)
      np.testing.assert_allclose(
          rec[1], np.asarray([1.0 / 3.0, 1.0 / 3.0])
      )
      np.testing.assert_allclose(prec[1], np.asarray([1.0, 1.0 / 2.0]))
      self.assertAlmostEqual(ap[1], 1.0 / 3.0)
  
imports: import os
  import sys
  import unittest
  import torch
  import numpy
  from torch_geometric.data import Data
  from torch_points3d.models.panoptic.structures import PanopticResults, PanopticLabels
  from torch_points3d.metrics.panoptic_tracker import _Instance, InstanceAPMeter, PanopticTracker
label_desc: Use image node_id 2 for calling the TestInstanceAPMeter obj's underlying member method code with example usage: obj.test_eval_single_class() without return types