code: def test_shape_index():
      # software floating point arm doesn't raise a warning on divide by zero
      # https://github.com/scikit-image/scikit-image/issues/3335
      square = np.zeros((5, 5))
      square[2, 2] = 4
      with expected_warnings(
          [r"divide by zero|\A\Z", r"invalid value|\A\Z"]
      ):
          s = shape_index(square, sigma=0.1)
      assert_almost_equal(
          s,
          np.array(
              [
                  [np.nan, np.nan, -0.5, np.nan, np.nan],
                  [np.nan, 0, np.nan, 0, np.nan],
                  [-0.5, np.nan, -1, np.nan, -0.5],
                  [np.nan, 0, np.nan, 0, np.nan],
                  [np.nan, np.nan, -0.5, np.nan, np.nan],
              ]
          ),
      )
  
imports: import numpy
  import pytest
  from numpy.testing import assert_almost_equal, assert_array_equal, assert_equal
  from skimage import data, draw, img_as_float
  from skimage._shared._warnings import expected_warnings
  from skimage._shared.testing import run_in_parallel
  from skimage._shared.utils import _supported_float_type
  from skimage.color import rgb2gray
  from skimage.feature import corner_fast, corner_foerstner, corner_harris, corner_kitchen_rosenfeld, corner_moravec, corner_orientations, corner_peaks, corner_shi_tomasi, corner_subpix, hessian_matrix, hessian_matrix_det, hessian_matrix_eigvals, peak_local_max, shape_index, structure_tensor, structure_tensor_eigenvalues
  from skimage.morphology import cube, octagon
label_desc: Use image node_id 17 for calling a global function with example usage: test_shape_index() without return types