code: def test_precompute(self):
      pos = torch.tensor(
          [[1, 0, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [0.1, 0, 0]]
      )
      x = torch.tensor([0, 0, 0, 0, 1]).unsqueeze(-1)
      support = Data(x=x, pos=pos)
  
      query = GridSampling3D(1)(support.clone())
  
      interpolate = KNNInterpolate(1)
      up = interpolate.precompute(query, support)
      self.assertEqual(up.num_nodes, 5)
      self.assertEqual(up.x_idx[4], up.x_idx[3])
  
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 1 for calling the TestInterpolate obj's underlying member method code with example usage: obj.test_precompute() without return types