class_docstr: A model bridge for using models based on discrete parameters.
  
  Requires that all parameters have been transformed to ChoiceParameters.
class_docstr_tok: ["A","model","bridge","for","using","models","based","on","discrete","parameters",".","Requires","that","all","parameters","have","been","transformed","to","ChoiceParameters","."]
code: def _convert_observations(
      cls,
      observation_data: List[ObservationData],
      observation_features: List[ObservationFeatures],
      outcomes: List[str],
      parameters: List[str],
  ) -> Tuple[
      List[List[TParamValueList]], List[List[float]], List[List[float]]
  ]:
      Xs: List[List[TParamValueList]] = [[] for _ in outcomes]
      Ys: List[List[float]] = [[] for _ in outcomes]
      Yvars: List[List[float]] = [[] for _ in outcomes]
      for i, obsf in enumerate(observation_features):
          try:
              x = [obsf.parameters[param] for param in parameters]
          except (KeyError, TypeError):
              # Out of design point
              raise ValueError(
                  "Out of design points cannot be converted."
              )
          for j, m in enumerate(observation_data[i].metric_names):
              k = outcomes.index(m)
              Xs[k].append(x)
              Ys[k].append(observation_data[i].means[j])
              Yvars[k].append(observation_data[i].covariance[j, j])
      return Xs, Ys, Yvars
  
imports: from typing import Dict, List, Optional, Set, Tuple
  from ax.core.observation import Observation, ObservationData, ObservationFeatures, separate_observations
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.parameter import ChoiceParameter, FixedParameter
  from ax.core.search_space import SearchSpace
  from ax.core.types import TParamValueList
  from ax.exceptions.core import UserInputError
  from ax.modelbridge.base import GenResults, ModelBridge
  from ax.modelbridge.modelbridge_utils import array_to_observation_data, get_fixed_features
  from ax.modelbridge.torch import extract_objective_weights, extract_outcome_constraints, validate_optimization_config
  from ax.models.discrete_base import DiscreteModel
  from ax.models.types import TConfig
label_desc: Use image node_id 6 for calling the DiscreteModelBridge obj's underlying member method code with example usage: obj._convert_observations(cls, observation_data, observation_features, outcomes, parameters) and returns: Xs,  Ys,  Yvars