docs: def estimate_global_norm_range(N_t, func, num_of_sample=10, func_args={},
                                 percen_lower=1, percen_upper=99, show_progress=True):
      """Return estimated global range for 2D (pcolormesh-like) plot.
  
      ## Returns:
      - vmin
      - vmax
      """
  
      ## Check input arguments
      for arg in [N_t, num_of_sample]:
          assert is_integer_valued_real(arg)
      assert num_of_sample <= N_t
      for arg in [percen_lower, percen_upper]:
          assert is_real_number(arg)
          assert (0 <= arg) and (arg <= 100)
      assert percen_lower <= percen_upper
  
      assert callable(func)
      assert type(func_args) is dict
  
      assert type(show_progress) is bool
  
      sample_indices = np.random.randint(0, N_t-1, num_of_sample)
  
      if show_progress:
          progress_bar = Progress_Bar(num_of_sample)
      uppers = []
      lowers = []
  
      for idx, sample_index in enumerate(sample_indices):
          frame_data = func(sample_index, **func_args)
          lowers.append(np.percentile(frame_data, percen_lower))
          uppers.append(np.percentile(frame_data, percen_upper))
          if show_progress:
              progress_bar.print(idx)
  
      vmin = np.percentile(lowers, percen_lower)
      vmax = np.percentile(uppers, percen_upper)
  
      return vmin, vmax