code: def interact_batch_comparison(
      observations: List[Observation],
      experiment: Experiment,
      batch_x: int,
      batch_y: int,
      rel: bool = False,
      status_quo_name: Optional[str] = None,
      x_label: Optional[str] = None,
      y_label: Optional[str] = None,
  ) -> AxPlotConfig:
      """Compare repeated arms from two trials; select metric via dropdown.
  
      Args:
          observations: List of observations to compute comparison.
          batch_x: Index of batch for x-axis.
          batch_y: Index of bach for y-axis.
          rel: Whether to relativize data against status_quo arm.
          status_quo_name: Name of the status_quo arm.
          x_label: Label for the x-axis.
          y_label: Label for the y-axis.
      """
      if isinstance(experiment, MultiTypeExperiment):
          observations = convert_mt_observations(
              observations, experiment
          )
      if not status_quo_name and experiment.status_quo:
          status_quo_name = not_none(experiment.status_quo).name
      plot_data = _get_batch_comparison_plot_data(
          observations,
          batch_x,
          batch_y,
          rel=rel,
          status_quo_name=status_quo_name,
      )
      if x_label is None:
          x_label = f"Batch {batch_x}"
      if y_label is None:
          y_label = f"Batch {batch_y}"
      fig = _obs_vs_pred_dropdown_plot(
          data=plot_data,
          rel=rel,
          xlabel=x_label,
          ylabel=y_label,
      )
      fig["layout"]["title"] = "Repeated arms across trials"
      return AxPlotConfig(data=fig, plot_type=AxPlotTypes.GENERIC)
  
imports: from copy import deepcopy
  from typing import Any, Dict, List, Optional, Tuple
  import numpy
  import plotly.graph_objs
  from ax.core.batch_trial import BatchTrial
  from ax.core.data import Data
  from ax.core.experiment import Experiment
  from ax.core.multi_type_experiment import MultiTypeExperiment
  from ax.core.observation import Observation
  from ax.modelbridge.cross_validation import CVResult
  from ax.modelbridge.transforms.convert_metric_names import convert_mt_observations
  from ax.plot.base import AxPlotConfig, AxPlotTypes, PlotData, PlotInSampleArm, PlotMetric, Z
  from ax.plot.helper import compose_annotation
  from ax.plot.scatter import _error_scatter_data, _error_scatter_trace
  from ax.utils.common.typeutils import not_none
  from plotly import subplots
label_desc: Use image node_id 10 for calling a global function with example usage: interact_batch_comparison(observations, experiment, batch_x, batch_y, rel, status_quo_name, x_label, y_label) and returns: AxPlotConfig