class_docstr: Convert metrics to a task parameter.
  
  For each metric to be used as a task, the config must specify a list of the
  target metrics for that particular task metric. So,
  
  config = {
      'metric_task_map': {
          'metric1': ['metric2', 'metric3'],
          'metric2': ['metric3'],
      }
  }
  
  means that metric2 will be given additional task observations of metric1,
  and metric3 will be given additional task observations of both metric1 and
  metric2. Note here that metric2 and metric3 are the target tasks, and this
  map is from base tasks to target tasks.
code: def _transform_search_space(
      self, search_space: SearchSpace
  ) -> SearchSpace:
      # Add task parameter
      task_param = ChoiceParameter(
          name="METRIC_TASK",
          parameter_type=ParameterType.STRING,
          values=self.task_values,  # pyre-ignore
          is_ordered=False,
          is_task=True,
          sort_values=True,
          target_value="TARGET",
      )
      search_space.add_parameter(task_param)
      return search_space
  
file_path: Ax/ax/modelbridge/transforms/metrics_as_task.py
imports: from typing import Dict, List, Optional, TYPE_CHECKING
  import numpy
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.parameter import ChoiceParameter, ParameterType
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.transforms.base import Transform
  from ax.models.types import TConfig
label_desc: Use image node_id 5 for calling the MetricsAsTask obj's underlying member method code with example usage: obj._transform_search_space(search_space) and returns: search_space