code: def _get_evaluate_metrics_from_dataset(
      y: np.ndarray, yhat_lo: np.ndarray, yhat_hi: np.ndarray
  ) -> Tuple[float, float]:
      #     df_forecast_eval: pd.DataFrame,
      #     quantile_lo_col: str,
      #     quantile_hi_col: str,
      # ) -> Tuple[float, float]:
      """Infers evaluation parameters based on the evaluation dataframe columns.
  
      Parameters
      ----------
          df_forecast_eval : pd.DataFrame
              forecast dataframe with the conformal prediction intervals
  
      Returns
      -------
          float, float
              conformal prediction evaluation metrics
      """
      # Interval width (efficiency metric)
      quantile_lo_mean = np.mean(yhat_lo)
      quantile_hi_mean = np.mean(yhat_hi)
      interval_width = quantile_hi_mean - quantile_lo_mean
  
      # Miscoverage rate (validity metric)
      n_covered = np.sum((y >= yhat_lo) & (y <= yhat_hi))
      coverage_rate = n_covered / len(y)
      miscoverage_rate = 1 - coverage_rate
  
      return interval_width, miscoverage_rate
  
file_path: neural_prophet/neuralprophet/uncertainty.py
imports: import re
  from dataclasses import dataclass
  from typing import Any, List, Tuple, Union
  import matplotlib
  import numpy
  import pandas
  from neuralprophet.plot_forecast_matplotlib import plot_interval_width_per_timestep, plot_nonconformity_scores
  from neuralprophet.plot_forecast_plotly import plot_interval_width_per_timestep
  from neuralprophet.plot_forecast_plotly import plot_nonconformity_scores
  from neuralprophet.plot_utils import log_warning_deprecation_plotly, select_plotting_backend
label_desc: Use image node_id 2 for calling a global function with example usage: _get_evaluate_metrics_from_dataset(y, yhat_lo, yhat_hi) and returns: interval_width,  miscoverage_rate