code: def _warping_envelope_2d(X, n_samples, n_timestamps, region):
      lower = np.empty((n_samples, n_timestamps))
      upper = np.empty((n_samples, n_timestamps))
      for i in prange(n_samples):
          for j in prange(n_timestamps):
              sub_series = X[i, region[0, j] : region[1, j]]
              lower[i, j] = np.min(sub_series)
              upper[i, j] = np.max(sub_series)
      return lower, upper
  
file_path: pyts/pyts/metrics/lower_bounds.py
imports: import numpy
  from math import sqrt
  from numba import njit, prange
  from sklearn.utils import check_array
label_desc: Use image node_id 6 for calling a global function with example usage: _warping_envelope_2d(X, n_samples, n_timestamps, region) and returns: lower,  upper