code: def _test_builder_to_backend_programmatic(
      compute_unit,
      backend,
      rank_axis,
      x_dtype,
      indices_dtype,
      force_non_negative_indices,
  ):
      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(x_dtype)
  
      lower_bound = -x_shape[axis]
      if force_non_negative_indices or np.issubdtype(
          indices_dtype, np.unsignedinteger
      ):
          lower_bound = 0
      indices = np.random.randint(
          lower_bound, x_shape[axis], size=indices_shape
      ).astype(indices_dtype)
  
      def build(x, indices):
          return mb.gather_along_axis(x=x, indices=indices, axis=axis)
  
      builtin_x_dtype = types.numpy_type_to_builtin_type(x_dtype)
      input_placeholders = {
          "x": mb.placeholder(shape=x.shape, dtype=builtin_x_dtype),
          "indices": mb.placeholder(
              shape=indices.shape,
              dtype=types.numpy_type_to_builtin_type(indices_dtype),
          ),
      }
  
      input_values = {"x": x, "indices": indices}
  
      expected_output_types = tuple(indices_shape[:]) + (
          builtin_x_dtype,
      )
      expected_output = np.take_along_axis(x, indices, axis=axis)
  
      run_compare_builder(
          build,
          input_placeholders,
          input_values,
          expected_output_types,
          expected_output,
          compute_unit=compute_unit,
          backend=backend,
      )
  
imports: import itertools
  import numpy
  import pytest
  import coremltools
  from coremltools._deps import _HAS_TF_2, MSG_TF2_NOT_FOUND
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import types
  from coremltools.converters.mil.mil.ops.tests.iOS14 import backends
  from coremltools.converters.mil.mil.ops.tests.testing_utils import mark_api_breaking, run_compare_builder
  from coremltools.converters.mil.testing_reqs import compute_units
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(compute_unit, backend, rank_axis, x_dtype, indices_dtype, force_non_negative_indices) and returns: mb