code: def test_compute(self):
      npoints = 100
      pos = torch.randn((npoints, 3))
      x = torch.randn((npoints, 4))
      support = Data(x=x, pos=pos)
      query = Data(
          x=torch.randn((npoints // 2, 4)),
          pos=torch.randn((npoints // 2, 3)),
      )
  
      interpolate = KNNInterpolate(3)
      precomputed = interpolate.precompute(query, support)
  
      gt = interpolate(query, support)
      pre = interpolate(query, support, precomputed=precomputed)
  
      torch.testing.assert_allclose(gt, pre)
  
file_path: torch-points3d/test/test_interpolateop.py
imports: import unittest
  import torch
  from torch_geometric.data import Data
  from torch_points3d.core.spatial_ops import KNNInterpolate
  from torch_points3d.core.data_transform import GridSampling3D
label_desc: Use image node_id 2 for calling the TestInterpolate obj's underlying member method code with example usage: obj.test_compute() without return types