code: def outlier_on_percentile_histogram(
      percentile_histogram: Dict[float, float],
      iqr_percent: float = 85,
      outlier_factor: float = 5,
  ) -> Tuple[Tuple[float, float]]:
      """Get outlier ranges on histogram.
  
      Parameters
      ----------
      percentile_histogram : Dict[float, float]
          histogram to search for outliers in shape [0.0-100.0]->[float]
      iqr_percent : float , default: 85
          Interquartile range upper percentage, start searching for outliers outside IQR.
      outlier_factor : float , default: 5
          a factor to consider outlier.
      Returns
      -------
      Tuple[Tuple[float, float]]
          percent ranges in the histogram that are outliers, empty tuple if none is found
      """
      if any((k < 0) or k > 100 for k in percentile_histogram.keys()):
          raise ValueError(
              "dict keys must be percentiles between 0 and 100"
          )
      if any((v < 0) for v in percentile_histogram.values()):
          raise ValueError(
              "dict values must be counts that are non-negative numbers"
          )
  
      percentile_df = pd.DataFrame.from_dict(
          percentile_histogram, orient="index"
      )
  
      # calculate IQR with iqr_percent
      closest_point_upper = np.argmin(
          np.abs(iqr_percent - percentile_df.index.values)
      )
      closest_point_lower = np.argmin(
          np.abs(100 - iqr_percent - percentile_df.index.values)
      )
      center_point = np.argmin(np.abs(50 - percentile_df.index.values))
  
      iqr = np.abs(
          percentile_df.iloc[closest_point_upper]
          - percentile_df.iloc[closest_point_lower]
      )
  
      outlier_df = percentile_df[
          (
              np.abs(percentile_df - percentile_df.iloc[center_point])
              > outlier_factor * iqr / 2
          ).values
      ]
  
      outlier_section_list = []
      lower_outlier_range = outlier_df[outlier_df.index < 50]
      if lower_outlier_range.shape[0] > 0:
          outlier_section_list.append(
              (
                  lower_outlier_range.index.values[0],
                  lower_outlier_range.index.values[-1],
              )
          )
  
      upper_outlier_range = outlier_df[outlier_df.index > 50]
      if upper_outlier_range.shape[0] > 0:
          outlier_section_list.append(
              (
                  upper_outlier_range.index.values[0],
                  upper_outlier_range.index.values[-1],
              )
          )
  
      return tuple(outlier_section_list)
  
imports: from typing import Dict, List, Tuple, Union
  import numpy
  import pandas
  from pandas import DataFrame, Series
  from scipy import stats
  from deepchecks.core import CheckResult, ConditionCategory, ConditionResult
  from deepchecks.tabular import Context, SingleDatasetCheck
  from deepchecks.tabular.utils.feature_importance import N_TOP_MESSAGE, column_importance_sorter_df
  from deepchecks.tabular.utils.messages import get_condition_passed_message
  from deepchecks.utils.dataframes import select_from_dataframe
  from deepchecks.utils.strings import format_number, format_percent, is_string_column
  from deepchecks.utils.typing import Hashable
label_desc: Use image node_id 1 for calling a global function with example usage: outlier_on_percentile_histogram(percentile_histogram, iqr_percent, outlier_factor) and returns: tuple