code: def test_RandomCoordsFlip(self):
      coords = torch.from_numpy(
          np.asarray([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
      )
      pos_target = torch.from_numpy(
          np.asarray([[6, 2, 3], [3, 5, 6], [0, 8, 9]])
      )
      data = Data(coords=coords)
  
      upright_axis = ["y", "z"]
      t = RandomCoordsFlip(upright_axis, p=1)
  
      pos_out = t(data.clone()).coords
  
      self.assertEqual(np.array_equal(pos_out, pos_target), True)
  
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 12 for calling the Testhelpers obj's underlying member method code with example usage: obj.test_RandomCoordsFlip() without return types