code: def test_compose_transform(self):
      string = """
          - transform: ComposeTransform
            params:
              transform_options:
                - transform: GridSampling3D
                  params:
                    size: 0.1
                - transform: RandomNoise
                  params:
                    sigma: 0.05
          """
  
      conf = OmegaConf.create(string)
  
      pos = torch.randn(10000, 3)
      x = torch.randn(10000, 6)
      dummy = torch.randn(10000, 6)
      data = Data(pos=pos, x=x, dummy=dummy)
      tr = instantiate_transforms(conf)
      tr(data)
  
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 26 for calling the Testhelpers obj's underlying member method code with example usage: obj.test_compose_transform() without return types