code: def _pareto_frontier_plot_input_processing(
      experiment: Experiment,
      metric_names: Optional[Tuple[str, str]] = None,
      reference_point: Optional[Tuple[float, float]] = None,
      minimize: Optional[Union[bool, Tuple[bool, bool]]] = None,
  ) -> Tuple[
      Tuple[str, str],
      Optional[Tuple[float, float]],
      Optional[Tuple[bool, bool]],
  ]:
      """Processes inputs for Pareto frontier + scatterplot.
  
      Args:
          experiment: An Ax experiment.
          metric_names: The names of two metrics to be plotted. Defaults to the metrics
              in the optimization_config.
          reference_point: The 2-dimensional reference point to use when plotting the
              Pareto frontier. Defaults to the value of the objective thresholds of each
              variable.
          minimize: Whether each metric is being minimized. Defaults to the direction
              specified for each variable in the optimization config.
  
      Returns:
          metric_names: The names of two metrics to be plotted.
          reference_point: The 2-dimensional reference point to use when plotting the
              Pareto frontier.
          minimize: Whether each metric is being minimized.
  
      """
      optimization_config = (
          _validate_experiment_and_get_optimization_config(
              experiment=experiment,
              metric_names=metric_names,
              reference_point=reference_point,
          )
      )
      metric_names = _validate_and_maybe_get_default_metric_names(
          metric_names=metric_names,
          optimization_config=optimization_config,
      )
      objective_thresholds = (
          _validate_experiment_and_maybe_get_objective_thresholds(
              optimization_config=optimization_config,
              metric_names=metric_names,
              reference_point=reference_point,
          )
      )
      reference_point = _validate_and_maybe_get_default_reference_point(
          reference_point=reference_point,
          objective_thresholds=objective_thresholds,
          metric_names=metric_names,
      )
      minimize_output = _validate_and_maybe_get_default_minimize(
          minimize=minimize,
          objective_thresholds=objective_thresholds,
          metric_names=metric_names,
          optimization_config=optimization_config,
      )
      return metric_names, reference_point, minimize_output
  
imports: import warnings
  from typing import Dict, Iterable, List, Optional, Tuple, Union
  import numpy
  import pandas
  import plotly.graph_objs
  from ax.core.experiment import Experiment
  from ax.core.objective import MultiObjective
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, OptimizationConfig
  from ax.core.outcome_constraint import ObjectiveThreshold
  from ax.exceptions.core import UserInputError
  from ax.plot.base import AxPlotConfig, AxPlotTypes, CI_OPACITY, DECIMALS
  from ax.plot.color import COLORS, DISCRETE_COLOR_SCALE, rgba
  from ax.plot.helper import _format_CI, _format_dict, extend_range
  from ax.plot.pareto_utils import ParetoFrontierResults
  from ax.service.utils.best_point_mixin import BestPointMixin
  from ax.utils.common.typeutils import checked_cast, not_none
  from plotly import express
  from scipy.stats import norm
label_desc: Use image node_id 11 for calling a global function with example usage: _pareto_frontier_plot_input_processing(experiment, metric_names, reference_point, minimize) and returns: metric_names,  reference_point,  minimize_output