class_docstr: Class that contains methods for storing an Ax experiment to SQLAlchemy.
  
  Instantiate with an instance of Config to customize the functionality.
  For even more flexibility, create a subclass.
  
  Attributes:
      config: Metadata needed to save and load an experiment to SQLAlchemy.
class_docstr_tok: ["Class","that","contains","methods","for","storing","an","Ax","experiment","to","SQLAlchemy",".","Instantiate","with","an","instance","of","Config","to","customize","the","functionality",".","For","even","more","flexibility",",","create","a","subclass",".","Attributes",":","config",":","Metadata","needed","to","save","and","load","an","experiment","to","SQLAlchemy","."]
docstr: Convert Ax OptimizationConfig to a list of SQLAlchemy Metrics.
code: def optimization_config_to_sqa(
      self, optimization_config: Optional[OptimizationConfig]
  ) -> List[SQAMetric]:
      """Convert Ax OptimizationConfig to a list of SQLAlchemy Metrics."""
      if optimization_config is None:
          return []
  
      metrics_sqa = []
      obj_sqa = self.objective_to_sqa(
          objective=optimization_config.objective
      )
      metrics_sqa.append(obj_sqa)
      for constraint in optimization_config.outcome_constraints:
          constraint_sqa = self.outcome_constraint_to_sqa(
              outcome_constraint=constraint
          )
          metrics_sqa.append(constraint_sqa)
      if isinstance(
          optimization_config, MultiObjectiveOptimizationConfig
      ):
          for threshold in optimization_config.objective_thresholds:
              threshold_sqa = self.objective_threshold_to_sqa(
                  objective_threshold=threshold
              )
              metrics_sqa.append(threshold_sqa)
      if optimization_config.risk_measure is not None:
          risk_measure_sqa = self.risk_measure_to_sqa(
              risk_measure=optimization_config.risk_measure
          )
          metrics_sqa.append(risk_measure_sqa)
      return metrics_sqa
  
imports: from enum import Enum
  from logging import Logger
  from typing import Any, cast, Dict, List, Optional, Tuple, Type
  from ax.core.arm import Arm
  from ax.core.base_trial import BaseTrial
  from ax.core.batch_trial import AbandonedArm, BatchTrial
  from ax.core.data import Data
  from ax.core.experiment import Experiment
  from ax.core.generator_run import GeneratorRun, GeneratorRunType
  from ax.core.metric import Metric
  from ax.core.multi_type_experiment import MultiTypeExperiment
  from ax.core.objective import MultiObjective, Objective, ScalarizedObjective
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, OptimizationConfig
  from ax.core.outcome_constraint import ObjectiveThreshold, OutcomeConstraint, ScalarizedOutcomeConstraint
  from ax.core.parameter import ChoiceParameter, FixedParameter, Parameter, RangeParameter
  from ax.core.parameter_constraint import OrderConstraint, ParameterConstraint, SumConstraint
  from ax.core.parameter_distribution import ParameterDistribution
  from ax.core.risk_measures import RiskMeasure
  from ax.core.runner import Runner
  from ax.core.search_space import RobustSearchSpace, SearchSpace
  from ax.core.trial import Trial
  from ax.exceptions.storage import SQAEncodeError
  from ax.modelbridge.generation_strategy import GenerationStrategy
  from ax.storage.json_store.encoder import object_to_json
  from ax.storage.sqa_store.sqa_classes import SQAAbandonedArm, SQAArm, SQAData, SQAExperiment, SQAGenerationStrategy, SQAGeneratorRun, SQAMetric, SQAParameter, SQAParameterConstraint, SQARunner, SQATrial
  from ax.storage.sqa_store.sqa_config import SQAConfig
  from ax.storage.utils import DomainType, MetricIntent, ParameterConstraintType
  from ax.utils.common.base import Base
  from ax.utils.common.constants import Keys
  from ax.utils.common.logger import get_logger
  from ax.utils.common.serialization import serialize_init_args
  from ax.utils.common.typeutils import checked_cast, not_none
label_desc: Use image node_id 21 for calling the Encoder obj's underlying member method code with example usage: obj.optimization_config_to_sqa(optimization_config) and returns: metrics_sqa, list