class_docstr: Replaces the search space with a single choice parameter, whose values
  are the signatures of the arms observed in the data.
  
  This transform is meant to be used with ThompsonSampler.
  
  Choice parameter will be unordered unless config["use_ordered"] specifies
  otherwise.
  
  Transform is done in-place.
class_docstr_tok: ["Replaces","the","search","space","with","a","single","choice","parameter",",","whose","values","are","the","signatures","of","the","arms","observed","in","the","data",".","This","transform","is","meant","to","be","used","with","ThompsonSampler",".","Choice","parameter","will","be","unordered","unless","config","[","``","use_ordered","''","]","specifies","otherwise",".","Transform","is","done","in-place","."]
code: def untransform_observation_features(
      self, observation_features: List[ObservationFeatures]
  ) -> List[ObservationFeatures]:
      for obsf in observation_features:
          signature = obsf.parameters[self.parameter_name]
          obsf.parameters = self.signature_to_parameterization[
              signature
          ]
      return observation_features
  
file_path: Ax/ax/modelbridge/transforms/search_space_to_choice.py
imports: from typing import List, Optional, TYPE_CHECKING
  from ax.core.arm import Arm
  from ax.core.observation import Observation, ObservationFeatures
  from ax.core.parameter import ChoiceParameter, FixedParameter, ParameterType
  from ax.core.search_space import RobustSearchSpace, SearchSpace
  from ax.exceptions.core import UnsupportedError
  from ax.modelbridge.transforms.base import Transform
  from ax.models.types import TConfig
  from ax.utils.common.typeutils import checked_cast
label_desc: Use image node_id 4 for calling the SearchSpaceToChoice obj's underlying member method code with example usage: obj.untransform_observation_features(observation_features) and returns: observation_features