class_docstr: A Metric for retriving information from a BotorchTestProblemRunner.
  A BotorchTestProblemRunner will attach the result of a call to
  BaseTestProblem.forward per Arm on a given trial, and this Metric will extract the
  proper value from the resulting tensor given its index.
code: def fetch_trial_data(
      self, trial: BaseTrial, **kwargs: Any
  ) -> MetricFetchResult:
      try:
          mean = [
              trial.run_metadata["Ys"][name][self.index]
              for name, arm in trial.arms_by_name.items()
          ]
          df = pd.DataFrame(
              {
                  "arm_name": [
                      name for name, _ in trial.arms_by_name.items()
                  ],
                  "metric_name": self.name,
                  "mean": mean,
                  # If no noise_std is returned then Botorch evaluated the true
                  # function
                  "sem": self.noise_sd,
                  "trial_index": trial.index,
              }
          )
  
          return Ok(value=Data(df=df))
  
      except Exception as e:
          return Err(
              MetricFetchE(
                  message=f"Failed to fetch {self.name}", exception=e
              )
          )
  
file_path: Ax/ax/metrics/botorch_test_problem.py
imports: from typing import Any, Optional
  import pandas
  from ax.core.base_trial import BaseTrial
  from ax.core.data import Data
  from ax.core.metric import Metric, MetricFetchE, MetricFetchResult
  from ax.utils.common.result import Err, Ok
label_desc: Use image node_id 2 for calling the BotorchTestProblemMetric obj's underlying member method code with example usage: obj.fetch_trial_data(trial) and returns: Ok, Err