code: def test_normalizeFeature(self):
      tr = NormalizeFeature(
          feature_name="new_feature", standardize=False
      )
      d = Data(
          new_feature=torch.tensor([[-3, -2, -1, 0, 1, 2]]).float()
      )
      d = tr(d)
      torch.testing.assert_allclose(
          d.new_feature,
          torch.tensor([[0, 0.2, 0.4, 0.6, 0.8, 1]]).float(),
      )
  
      tr = NormalizeFeature(
          feature_name="new_feature", standardize=True
      )
      d = Data(new_feature=torch.tensor([[0, 1]]).float())
      d = tr(d)
      torch.testing.assert_allclose(
          d.new_feature,
          (d.new_feature - d.new_feature.mean()) / d.new_feature.std(),
      )
  
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 15 for calling the Testhelpers obj's underlying member method code with example usage: obj.test_normalizeFeature() without return types