code: def test_select(self):
      data = Data(
          pos=torch.tensor([0, 1, 2]),
          x=torch.tensor([2, 3, 4]),
          z=torch.tensor([1]),
      )
      tr = Select(torch.tensor([1, 2]))
  
      data2 = tr(data)
      torch.testing.assert_allclose(data2.pos, torch.tensor([1, 2]))
      torch.testing.assert_allclose(data2.x, torch.tensor([3, 4]))
      torch.testing.assert_allclose(data2.z, torch.tensor([1]))
  
      tr = Select(torch.tensor([False, True, True]))
  
      data2 = tr(data)
      torch.testing.assert_allclose(data2.pos, torch.tensor([1, 2]))
      torch.testing.assert_allclose(data2.x, torch.tensor([3, 4]))
      torch.testing.assert_allclose(data2.z, torch.tensor([1]))
  
imports: import unittest
  import sys
  import os
  import torch_geometric.transforms
  import numpy
  import numpy.testing
  import torch
  from torch_geometric.data import Data
  from omegaconf.dictconfig import DictConfig
  from omegaconf.listconfig import ListConfig
  from omegaconf import OmegaConf
  from torch_points3d.core.data_transform import instantiate_transform, instantiate_transforms, GridSampling3D, MultiScaleTransform, Random3AxisRotation, AddFeatByKey, AddFeatsByKeys, RemoveAttributes, RandomDropout, ShiftVoxels, PCACompute, RandomCoordsFlip, XYZFeature, ScalePos, RandomWalkDropout, NormalizeFeature, SphereCrop, CubeCrop, RandomSphereDropout, DensityFilter, LotteryTransform, ClampBatchSize, RandomParamTransform, Select, ComposeTransform
  from torch_points3d.core.spatial_ops import RadiusNeighbourFinder, KNNInterpolate
  from torch_points3d.utils.enums import ConvolutionFormat
  from torch_points3d.datasets.multiscale_data import MultiScaleBatch
label_desc: Use image node_id 23 for calling the Testhelpers obj's underlying member method code with example usage: obj.test_select() without return types