code: def test_conf_interval_normal_method(data):
      """Testing "conf_interval" function, normal method"""
      df = data["df"]
      new_df = data["new_df"]
      # ``quantile_estimation_method = "normal_fit"``
      ci_model = conf_interval(
          df=df,
          distribution_col="residual",
          offset_col="y",
          conditional_cols=["x"],
          quantiles=[0.005, 0.025, 0.975, 0.995],
          quantile_estimation_method="normal_fit",
          sample_size_thresh=5,
          small_sample_size_method="std_quantiles",
          small_sample_size_quantile=0.95,
          min_admissible_value=None,
          max_admissible_value=None,
      )
  
      pred_df = predict_ci(new_df, ci_model)
      assert list(pred_df.columns) == list(df.columns) + [
          QUANTILE_SUMMARY_COL,
          ERR_STD_COL,
      ], "pred_df does not have the expected column names"
      pred_df[QUANTILE_SUMMARY_COL] = pred_df[
          QUANTILE_SUMMARY_COL
      ].apply(lambda x: tuple(round(e, 2) for e in x))
      assert pred_df[QUANTILE_SUMMARY_COL].values[5] == (
          289.9,
          290.25,
          292.54,
          292.9,
      ), "quantiles are incorrect"
      assert pred_df[QUANTILE_SUMMARY_COL].values[11] == (
          -5.14,
          -4.88,
          -3.24,
          -2.98,
      ), "quantiles are incorrect"
  
file_path: greykite/greykite/tests/algo/uncertainty/conditional/test_conf_interval.py
imports: import numpy
  import pytest
  from greykite.algo.uncertainty.conditional.conf_interval import conf_interval
  from greykite.algo.uncertainty.conditional.conf_interval import predict_ci
  from greykite.common.constants import ERR_STD_COL
  from greykite.common.constants import QUANTILE_SUMMARY_COL
  from greykite.common.testing_utils import gen_sliced_df
label_desc: Use image node_id 4 for calling a global function with example usage: test_conf_interval_normal_method(data) without return types