code: def test_lower_bound_yi_X_Y(X, Y):
      """Test '_lower_bound_yi_X_Y' function."""
      X, Y = np.asarray(X), np.asarray(Y)
      arr_actual = _lower_bound_yi_X_Y(
          X,
          X.min(axis=1),
          X.max(axis=1),
          Y,
          Y.min(axis=1),
          Y.max(axis=1),
      )
      arr_desired = np.empty((2, 3))
      for i in range(2):
          for j in range(3):
              arr_desired[i, j] = _lower_bound_yi_x_y(
                  X[i],
                  X[i].min(),
                  X[i].max(),
                  Y[j],
                  Y[j].min(),
                  Y[j].max(),
              )
      np.testing.assert_allclose(
          arr_actual, arr_desired, atol=1e-5, rtol=0
      )
  
imports: import numpy
  import pytest
  import re
  from math import sqrt
  from pyts.metrics.lower_bounds import _lower_bound_yi_x_y, _lower_bound_yi_X_Y, _warping_envelope, _clip
  from pyts.metrics import lower_bound_improved, lower_bound_keogh, lower_bound_kim, lower_bound_yi
  from pyts.metrics import dtw, sakoe_chiba_band
  from pyts.metrics.dtw import _dtw_sakoechiba
  from sklearn.metrics import pairwise_distances
label_desc: Use image node_id 3 for calling a global function with example usage: test_lower_bound_yi_X_Y(X, Y) without return types