code: def _get_parameter_values(
      search_space: SearchSpace, param_names: List[str]
  ) -> List[TParamValueList]:
      """Extract parameter values from a search space of discrete parameters."""
      parameter_values: List[TParamValueList] = []
      for p_name in param_names:
          p = search_space.parameters[p_name]
          # Validation
          if isinstance(p, ChoiceParameter):
              # Set values
              parameter_values.append(p.values)
          elif isinstance(p, FixedParameter):
              parameter_values.append([p.value])
          else:
              raise ValueError(
                  f"{p} not ChoiceParameter or FixedParameter"
              )
      return parameter_values
  
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 1 for calling a global function with example usage: _get_parameter_values(search_space, param_names) and returns: parameter_values