code: def test_TransformOptimizationConfig(self) -> None:
      m1 = Metric(name="m1")
      m2 = Metric(name="m2")
      m3 = Metric(name="m3")
      objective = Objective(metric=m3, minimize=False)
      cons = [
          OutcomeConstraint(
              metric=m1, op=ComparisonOp.GEQ, bound=2.0, relative=False
          ),
          OutcomeConstraint(
              metric=m2, op=ComparisonOp.LEQ, bound=3.5, relative=False
          ),
      ]
      oc = OptimizationConfig(
          objective=objective, outcome_constraints=cons
      )
      fixed_features = ObservationFeatures({"z": "a"})
      oc = self.t.transform_optimization_config(
          oc, None, fixed_features
      )
      cons_t = [
          OutcomeConstraint(
              metric=m1, op=ComparisonOp.GEQ, bound=1.0, relative=False
          ),
          OutcomeConstraint(
              metric=m2,
              op=ComparisonOp.LEQ,
              bound=(3.5 - 5.0) / (sqrt(2) * 3),
              relative=False,
          ),
      ]
      self.assertTrue(oc.outcome_constraints == cons_t)
      self.assertTrue(oc.objective == objective)
  
      # No constraints
      oc2 = OptimizationConfig(objective=objective)
      oc3 = deepcopy(oc2)
      oc3 = self.t.transform_optimization_config(
          oc3, None, fixed_features
      )
      self.assertTrue(oc2 == oc3)
  
      # Check fail with relative
      con = OutcomeConstraint(
          metric=m1, op=ComparisonOp.GEQ, bound=2.0, relative=True
      )
      oc = OptimizationConfig(
          objective=objective, outcome_constraints=[con]
      )
      with self.assertRaises(ValueError):
          oc = self.t.transform_optimization_config(
              oc, None, fixed_features
          )
      # Fail without strat param fixed
      fixed_features = ObservationFeatures({"x": 2.0})
      with self.assertRaises(ValueError):
          oc = self.t.transform_optimization_config(
              oc, None, fixed_features
          )
  
imports: from copy import deepcopy
  from math import sqrt
  import numpy
  from ax.core.metric import Metric
  from ax.core.objective import Objective
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint
  from ax.core.parameter import ChoiceParameter, ParameterType, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.core.types import ComparisonOp
  from ax.modelbridge.transforms.stratified_standardize_y import StratifiedStandardizeY
  from ax.modelbridge.transforms.tests.test_standardize_y_transform import osd_allclose
  from ax.utils.common.testutils import TestCase
label_desc: Use image node_id 4 for calling the StratifiedStandardizeYTransformTest obj's underlying member method code with example usage: obj.test_TransformOptimizationConfig() without return types