code: def test_builder_to_backend_programmatic(
      self, use_cpu_only, backend, rank_axis
  ):
      rank, axis = rank_axis
      data_shape = np.random.randint(low=2, high=8, size=rank)
      indices_shape = np.copy(data_shape)
      indices_shape[axis] = np.random.randint(low=1, high=8)
      updates_shape = indices_shape
  
      data = np.random.rand(*data_shape).astype(np.float32)
      updates = np.random.rand(*updates_shape).astype(np.float32)
      indices = np.random.randint(
          -data_shape[axis], data_shape[axis], size=indices_shape
      ).astype(np.int32)
  
      def build(data, indices, updates):
          return mb.scatter_along_axis(
              data=data,
              indices=indices,
              updates=updates,
              axis=axis,
              mode="update",
          )
  
      input_placeholders = {
          "data": mb.placeholder(shape=data.shape),
          "indices": mb.placeholder(
              shape=indices.shape, dtype=types.int32
          ),
          "updates": mb.placeholder(shape=updates.shape),
      }
  
      input_values = {
          "data": data,
          "indices": indices,
          "updates": updates,
      }
  
      expected_output_types = tuple(data_shape[:]) + (types.fp32,)
  
      np_output = np.copy(data)
      np.put_along_axis(np_output, indices, updates, axis=axis)
  
      run_compare_builder(
          build,
          input_placeholders,
          input_values,
          expected_output_types,
          np_output,
          use_cpu_only=use_cpu_only,
          frontend_only=False,
          backend=backend,
      )
  
imports: from coremltools.converters.mil import testing_reqs
  from coremltools.converters.mil.testing_reqs import *
  from .testing_utils import run_compare_builder
label_desc: Use image node_id 3 for calling the TestScatterAlongAxis obj's underlying member method code with example usage: obj.test_builder_to_backend_programmatic(use_cpu_only, backend, rank_axis) and returns: mb