code: def test_builder_to_backend_programmatic(
      self, use_cpu_only, backend, rank_axis
  ):
      rank, axis = rank_axis
      x_shape = np.random.randint(low=2, high=8, size=rank)
      indices_shape = np.copy(x_shape)
      indices_shape[axis] = np.random.randint(low=1, high=8)
  
      x = np.random.rand(*x_shape).astype(np.float32)
      indices = np.random.randint(
          -x_shape[axis], x_shape[axis], size=indices_shape
      ).astype(np.int32)
  
      def build(x, indices):
          return mb.gather_along_axis(x=x, indices=indices, axis=axis)
  
      input_placeholders = {
          "x": mb.placeholder(shape=x.shape),
          "indices": mb.placeholder(
              shape=indices.shape, dtype=types.int32
          ),
      }
  
      input_values = {"x": x, "indices": indices}
  
      expected_output_types = tuple(indices_shape[:]) + (types.fp32,)
      expected_output = np.take_along_axis(x, indices, axis=axis)
  
      run_compare_builder(
          build,
          input_placeholders,
          input_values,
          expected_output_types,
          expected_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 TestGatherAlongAxis obj's underlying member method code with example usage: obj.test_builder_to_backend_programmatic(use_cpu_only, backend, rank_axis) and returns: mb